9

Serverless Frameworkを使用して、AWS Lambdaデプロイメントを管理しています。フレームワークの資格情報はDynamoDBリソースにアクセスできますが、フレームワークと共に配備された私のLambdaは自分のDynamoDBテーブルにアクセスできません。Serverless Frameworkを使用している場合、AWS LambdaからDynamoDBにアクセスする方法は?

ラムダ関数に適切なアクセスを与えるにはどうすればよいですか?

答えて

13

EDIT:Serverless Framework 1.xの回答が更新されました。

解決策は、LambdaがDynamoDBリソースにアクセスできるように、iamRoleStatementsを設定することです。注:Serverless Frameworkが使用する認証情報には、同じDynamoDBリソースに対するアクセス権が必要です。

  1. あなたserverless.ymliamRoleStatementsを追加します。

    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/*" 
    
  2. が変更を展開:

    > serverless deploy 
    

は、(機能レベルの権限を付与するには許可するのではなくDynamoDBにアクセスするすべての機能)、私の他の回答hereを参照してください。

+1

ありがとうございます。私はarn:aws:dynamodb:$ {region}:*:table/* –

+0

をserverless version 1.x用に更新しました – Zanon

4

私は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にも当てはまります。

関連する問題