Синтаксическая ошибка
Ваш синтаксис Fn::GetAtt
немного отклонен.Вам нужно два двоеточия между Fn
и GetAtt
, а затем вам нужно двоеточие в конце этой строки.Например:
authenticated:
Fn::GetAtt:
Это исправит странное сообщение об ошибке, содержащее Fn:GetAtt
... где должно быть реальное имя роли.
Fn :: Join
Вы можете избавиться от вызова Fn::Join
, просто используя Ref
, например, так:
Properties:
IdentityPoolId:
Ref: CognitoIdentityPoolStandardUserIdentityPool
Зависит от
The DependsOn
строка в порядке, но не нужна.CloudFormation достаточно умен, чтобы выяснить эту зависимость для вас.
YAML note
Наконец, хотя это сводится к предпочтению читабельности, я обычно помещаю короткие списки (например,те, которые вы передаете Fn::GetAtt
) в квадратных скобках.Таким образом, вы можете заменить это:
authenticated:
Fn::GetAtt:
- IdentityAuthenticatedRole
- Arn
на это:
authenticated:
Fn::GetAtt: [IdentityAuthenticatedRole, Arn]
Перезаписано
Результат короче, и, возможно, легче читать,Объединение этих предложений приводит к получению ресурса роли:
CognitoIdentityPoolRoleAttachment:
Type: AWS::Cognito::IdentityPoolRoleAttachment
Properties:
IdentityPoolId:
Ref: CognitoIdentityPoolStandardUserIdentityPool
Roles:
authenticated:
Fn::GetAtt: [IdentityAuthenticatedRole, Arn]
Протестировано с использованием Без сервера 1.27.2