В чем разница между ролью уровня поставщика и iamRoleStatements в бессерверном шаблоне?

#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

Ответ №1:

iamRoleStatements предназначен для хранения наиболее распространенных разрешений, необходимых для этой службы. Например, у вас есть API-шлюз и множество лямбда-функций, которые все используют DynamoDB для хранения транзакционных данных. Почти все лямбда-функции должны иметь разрешение на запрос 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>
  

Все лямбды будут такими же, iamRoleStatements как написано выше. Теперь скажите, есть ли у вас специальная лямбда-функция, для которой требуются совершенно другие наборы разрешений. Вы можете создать роль в консоли и использовать role опцию для перезаписи роли по умолчанию, которая содержит iamRoleStatements .

Комментарии:

1. Мне следовало бы выразиться яснее в моем вопросе, role свойство, на которое я ссылаюсь, является ролью уровня поставщика, а не ролью функции. Когда бы вы использовали роль уровня поставщика?