Amazon DynamoDB を Amazon Virtual Private Cloud (Amazon VPC) の AWS Lambda インスタンスと統合したいと考えています。
解決策
前提条件:
Lambda を DynamoDB に接続する
次の手順を実行します。
- Lambda コンソールを開きます。
- ナビゲーションペインで、[関数] を選択します。
- [関数の作成] を選択します。
- [一から作成] を選択します。
- [基本情報] に、以下を設定します。
[関数名] に、関数の名前を入力します。
[ランタイム] で、ランタイムオプションを選択します。この例では、Python 3.12 を使用します。
[アーキテクチャ] で、[x86_64] を選択します。
- [詳細設定] で、以下を設定します。
[VPC を有効にする] を選択し、お使いの VPC を選択します。
[サブネット] には、プライベートサブネットのみを選択します。
[セキュリティグループ] には、デフォルトのセキュリティグループを選択します。
- [関数の作成] を選択します。
- [関数の詳細] ページの [コードソース] で、次のコードを入力します。
import json
import boto3
client = boto3.client('dynamodb')
def lambda_handler(event, context):
response = client.get_item(
TableName='Music',
Key={
'Artist': {
'S': 'No One You Know',
},
'SongTitle': {
'S': 'Call Me Today',
},
}
)
print(response)
return {
'statusCode': 200,
'body': json.dumps('Success!')
}
注: TableName と Key を、お使いの値で置き換えてください。
- [デプロイ] を選択します。
- 関数をテストします。
注: 関数をテストするには、Lambda の AWS Identity and Access Management (IAM) ロールに適切なアクセス許可が必要です。詳細については、「AWS Lambda アクセス許可の管理」を参照してください。
その他のトラブルシューティング
VPC にアタッチされている Lambda 関数をトラブルシューティングするには、以下のアクションを実行します。
-
Lambda 関数からパブリックサブネットへの接続をすべて削除します。パブリックサブネットに接続した場合は、トラフィックはパブリックサブネットを通過しようとするため、断続的にタイムアウトの問題が発生する可能性があります。
-
DynamoDB に、ゲートウェイエンドポイントが正しく設定されていることを確認します。
-
Lambda 関数に関連付けられているプライベートサブネットを更新して、DynamoDB VPC ゲートウェイエンドポイント経由でルーティングします。これらのエンドポイントには、Lambda と DynamoDB 間のセキュリティグループ設定の構成を簡素化する AWS マネージドプレフィックスリストがあります。
プライベートサブネットルートテーブルの例:
Route Table: rtb-12345
Destination Gateway Status
10.0.0.0/16 local active
pl-1234 vpce-1234 active
-
すべてのトラフィックを許可するように Lambda セキュリティグループのルールを更新します。
関連情報
コンソールで Lambda の関数の作成
Using Amazon VPC endpoints to access DynamoDB (Amazon VPC エンドポイントを使用して DynamoDB にアクセスする)
Networking and VPC configurations (ネットワークと VPC の設定)