1

サーバレスYMLにCloudFormationテンプレートとしての役割を追加します。は、私はこの回答から例を以下、別のラムダを起動しようとしています

Nodejs - Invoke an AWS.Lambda function from within another lambda function

答えは、両方のラムダ関数は、AWSLambdaExecuteを持つべきであると述べているとAWSLambdaBasicExecutionRoleアクセス許可。

Serverlessを使用して、serverless.ymlのCloudFormationテンプレートにこれら2つの役割を追加するにはどうすればよいですか?

答えて

1

サーバレスIAMドキュメント、デフォルトで

によると、1つのIAM役割は、あなたのサービスでラムダ関数のすべてによって共有されています。 IAMポリシーも作成され、その役割に関連付けられます。デフォルトでは、ラムダ関数にはCloudWatchログの作成と書き込みの権限があり、使用するVPCセキュリティグループとサブネットを指定した場合、ENI経由でVPCに接続するために必要なEC2権限がデフォルトに追加されますIAMポリシー。

このサービス全体のロールに特定の権限を追加するには、生成されたポリシーにマージされるprovider.iamRoleStatementsのステートメントを定義します。

別の関数からラムダ関数を呼び出すには、サーバーレスの既存のIAMアクセス許可に"lambda:InvokeFunction"アクションを追加するだけです。だから、serverless.ymlサービスはこのようになりますiamRoleStatementsセクションが必要例:他の回答を参照して

service: new-service 

provider: 
    name: aws 
    iamRoleStatements: 
    - Effect: "Allow" 
     Action: 
     - "lambda:InvokeFunction" 
     Resource: 
     - "*" 

は引用:

  • AWSLambdaBasicExecutionRole管理ポリシーがすでにデフォルトサーバレスのポリシーで覆われています。
  • AWSLambdaExecuteは、必要な管理ポリシーの不正な名前です(S3 get/putアクセスのみを提供するもので、InvokeFunctionではありません)。答えはおそらくAWSLambdaRoleを意味し、"lambda:InvokeFunction"の許可を得ています。
関連する問題