[生成AI] 星占いAPIを自作する (後編)星占いAPIサーバーを構築する
星占いAPIを自作する(後編)を始めます。まず初めに、前回記事(前編)を復習し、今回記事(後編)の概要を展望します。
前編の振り返りと後編の展望
(前編)星占いAPIデータ作成
前編の記事「星占いAPIデータを自動作成する」では、生成AIを活用して「星占いAPIデータ」を作成しました。全体運(1-5の数字)に対して、今日の運勢のテキストを自動作成する方法を詳しく説明しました。
4つの生成AIモデル「gpt-3.5-turbo」「gpt-4-turbo」「claude-3-opus-20240229」「gemini-pro」の出力結果を評価し、文字制限(200-220文字)の再現の高い「gpt-3.5-turbo」モデルを採用することにしました。
従来、このようなテキストデータを手作業で用意するのは大変な手間がかかります。しかし、生成AIを使えば、高品質なデータを短時間で安価に作成できます。APIで返却するデータを自動生成できるため、APIの開発に集中できるのは大きなメリットです。また、生成AIへのプロンプトを工夫することで、ユーザーニーズやサービスの方向性に合わせて、データの質をコントロールできる点も重要な利点の一つです。
(後編)星占いAPIの実装
後編となる本記事「星占いAPIサーバーを構築する」では、これらのデータを使ってAWS(Amazon Web Services)上に星占いAPIを構築していきます。クラウドサービスを活用することで、サーバーの調達や運用にかかる手間を大幅に削減できます。
AWSには、APIの開発に適した多くのサービスが用意されています。その中でも、サーバーレスに実行できるAWS LambdaとNoSQLデータベースのDynamoDBは、APIのバックエンドを手軽に構築できる強力な組み合わせです。さらに、API Gatewayを使えば、認証機能やCORS(Cross-Origin Resource Sharing)の設定など、APIに必要な機能を簡単に追加できます。
本記事では、以下の方法について解説します。
AWS LambdaとDynamoDBを使ってAPIのバックエンドを実装する方法
API GatewayでAPIの認証とCORS対応を行う方法
ローカルの簡易アプリから実際にAPIを呼び出す方法
クラウドサービスとサーバーレスアーキテクチャを使ったモダンなAPI開発を体験できます。AWSを使ったサーバーレスなAPIの実装パターンが身につきます。小規模なウェブサービスの開発や、社内ツールの作成など、様々な場面で応用できる知識が得られるはずです。
記事概要
本記事では、AWS上に星占いAPIを構築する手順を5つのパートに分けて、詳しく説明します。次の図は、ユーザー、ウェブアプリ、API Gateway、Lambda、DynamoDBを構成要素として、それらの間のインタラクションを時系列に沿って表示したシーケンス図です。
まず、第1部ではAPIの設計について確認します。リクエストとレスポンスのフォーマット、エンドポイントのURL、認証方式、エラーハンドリング、ドキュメントの整備など、APIを設計する上で重要な要素を確認します。
次に、第2部ではAWS Lambdaを使ってAPIのバックエンドを実装します。Lambda関数を作成し、Node.jsで星占いAPIのロジックを実装します。Lambda関数をzipファイルにまとめ、マネジメントコンソールからアップロードします。最後に、様々なケースでDynamoDBとの連携を確認するテストを行います。
第3部では、DynamoDBを使ってデータベースを構築します。テーブルを作成し、Node.jsでデータのインポートとクエリを実装します。Lambda関数とDynamoDBを連携させ、APIがデータベースから星占いの結果を取得できるようにします。Lambda関数の修正内容をzipファイルにまとめ、再度アップロードします。認証エラー、データインポート、星占い結果の返却など、DynamoDBとの連携を確認するテストを行います。
第4部では、API Gatewayを使ってAPIを公開します。API Gatewayを作成し、API Keyによる認証を設定します。また、CROSエラーを防ぐための設定を行います。最後に、コマンドラインから「curl」コマンドを使って、API Gatewayを経由してAPIにアクセスできることを確認します。
第5部では、星占いAPIを使った簡易的なウェブアプリを作成します。HTMLとJavaScriptでアプリを実装し、フロントエンドのみで完結しています。ステータスコードを確認し、エラーの場合はアラートでユーザーに通知します。データが正常に取得できたら、今日の運勢などを表示します。
最後の第6部では、API公開後の運用について解説します。API開発は公開がゴールではなく、安定稼働、セキュリティ、パフォーマンス維持、ユーザーサポートなど、継続的な運用が必要です。さらに、バージョンアップや機能拡張など、将来を見据えた検討も重要となります。
付録として、星占いAPIのドキュメントを添付しています。APIドキュメントは、API利用者(アプリ開発者)が必要な情報を過不足なくまとめた文書です。英語版と日本語版の例を示します。
免責事項
本記事で提供するプログラムコードや手順は、あくまで参考例です。開発環境やAWSのバージョンの違いにより、記事通りに動作しない可能性があります。特に、AWSのサービスは頻繁にアップデートされるため、UIの変更や設定方法の変更などにより、記事の内容と異なる部分が出てくる可能性があります。本記事は、2023年5月時点の情報に基づいて作成されています。
また、本記事で提供するプログラムを実行した結果、発生した損害や問題について、著者は一切の責任を負いません。AWSの利用料金などは、読者ご自身の責任で管理してください。特に、DynamoDBやAWS Lambdaは、使用量に応じて課金されるサービスです。APIの呼び出し回数やデータ転送量によっては、高額な料金が発生する可能性がありますので、ご注意ください。
本記事で作成するAPIは、あくまでサンプルコードです。実際のサービスで使用する場合は、セキュリティ面や性能面でさらなる改善が必要です。特に、APIキーによる認証は、本格的なサービスで使用するには十分ではありません。必要に応じて、より強固な認証方式を検討してください。
AWSのアカウントやアクセスキーの管理は、読者ご自身の責任で行ってください。アクセスキーを紛失したり、第三者に漏洩したりすることがないよう、十分にご注意ください。
以上の点を予めご了承の上、本記事をご活用ください。本記事が、読者の皆様のAPI開発の一助となれば幸いです。
第1部 API設計の確認
第1部では、前編で設計した星占いAPIの仕様を確認します。APIを実装する前に、設計の要点を再度チェックすることで、APIの品質を確保します。確認する仕様は以下の通りです。
リクエストとレスポンスの設計
リクエストは、以下の形式でURLクエリパラメータを送信します。URLクエリパラメータは、「https://api.example.com/api-path/」のドメインの後に「?」記号で追加の情報を付加することができます。
?user_id=123&zodiac_sign_id=1&event_date=2024-05-01
このリクエストは、ユーザーID(123)の、zodiac_sign_id=1(牡牛座)の2024-05-01の日付の占い結果を要求しています。
user_id:ユーザーID
zodiac_sign_id:星座ID(1から12の整数)
event_date:占う日付(YYYY-MM-DD形式)
レスポンスは、以下のJSON形式で返却します。返却されたデータを解析することで、星占いの結果を取得することができます。
{
"statusCode": 200,
"body": "[{\"work_luck\":1,\"general_luck\":1,\"todays_fortune\":\"今日の運勢は〇〇です。\",\"event_date\":\"2024-05-01\",\"financial_luck\":2,\"love_luck\":2,\"id\":1,\"zodiac_sign_id\":\"1\"}]"
}
エンドポイントの設計
APIのエンドポイントは、「https://api.example.com/default/horoscope」とします。HTTPのGETメソッドでリクエストを送信し、必要なパラメータが含まれていない場合はエラーメッセージを返却します。
認証と認可の設計
APIキーによる認証とユーザーIDによる認可を採用します。利用者はAPIキーをリクエストヘッダーに含め、自分のユーザーIDをリクエストパラメータに含めます。APIサーバーは、APIキーとユーザーIDを検証し、権限を確認します。 以下は、APIキーとユーザーIDを使用した認証と認可の例です。
GET https://api.example.com/default/horoscope \
?user_id=123&zodiac_sign_id=1&event_date=2024-05-01 \
Headers: X-API-Key: abcdefghijklmnopqrstuvwxyz
X-API-Key:APIキー(リクエストヘッダーに含める)
user_id:ユーザーID(リクエストパラメータに含める)
エラーハンドリングとステータスコード
星占いAPIは、適切なステータスコードとエラーメッセージを返却します。
正常応答(200 OK)
{
"statusCode": 200,
"body": "[{\"work_luck\":1,\"general_luck\":1,\"todays_fortune\":\"今日の運勢は〇〇です。\",\"event_date\":\"2024-05-01\",\"financial_luck\":2,\"love_luck\":2,\"id\":1,\"zodiac_sign_id\":\"1\"}]"
}
不正なリクエスト(400 Bad Request)
{
"statusCode": 400,
"error": "Invalid request",
"message": "Missing required parameter: user_id"
}
認証エラー(401 Unauthorized)
{
"statusCode": 401,
"error": "Authentication failed",
"message": "Invalid API Key"
}
権限エラー(403 Forbidden)
{
"statusCode": 403,
"error": "Forbidden",
"message": "User with ID xxxx does not have permission to access this resource."
}
リソースが見つからない(404 Not Found)
{
"statusCode": 404,
"error": "Resource not found",
"message": "No horoscope data found for the specified date"
}
サーバーエラー(500 Internal Server Error)
{
"statusCode": 500,
"error": "Internal server error",
"message": "An unexpected error occurred"
}
ドキュメンテーションの整備
APIの概要、エンドポイントの説明、リクエストパラメータの説明、レスポンスの説明、リクエスト/レスポンスの例、認証方法の説明、エラーコードの説明、SDKとサンプルコードの提供など、APIの利用者が必要とする情報を提供します。
以上が、星占いAPIの設計の要点です。次のセクションでは、この設計に基づいて、APIの実装を進めていきます。
第2部 AWS Lambda
AWS Lambdaは、サーバーレスコンピューティングサービスであり、APIのバックエンドを実装するのに最適なプラットフォームです。Lambdaを使用することで、サーバーの管理やスケーリングに煩わされることなく、APIのロジックに専念できます。
Lambdaには以下のようなメリットがあります。
サーバーレス:サーバーの管理やプロビジョニングを気にする必要がありません。Lambdaが自動的にスケーリングを処理します。
イベント駆動:APIゲートウェイからのリクエストをトリガーとして、Lambdaを実行できます。リクエストがない時はリソースを消費しません。
柔軟なプログラミング言語:JavaScript(Node.js)、Python、Java、Go、C#など、多くのプログラミング言語をサポートしています。
コスト効率:実際に使用した分だけ課金されるため、コスト効率に優れています。APIの利用頻度が低い場合に特に効果的です。
自動スケーリング:リクエストの量に応じて自動的にスケールアップ/ダウンするため、トラフィックの変動に柔軟に対応できます。
セキュリティ:IAMロールを使用して、Lambda関数にきめ細かいアクセス権限を設定できます。
これらのメリットにより、AWS Lambdaは星占いAPIのバックエンドを実装するのに最適なサービスと言えます。次のセクションでは、実際にLambda関数を作成し、APIのロジックを実装していきます。
Lambdaのセットアップ
AWS Lambdaで星占いAPIを実装するために、まずAWSアカウントを作成します。アカウント作成手順は次の通りです。
AWS公式サイト(https://aws.amazon.com/)にアクセスし、「アカウントを作成」ボタンをクリックします。
必要な情報(メールアドレス、パスワード、アカウント名)を入力し、アカウントを作成します。
クレジットカード情報を登録します。無料利用枠の範囲内では料金は発生しませんが、アカウント作成時には登録が必要です。
電話番号を入力し、アカウントの確認を完了します。
アカウントを作成したら、次は、Lambdaをセットアップします。作成したアカウントで、AWSコンソールにログインします。検索フィールドに「lambda」と入力し、検索結果の「Lambda」のリンクを選択します。すると、「Lambda > 関数」の画面が表示されます。
図2の画面が表示されたら、右上の「関数を作成」ボタンを選びます。
関数の作成画面が開いたら、「一から作成」を選択します。関数名として「horoscope」と入力して、右下の「関数の作成」ボタンをクリックします。これで、Lambdaのセットアップは完了です。次は、Node.jsで星占いAPIのロジックを実装します。
星占いAPIロジックの実装は、ローカル開発環境でNode.jsプロジェクトを作成し、そのプロジェクトをAWSコンソールにアップロードする方法で行います。プロジェクト作成手順は次の通りです。
プロジェクトのセットアップ
1. お使いの開発環境に合わせたNode.jsインストーラーを公式サイトからダウンロードします。インストーラーを実行して、Node.jsを使えるようにします。Node.jsのバージョンはv20を推奨します。コマンドラインで、Node.jsがインストールされているか確認します。
% node -v
v20.12.2
2. 次に、プロジェクトを保存するディレクトリを作成します。本記事では、ユーザーディレクトリの下に「LambdaFunctions」という名前のフォルダーを作成し、その中に「horoscope」という名前のファルダーを作ります。このhoroscopeフォルダーの中にプロジェクトの全てのコードを保存します。
3. プロジェクトディレクトリに移動してから、npm initコマンドを実行して、新しいNode.jsプロジェクトを初期化します。
% cd ~/LambdaFunctions/horoscope
% npm init -y
4. 必要なNode.jsパッケージをインストールします。星占いAPIでは、DynamoDBとCSVパーサーを使用するため、次のパッケージをインストールします。
% npm install @aws-sdk/client-dynamodb csv-parser
以上で、プロジェクトのセットアップは完了です。次は、星占いAPIのロジックを作成します。先ほど作成したプロジェクトフォルダー(~/LambdaFunctions)をお使いのIDE(VS CodeやWebStormなど)で開きます。horoscopeフォルダーの中にindex.jsという名前のファイルを作成して、次に示すコードを記述します。
APIロジックの実装 index.js
exports.handler = async (event) => {
console.log('event:', event);
//ステータスコードの取得
const statusCode = event.statusCode; // (1)
// 認証エラー
if (statusCode === 401) { // (2)
return event;
}
// 認証OK
// URLクエリパラメータの取得
const zodiacSignId = event.queryStringParameters?.zodiac_sign_id; // ここから(3)
const eventDate = event.queryStringParameters?.event_date;
const userId = event.queryStringParameters?.user_id; // ここまで(3)
// 必須パラメーターのチェック
const missingParams = []; // ここから(4)
if (!zodiacSignId) missingParams.push('zodiac_sign_id');
if (!eventDate) missingParams.push('event_date');
if (!userId) missingParams.push('user_id');
if (missingParams.length > 0) {
return {
statusCode: 400,
body: JSON.stringify({
error: 'Invalid request',
message: `Missing required parameter(s): ${missingParams.join(', ')}`
})
};
} // ここまで(4)
// user_idの権限チェック(必要に応して実装する)
if (userId === 'hogehoge') { // ここから(5)
return {
statusCode: 403,
body: JSON.stringify({
error: 'Forbidden',
message: `User with ID ${userId} does not have permission to access this resource.`
})
};
} // ここまで(5)
try {
// 星占い結果を返却する
return { // (6)
"statusCode":200,
"body":"[{\"financial_luck\":1,\"work_luck\":1,\"todays_fortune\":\"今日の運勢は〇〇です。\",\"general_luck\":1,\"zodiac_sign_id\":\"1\",\"love_luck\":2,\"id\":1,\"event_date\":\"2024-05-01\"}]"
};
} catch (err) {
console.error(err);
return { // (7)
statusCode: 500,
body: JSON.stringify({ message: "Error retrieving the horoscope." })
};
}
};
このコードは、第1部のAPIの仕様に基づいて、AWS Lambda関数の実装を進めています。このコードは、星占いAPIのバックエンドロジックを処理するJavaScriptコードです。主にAPI Gatewayからのリクエストをトリガーとして実行されることを想定しています。
(1)前段のプロセスから引き継がれたHTTPステータスコードを取得します。前段のプロセスは、API Gatewayを想定しています。
(2)で、認証エラーを処理しています。ステータスコードが401(Unauthorized)である場合、認証が必要または認証失敗していることを示し、処理をそこで終了させ、リクエストイベントをそのまま返します。
(3)は、URLクエリパラメータの取得コードです。event.queryStringParametersオブジェクトから、クエリストリングを介して渡されるパラメーター(zodiac_sign_id, event_date, user_id)を取得します。この際、オプショナルチェーン(?.)を使用して、queryStringParametersがnullまたはundefinedの場合にエラーを防ぎます。
(4)必須パラメーターのチェックを行います。欠けているパラメーターがある場合は、400エラー(Bad Request)を返し、エラーメッセージに欠けているパラメーター名を含めます。
(5)で、user_idに基づく権限チェックを行います。特定のユーザーID(ここでは'hogehoge')がアクセス権を持たない場合、403エラー(Forbidden)を返します。詳細な実装は、必要に応じて読者自身で行うことを想定しています。例えば、許可するuser_idのリストを作成し、そのリストに含まれないときは、403エラーを返す実装などが考えられます。
(6)正常なフローの終わりで、ハードコードされた星占い結果をJSON形式で返します。ステータスコードは200で、レスポンスボディに星占いデータを含めます。
(7)は、エラーハンドリングです。何らかのエラーが発生した場合(例えばデータベースアクセスエラー、外部API呼び出しエラーなど)、500エラー(Internal Server Error)を返し、エラーメッセージを含むレスポンスを生成します。
ただし、現時点ではデータベースとの連携は実装されておらず、星占いデータはハードコードされています。実際のデータベースとの連携は、第3部で実装する予定です。このコードは、APIの基本的な流れを示すために作成されたものであり、最終的な実装ではデータベースから取得した星占いデータを返却するように改良される予定です。
以上で、Lambda関数の解説を終わります。次は、このLambda関数をAWSコンソールにアップロードして、デバッグ(テスト)できるようにしましょう。初めに行うのは、プロジェクトをzipファイルに圧縮することです。次のコマンドを実行します。
APIロジックの実装 zipファイルに圧縮する
% cd ~/LambdaFunctions/horoscope
% zip -r function.zip .
上記のzipコマンドは、プロジェクト内のすべてのフォルダーとファイルをzip形式で圧縮して、function.zipという名前のファイルに書き出します。コマンドを実行して、function.zipファイルが作成されることを確認してください。次は、このzipファイルをAWSコンソールにアップロードします。
API ロジックの実装 zipファイルをアップロード
AWSコンソールのLambda関数「horoscope」を開きます。「コード」タブの右上「アプロード先」から「.zipファイル」を選びます。
.zipファイルをアップロードのモーダルウインドウが開きます。アップロードボタンから、先ほどのセクションで圧縮したファイル「function.zip」を選びます。「保存」ボタンをクリックして、zipファイルをアップロードします。以上で、Node.jsプロジェクトをアップロードできました。
次は、Lambda関数のデバッグ(テスト)を行います。「テスト」タブからテストイベントを作成できます。
APIロジックの実装 テスト
このセクションでは、先ほどアップロードしたプロジェクトが正しく動作するかテストします。3つのテスト「success」「failure-UnAthorized」「failure-NotPermission」を行います。
テスト「success」
AWSコンソールでLambda関数「horoscope」を選びます。「テスト」タブから一つ目のテストを作成します。テスト名は「success」とし、星占い結果を取得できるSUCCESSイベントを作成します。イベントJSONには次のコードを記述します。
{
"statusCode": 200,
"queryStringParameters": {
"user_id": "user_id_00001",
"zodiac_sign_id": "1",
"event_date": "2024-05-01"
}
}
イベントJSONを記述したら、右上の「保存」ボタンでテストイベントを保存してから、「テスト」ボタンを選んで、テストを実行します。
数秒待つと、画面上部に「成功」の通知が表示されます。これで、コードエラーなく、テストが実行されたことが確認できました。次は、通知の「詳細」を選んで、テスト内容を確認します。
ログ内容を確認すると、Node.jsプロジェクトで実装した占い結果が正しいJSON形式で返却されていることが確認できます。これで、テスト「success」は完了です。 次は、テスト「failure-Unauthorized」で、認証エラーイベントをテストします。
テスト「failure-Unauthorized」
先ほどと同じ手順で、テスト名「failure-Unauthorized」を作成し、次のイベントJSONを記述します。statusCodeの値が401になっています。
{
"statusCode": 401,
"error": "Authentication failed",
"message": "Invalid API Key"
}
テストイベントを「保存」してから、「テスト」を実行します。
上部に「成功」の通知が表示されます。コードはエラーなく実行できました。実行内容を確認するために、通知部分の「詳細」を選びます。
テスト「failure-Unauthorized」ログを確認すると、401 Unauthorizedが正しいJSON形式で返却できています。これで、テスト「failure-Unauthorized」は完了です。最後に、テスト「failure-NotPermission」でユーザー権限エラーをテストします。
テスト「failure-NotPermission」
先ほどと同じ手順で、テスト名「failure-NotPermission」を作成し、次のイベントJSONを記述します。queryStringParameters.user_idの値が「hogehoge」になっています。
{
"statusCode": 200,
"queryStringParameters": {
"user_id": "hogehoge",
"zodiac_sign_id": "1",
"event_date": "2024-05-01"
}
}
テストイベントを「保存」してから、「テスト」を実行します。
上部に「成功」の通知が表示されます。コードはエラーなく実行できました。実行内容を確認するために、通知部分の「詳細」を選びます。
テスト「failure-NotPermission」ログを確認すると、「403 Forbidden」が正しいJSON形式で返却できています。これで、テスト「failure-NotPermission」は完了です。
以上で、3つのテストすべてを完了し、APIロジックの基本形が実装できたことが確認できました。次の第3部では、DynamoDBを使用してデータベースとの連携を実装し、より完全な星占いAPIを構築していきます。そうすることで、星座と日時を検索ワードとして、占い結果を取得できるように改造します。
第3部 DynamoDB
DynamoDBは、AWSが提供するフルマネージド型のNoSQLデータベースサービスです。スキーマレスな設計により、柔軟なデータモデリングが可能で、スループットとストレージのスケーリングを自動的に行ってくれます。また、高い可用性と耐久性を備えており、ミッションクリティカルなアプリケーションにも適しています。
星占いAPIでは、DynamoDBを使用して、星座や日時に基づく占い結果を保存・取得します。Lambda関数とDynamoDBを連携させることで、APIのバックエンドをサーバーレスアーキテクチャで実現できます。
本記事では、以下の手順でLambda関数とDynamoDBを連携させていきます。
DynamoDBテーブルの作成
Lambda関数からDynamoDBへのアクセス設定
Lambda関数の実装
テストとデバッグ
これにより、星占いAPIのバックエンドをサーバーレスで効率的に構築できるようになります。それでは、まずDynamoDBテーブルの作成から始めていきましょう。
DynamoDBテーブルの作成
AWSコンソールにログインして、左上の検索フィールドに「dynamodb」と入力し、「DynamoDB」を選びます。
DynamoDBダッシュボードが開いたら、「テーブルの作成」を選びます。
テーブルの作成画面が開きました。以下の設定を行います。各項目は次の役割を持っています。
パーティションキーとは、DynamoDBテーブル内のデータを分割するための主キーです。パーティションキーの値に基づいて、データが異なるパーティション(物理的な記憶領域)に格納されます。これにより、大量のデータを効率的に管理し、アクセスすることができます。パーティションキーは必須であり、一意である必要があります。
ソートキーとは、パーティションキー内のデータを並べ替えるための補助的なキーです。ソートキーを使用すると、パーティションキー内のデータを特定の順序で格納し、効率的にクエリや範囲スキャンを行うことができます。ソートキーはオプションであり、パーティションキーと組み合わせて複合主キーを形成します。
テーブル名:Horoscopes
パーティションキー:zodiac_sign_id
ソートキー:event_date
設定が終わったら、「テーブルの作成」で確定します。
DynamoDBテーブルリストが表示されたら、「Horoscopes」テーブルを選びます。
Horoscopesテーブルの一般的な情報から、「Amazonリソースネーム(arn)」をコピーします。このarn(文字列)は、Lambda関数をDynamoDBを連携させるために必要です。Lambda「horoscope」に戻って、DynamoDBへのアクセス権限を設定します。
LambdaにDynamoDBへのアクセス権限を付与
Lambda関数の「設定 > アクセス権限」セクションを開きます。実行ロール「horoscope-role-xxxx」のリンクをクリックします。すると、Lambdaにデフォルトで設定されているIAM(horoscope-role-xxxx)を編集することができます。
IAMの設定画面が開きます。DynamoDBへのアクセス許可を追加するために、「許可を追加 > インラインポリシーを作成」を選びます。
ポリシーエディタが開きます。「JSON」を選んで、次のJSONを貼り付けます。このポリシーは、DynanoDBへの読み込み、書き込み、テーブルのアップデートをLambdaに許可します。"Resource"キーの値は、先ほどコピーしたDynamoDBのarnを貼り付けることで、特定のテーブル(Horoscopes)のみ上記ポリーシーが適用されます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dynamodb:GetItem",
"dynamodb:PutItem",
"dynamodb:UpdateItem",
"dynamodb:BatchWriteItem",
"dynamodb:Query",
"dynamodb:Scan",
"dynamodb:UpdateTable"
],
"Resource": "arn:aws:dynamodb:xxxxxxxx:table/Horoscopes"
}
]
}
以上で、DynamoDBのセットアップは完了です。次は、Lambda関数のコードを修正して、星座と日付によって、星占い結果を取得できるようにします。まず、DynamoDBにデータをインポートする「importData.js」をローカルの「LambdaFunctions/horoscope」フォルダーに作成します。次のコードを記述します。
データベース実装 importData.js
ここから先は
この記事が気に入ったらサポートをしてみませんか?