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

Tem*_*Fix 5 serverless-framework

这是两个属性您可以在模板中设置的

定义并没有说清楚:

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

jel*_*csc 4

iamRoleStatements旨在包含此服务所需的最常见权限。例如,您有一个 API 网关和一堆 lambda 函数,它们都使用 DynamoDB 来存储事务数据。几乎所有的 lambda 函数都需要有查询 DynamoDB 的权限,所以iamRoleStatements应该这样配置。

provider:
  name: aws
  ...
  iamRoleStatements:
    - Effect: Allow
      Action:
        - dynamodb:DescribeTable
        - dynamodb:Query
        - dynamodb:Scan
        - dynamodb:GetItem
        - dynamodb:PutItem
        - dynamodb:UpdateItem
        - dynamodb:DeleteItem
      Resource:
        - <DynamoDB table and indices arns>
Run Code Online (Sandbox Code Playgroud)

所有 lambda 表达式都将得到与iamRoleStatements上面相同的值。现在,假设您有一个特殊的 lambda 函数需要完全不同的权限集。您可以在控制台中创建角色,并使用该role选项覆盖包含iamRoleStatements.

  • 我的问题应该更清楚,我指的“角色”属性是提供者级别角色,而不是函数角色。您什么时候会使用提供者级别的角色? (2认同)