provider.iamRoleStatementsでLambdaの権限を追加
LambdaのIAM Roleの設定
Serverless frameworkのLambda関数のIAM Roleの設定を行う。
設定は設定ファイルserverless.yml
で行う。
デフォルトIAM Role
デフォルトでは、1つのIAM Roleはサービス*1内のすべてのLambda関数で共有されます。また、デフォルトでは、Lambda関数はCloudWatchログの作成と書き込みの権限を持っている。VPC設定が提供されている場合、VPCリソースと通信するためにデフォルトのAWS AWSLambdaVPCAccessExecutionRoleが関連付けられる。
このサービス全体のロールに特定の権利を追加するには、生成されたポリシーにマージされるステートメントをprovider.iamRoleStatementsで定義する。これらのステートメントは CloudFormation テンプレートにマージされるので、Join、Ref、その他の CloudFormation メソッドや機能を使用することができる。
service: new-service provider: name: aws iamRoleStatements: - Effect: 'Allow' Action: - 's3:ListBucket' Resource: Fn::Join: - '' - - 'arn:aws:s3:::' - Ref: ServerlessDeploymentBucket - Effect: 'Allow' Action: - 's3:PutObject' Resource: Fn::Join: - '' - - 'arn:aws:s3:::' - Ref: ServerlessDeploymentBucket - '/*'
*1:Serverlessはサービスという単位で実行環境を作る