Как создавать группы и предоставлять разные разрешения в AWS Cognito в Serverless - PullRequest
0 голосов
/ 25 мая 2019

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

  1. Администратор * * 1004
  2. Пользователи

В моем файле serverless.yaml я создал две разные группы пула Cognito User для этих типов пользователей

AdminUserPoolGroup:
      Type: AWS::Cognito::UserPoolGroup
      Properties:
        GroupName: "admins"
        Precedence: 0
        UserPoolId: 
          Ref: CognitoUserPool

NormalUserPoolGroup:
      Type: AWS::Cognito::UserPoolGroup
      Properties: 
        GroupName: users
        Precedence: 1
        UserPoolId:
          Ref: CognitoUserPool

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

1 Ответ

2 голосов
/ 25 мая 2019

Необходимо указать свойство RoleArn ресурса AWS::Cognito::UserPoolGroup:

AdminUserPoolGroup:
  Type: 'AWS::Cognito::UserPoolGroup'
  Properties:
    GroupName: "admins"
    Precedence: 0
    UserPoolId: !Ref CognitoUserPool
    RoleArn: !GetAtt AdminRole.Arn # Get the ARN of the role defined below

AdminRole: # The IAM role for admins
  Type: 'AWS::IAM::Role'
  Properties:
    ...role properties...

См. AWS::IAM::Role о том, как определить роль (вам нужно будет объявить ресурсы AWS::IAM::Policy и ссылаться на них в вашей роли).

...