无服务器模板中的提供程序级别角色和iamRoleStatements有什么区别?

问题描述

这些two properties可以在模板中设置,我很好奇它们之间的区别以及应该使用哪个模板。

定义不清楚:

role: arn:aws:iam::XXXXXX:role/role # Overwrite the default IAM role which is used for all functions

iamRoleStatements: # IAM role statements so that services can be accessed in the AWS account

有人可以解释两者以及用例之间的区别吗?

我不确定是否应该仅使用应用程序所需的所有资源来创建新的提供程序级角色,并为其分配role参数,还是应该保留认角色(无服务器),然后添加我对iamRoleStatements

的政策

解决方法

iamRoleStatements旨在包含此服务所需的最常见权限。例如,您有一个API网关和一堆lambda函数,它们都使用DynamoDB来存储事务数据。几乎所有的lambda函数都需要具有查询DynamoDB的权限,因此provider: name: was ... iamRoleStatements: - Effect: Allow Action: - dynamodb:DescribeTable - dynamodb:Query - dynamodb:Scan - dynamodb:GetItem - dynamodb:PutItem - dynamodb:UpdateItem - dynamodb:DeleteItem Resource: - <DynamoDB table and indices arns> 应该这样配置。

iamRoleStatements

所有lambda都将获得与上面相同的role。现在,假设您有一个特殊的lambda函数,需要完全 个不同的权限集。您可以在控制台中创建角色,然后使用iamRoleStatements选项覆盖包含stages {}的默认角色。