#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
свойство, на которое я ссылаюсь, является ролью уровня поставщика, а не ролью функции. Когда бы вы использовали роль уровня поставщика?