Отредактируйте AWS Cognito Identity Pool с помощью serverless.yml - PullRequest
0 голосов
/ 19 сентября 2018

Я настраиваю AWS Cognito Identity Pool с использованием инфраструктуры severless и редактирую файл в конфигурации yml, чтобы добавить роль без проверки подлинности для пользователей для загрузки изображения в корзину s3.

КодРанее была развернута без указания роли без проверки подлинности, и развертывание прошло нормально и было стабильным.После того, как я начал искать способ управления разрешениями на доступ к корзине S3, я обнаружил, что единственный способ дать права на запись, но не чтение к корзине S3 - это указать ее в пользовательской политике, поэтому мне нужно добавитьроль без удостоверения в пуле удостоверений.Однако, когда я внедряю код, я получаю сообщение об ошибке:

Serverless Error ---------------------------------------

  An error occurred: CognitoIdentityPoolRoles - Resource cannot be updated.

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

Я также не хочу входить и настраивать ресурсы вручную в консоли AWS, так как ресурсы должны управляться в облачной форме или в консоли, но выполнение этого в обоих направлениях приводит к хаосу.

Итак, на данный момент я вижу варианты удалить весь стек и перестроить его с новыми ролями или найти способ обновления с помощью облачной информации.

У кого-нибудь есть способ избежать первого варианта и разрешить мне обновлять стек без присоединения роли в консоли?

Соответствующий раздел serverless.yml находится ниже ...

Resources:
  # The federated identity for our user pool to auth with
  CognitoIdentityPool:
    Type: AWS::Cognito::IdentityPool
    Properties:
      # Generate a name based on the stage
      IdentityPoolName: ${self:custom.stage}MyIdentityPool
      # Allow unathenticated users
      AllowUnauthenticatedIdentities: true
      # Link to our User Pool
      CognitoIdentityProviders:
      - ClientId:
          Ref: CognitoUserPoolClient
        ProviderName:
          Fn::GetAtt: [ "CognitoUserPool", "ProviderName" ]

  # IAM roles
  CognitoIdentityPoolRoles:
    Type: AWS::Cognito::IdentityPoolRoleAttachment
    Properties:
      IdentityPoolId:
        Ref: CognitoIdentityPool
      Roles:
        authenticated:
          Fn::GetAtt: [CognitoAuthRole, Arn]
        # Next two lines are the 2 lines of code which break everything
        unauthenticated:
          Fn::GetAtt: [CognitoUnAuthRole, Arn]

  # IAM role for UN-authenticated users
  CognitoUnAuthRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
        - Effect: 'Allow'
          Principal:
            Federated: 'cognito-identity.amazonaws.com'
          Action:
          - 'sts:AssumeRoleWithWebIdentity'
          Condition:
            StringEquals:
              'cognito-identity.amazonaws.com:aud':
                Ref: CognitoIdentityPool
            'ForAnyValue:StringLike':
              'cognito-identity.amazonaws.com:amr': unauthenticated
      Policies:
      - PolicyName: 'CognitoUnAuthorizedPolicy'
        PolicyDocument:
          Version: '2012-10-17'
          Statement:
          - Effect: 'Allow'
            Action:
            - 'mobileanalytics:PutEvents'
            - 'cognito-sync:*'
            - 'cognito-identity:*'
            Resource: '*'
          # Allow users to upload attachments to their
          # folder inside our S3 bucket
          - Effect: 'Allow'
            Action:
            - 's3:PutObject'
            Resource:
            - Fn::Join:
              - ''
              -
                - Fn::GetAtt: [MediafilesBucket, Arn]
                - '/submissions/'

1 Ответ

0 голосов
/ 20 сентября 2018

Исправлено.

Я закомментировал разделы serverless.yml, связанные с развернутым (уничтоженным) пулом идентификации, затем раскомментировал этот раздел, повторно развернул и восстановил из резервной копии.

Кажется,быть немного взломать, но это сработало.

Мне также кажется, что должен быть способом редактирования ролей идентификаторов с помощью облачной информации ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...