1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS/DVA学習】注文処理APIをDVAの学習で作成してみる(①DynamoDB連携とLambdaの作成)

1
Posted at

AWSのDVAというAWSの開発者向けのアソシエイト系の資格に挑戦するにあたり、軽くサービスをハンズオンしたいと思い、記事でまとめていこうと思います。

アーキテクチャの全体像

[ ユーザー ] ──► [ Cognito User Pool (認証) ]
│
▼
[ API Gateway ]
│
▼
[ Lambda (注文受付) ]
│
┌──────────────────┴──────────────────┐
▼                                     ▼
[ DynamoDB (永続化) ]                [ SQS ]
│                                     │
▼ (Streams)                           ▼
[ EventBridge ]                      [ Lambda ]
│                                     │
▼                                     ▼
[ Step Functions (オーケストレーション) ] ◄─┘

今回実施すること(Phase 1-1)

今回は全体の第一歩として、「LambdaからDynamoDBへ最小権限(PutItemのみ)で安全にデータを書き込むコア部分の構築」を行います。

  1. DynamoDBで注文データを格納するテーブルを作成する
  2. テスト用アイテムを直接手動投入して動作確認する
  3. 最小権限(dynamodb:PutItem のみ)を持つLambdaを作成・設定する
  4. LambdaからDynamoDBへデータを登録(PutItem)するテストを実行する

ハンズオン手順

1. DynamoDB テーブルの作成と初期テスト

まずは注文データを保持するためのDynamoDBテーブルを作成します。
プライマリキーを設定してテーブルを初期化します。

DynamoDBでテーブル作成

テーブルが作成されたら、コンソール上から手動でサンプルアイテムを追加し、データ構造とテーブルが正しく機能しているか確認しておきます。

項目投入1
項目投入2

2. Lambda関数の作成と最小権限IAMポリシーの設定

次に、データ追加を担うLambda関数を作成します。

Lambda関数を作成

💡 DVAポイント:最小権限の原則(Least Privilege)

セキュリティの観点から、AWSDynamoDBFullAccess のような強すぎる権限は付与せず、今回の処理で必要な dynamodb:PutItem のみを許可するインラインポリシー(dvatest)を作成し、Lambdaの実行ロールに紐付けます。

DynamoDBのPutItem許可ポリシー追加

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書き込み連携 を確認しました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?