Используя CloudFormation, как я могу создать пул удостоверений, который авторизуется на основе ролей пулов пользователей? - PullRequest
1 голос
/ 09 марта 2020

Я использую 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?

Я могу сделать это без роли пула удостоверений в консоли.

...