Я использую Serverless Framework для работы с CloudFormation. Я создаю пул пользователей с группами, которые имеют свои роли. Я хочу создать свой пул удостоверений таким образом, чтобы для параметра поставщика Cognito для Authenticated role selection
было установлено значение Choose role from token
с Role resolultion
из DENY
.
Это мой соответствующий CloudFormation - игнорируйте ${self:custom....}
stuff:
IdentityPool:
Type: AWS::Cognito::IdentityPool
Properties:
IdentityPoolName: ${self:custom.identityPoolName}
AllowUnauthenticatedIdentities: false
CognitoIdentityProviders:
- ClientId:
Ref: UserPoolClient
ProviderName:
Fn::GetAtt: ["UserPool", "ProviderName"]
IdentityPoolRoleAttachment:
Type: AWS::Cognito::IdentityPoolRoleAttachment
Properties:
IdentityPoolId:
Ref: IdentityPool
RoleMappings:
CognitoProvider:
IdentityProvider:
Fn::Join:
- ""
- - "cognito-idp."
- Ref: AWS::Region
- ".amazonaws.com/"
- Ref: UserPool
- ":"
- Ref: UserPoolClient
Type: Token
AmbiguousRoleResolution: Deny
Это не работает, потому что IdentityPoolRoleAttachment
требует секцию Roles
. Но я не хочу использовать аутентифицированные и неаутентифицированные роли с Identity Pool. Я хочу, чтобы поставщик Identity Pool Cognito проверял только передаваемые токены.
Я получаю ошибку:
ServerlessError: An error occurred: IdentityPoolRoleAttachment - 1 validation error detected: Value null at 'roles' failed to satisfy constraint: Member must not be null (Service: AmazonCognitoIdentity; Status Code: 400; Error Code: ValidationException; Request ID: 80026230-eaa9-4045-86d8-6fe4c07cce9d).
Как я могу это сделать? Нужно ли создавать пустую роль и назначать ее на IdentityPoolRoleAttachment
?
Я могу сделать это без роли пула удостоверений в консоли.