Мне очень непонятно, как ссылки или переменные работают с CloudFormation.
В настоящее время мой iAmRole в моем serverless.yml выглядит так:
iamRoleStatements:
- Effect: Allow
Action:
- dynamodb:DescribeTable
- dynamodb:Query
- dynamodb:Scan
- dynamodb:GetItem
- dynamodb:PutItem
- dynamodb:UpdateItem
- dynamodb:DeleteItem
# Restrict our IAM role permissions to
# the specific table for the stage
Resource:
- "Fn::GetAtt": [ ReportsTable, Arn ]
ReportsTable - это таблица, созданная в другом файле, которая выглядит так:
Resources:
ReportsTable:
Type: AWS::DynamoDB::Table
Properties:
...
LocalSecondaryIndexes:
- IndexName: typeId-accessToken-index
KeySchema:
- AttributeName: typeId
KeyType: HASH
...etc
Я понимаю, что второе значение в массиве Fn :: GetAtt ссылается на имя атрибута, но я не понимаю, откуда берется Arn. Это похоже на переменную, но она нигде не определена.
В конечном итоге мне нужно добавить еще один блок Effect, Action, Resource, ссылающийся на созданный мной локальный вторичный индекс, но я не знаю, с чего начать.
Изменить: похоже, что Arn исходит из возвращаемых значений таблиц DynamoDB (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html)
Edit2: Хорошо, теперь у меня есть формат arn:aws:dynamodb:region:account-id:table/table-name/index/*
из справочные документы по разрешениям, сейчас тестируем.