AWSのDVAというAWSの開発者向けのアソシエイト系の資格に挑戦するにあたり、軽くサービスをハンズオンしたいと思い、記事でまとめていこうと思います。
アーキテクチャの全体像
[ ユーザー ] ──► [ Cognito User Pool (認証) ]
│
▼
[ API Gateway ]
│
▼
[ Lambda (注文受付) ]
│
┌──────────────────┴──────────────────┐
▼ ▼
[ DynamoDB (永続化) ] [ SQS ]
│ │
▼ (Streams) ▼
[ EventBridge ] [ Lambda ]
│ │
▼ ▼
[ Step Functions (オーケストレーション) ] ◄─┘
今回実施すること(Phase 1-1)
今回は全体の第一歩として、「LambdaからDynamoDBへ最小権限(PutItemのみ)で安全にデータを書き込むコア部分の構築」を行います。
- DynamoDBで注文データを格納するテーブルを作成する
- テスト用アイテムを直接手動投入して動作確認する
- 最小権限(
dynamodb:PutItemのみ)を持つLambdaを作成・設定する - LambdaからDynamoDBへデータを登録(PutItem)するテストを実行する
ハンズオン手順
1. DynamoDB テーブルの作成と初期テスト
まずは注文データを保持するためのDynamoDBテーブルを作成します。
プライマリキーを設定してテーブルを初期化します。
テーブルが作成されたら、コンソール上から手動でサンプルアイテムを追加し、データ構造とテーブルが正しく機能しているか確認しておきます。
2. Lambda関数の作成と最小権限IAMポリシーの設定
次に、データ追加を担うLambda関数を作成します。
💡 DVAポイント:最小権限の原則(Least Privilege)
セキュリティの観点から、AWSDynamoDBFullAccess のような強すぎる権限は付与せず、今回の処理で必要な dynamodb:PutItem のみを許可するインラインポリシー(dvatest)を作成し、Lambdaの実行ロールに紐付けます。
3. コードの実装と書き込みテスト
IAMポリシーの紐付け完了後、DynamoDBへデータを保存する処理コードを記述してデプロイ(ビルド)します。
import boto3
import uuid
dynamodb = boto3.resource("dynamodb")
table = dynamodb.Table("DvaOrders")
def lambda_handler(event, context):
item = {
"orderId": str(uuid.uuid4()),
"customerName": "testUser2",
"productName": "AWS DVA Training",
"status": "CREATED"
}
table.put_item(Item=item)
return {
"statusCode": 200,
"body": "Order created"
}
Lambdaコンソール上の「Test」からテストイベントを実行します。
DynamoDBコンソールの「アイテムを探索」から確認すると、Lambdaから発行された PutItem によって無事に新しいアイテムが登録されていることが確認できました!
今回は「注文システム」の土台となる DynamoDBテーブルの準備 と 最小権限でのLambda書き込み連携 を確認しました。







