Serverless Frameworkを使用して、AWS Lambdaデプロイメントを管理しています。フレームワークの資格情報はDynamoDBリソースにアクセスできますが、フレームワークと共に配備された私のLambdaは自分のDynamoDBテーブルにアクセスできません。Serverless Frameworkを使用している場合、AWS LambdaからDynamoDBにアクセスする方法は?
ラムダ関数に適切なアクセスを与えるにはどうすればよいですか?
Serverless Frameworkを使用して、AWS Lambdaデプロイメントを管理しています。フレームワークの資格情報はDynamoDBリソースにアクセスできますが、フレームワークと共に配備された私のLambdaは自分のDynamoDBテーブルにアクセスできません。Serverless Frameworkを使用している場合、AWS LambdaからDynamoDBにアクセスする方法は?
ラムダ関数に適切なアクセスを与えるにはどうすればよいですか?
EDIT:Serverless Framework 1.xの回答が更新されました。
解決策は、LambdaがDynamoDBリソースにアクセスできるように、iamRoleStatementsを設定することです。注:Serverless Frameworkが使用する認証情報には、同じDynamoDBリソースに対するアクセス権が必要です。
あなたserverless.ymlにiamRoleStatementsを追加します。
provider:
name: aws
runtime: nodejs4.3
stage: dev
region: us-east-1
iamRoleStatements:
- Effect: "Allow"
Action:
- "dynamodb:*"
Resource: "arn:aws:dynamodb:${self:provider.region}:*:table/*"
が変更を展開:
> serverless deploy
は、(機能レベルの権限を付与するには許可するのではなくDynamoDBにアクセスするすべての機能)、私の他の回答hereを参照してください。
私はServerlessの仕組みに慣れていませんが、探しているものはIAM Roleです。
EC2インスタンスまたはAWSラムダ関数にロールを割り当てることで、AWS SDKを使用するコードを記述すると、自動的にそのロールに関連付けられた権限でAWS資格情報を取得できるようになります。 AWS Lambdaとユースケースについては、AWS Lambdaアクセスを実行するために必要なDynamoDBテーブルに割り当てる役割を付与する必要があります。
これは賢明に使用することができます。単に資格情報を提供せず、(ロールに正しいアクセス権がある限り)機能します。 AWS SDKは、ロールに関連付けられた資格情報を自動的に取得することによって、すべてを処理します。
あなたが提供したリンクから、ベストプラクティスの下でこれを参照する特定の質問はCredentials from IAM Roles for EC2 Instances
で、EC2インスタンスを参照していますが、これはAWS Lambdaにも当てはまります。
ありがとうございます。私はarn:aws:dynamodb:$ {region}:*:table/* –
をserverless version 1.x用に更新しました – Zanon