サーバレス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"
の許可を得ています。