API Gatewayから直接 DynamoDBに書き込む
目次
やりたいこと
WebページでOやXを押したときに、どっちを押したかをDynamoDBに書き込みます。
ついでにAPI GatewayからDynamoDBに直接書き込む、にチャレンジしてみました。
参考にさせていただいたページ
- Amazon API Gateway で AWS Service Proxy を使って DynamoDB にアクセスする
- API Gatewayから、AWS Lambdaを使わずにDynamoDBにアクセスする
DynamoDB
DynamoDBはテーブルを作って、パーティションキーにIDという文字列を作っただけです。
料金モデルはオンデマンドにしています。
IAMロール
API Gatewayが使用するIAMロールを作ります。
マネジメントコンソールでIAMロールを作成する際に、API Gatewayを指定しました。
ですので、信頼ポリシーはこうなります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "apigateway.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } |
実行ポリシーは、PutItemのみとしました。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "dynamodb:PutItem" ], "Effect": "Allow", "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/ox-items" } ] } |
API Gateway
メソッドリクエストでは、URLクエリ文字列パラメータを設定しました。
統合リクエストでは、このような設定にしました。
主な設定値は以下です。
- 統合タイプ: AWSサービス
- AWSサービス: DynamoDB
- HTTPメソッド: POST
- アクション: PutItem
マッピングテンプレートは次のようにしました。
1 2 3 4 5 6 7 8 9 10 11 12 |
{ "TableName": "ox-items", "Item": { "id": { "S": "$context.requestId$context.extendedRequestId" }, "ox": { "S": "$input.params('ox')" } } } |
保存したいには、oxです。
パーティションキーは、API GatewayのリクエストIDと拡張リクエストIDを連結してみました。
やりたいことはこれでひとまず実現できました。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
![](https://www.sbcr.jp/wp-content/uploads/2023/01/9784815617929-1-407x596.jpg)
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
![](https://www.sbcr.jp/wp-content/uploads/2024/01/9784815625382-3-420x596.jpg)
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
![](https://www.shuwasystem.co.jp//images/book/637791.jpg)
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
![](https://book.mynavi.jp/files/topics/135344_ext_06_0.jpg?v=1673514682)
「AWSではじめるLinux入門ガイド」という本を書きました。
![](https://www.yamamanx.com/wp-content/uploads/2023/12/81Rp5O9We6L._SY522_.jpg)
![@yamamanx](https://www.yamamanx.com/wp-content/plugins/lazy-load/images/1x1.trans.gif)
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
EC2にSystems MangerからCloudWatchエージェントをインストール
CloudWatchエージェント EC2の標準メトリクスでは収集できないメモリの …
-
-
EC2 Global Viewで不要なインスタンスを見つけて4つほど終了しました
EC2 Global Viewという機能がリリースされました。 EC2コンソール …
-
-
Amazon Connectの新規作成からプッシュボタン入力と発信元電話番号をLambdaで処理するまで
とりあえずやりたいことはタイトルに書いたとおり、「電話をかけて、プッシュボタンに …
-
-
Intel 82599 VF インターフェイスで拡張ネットワーキングが有効なEC2インスタンスで帯域幅を確認してみました
拡張ネットワーキングが有効なEC2インスタンスとそうではないインスタンスの2セッ …
-
-
Amazon CloudWatch Syntheticsでハートビートモニタリングを実行
このブログに対してハートビートモニタリングのCanaryを実行してみました。 C …
-
-
Backlogの実績工数をAmazon QuickSightで可視化してわかったこと
今年に入ってから、Backlogで個人タスクを登録しだして、予定工数、実績工数を …
-
-
RDSスナップショットのS3エクスポート結果確認
RDSのスナップショットをS3へエクスポートが日本語マネジメントコンソールでもで …
-
-
Amazon EC2 Auto ScalingのVPCは変更できる
EC2 Auto ScalingのVPCは変更できたっけ??と思いまして試しまし …
-
-
Cloud9初回アクセス時にCodeCommitのリポジトリを自動でクローンする
CloudFormationからCloud9環境を作成する際に、Reposito …
-
-
AWSアカウント内のCloudWatchアラームを削除する
やりたいこと 特定アカウント特定リージョン内のCloudWatdchアラームを全 …