Добавление роли пула пользователей AWS Cognito с помощью CDK

Я развернул https://github.com/aws-samples/amazon-elasticsearch-service-with-cognito в свой стек, и я пытаюсь добавить группу master согласно https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/fgac.html#fgac-walkthrough-iam

Поэтому я добавил к следующему https://github.com/aws-samples/amazon-elasticsearch-service-with-cognito/blob/master/lib/search-stack.ts#L50

diff --git a/lib/search-stack.ts b/lib/search-stack.ts
index 85de0c0..2493c92 100644
--- a/lib/search-stack.ts
+++ b/lib/search-stack.ts
@@ -3,7 +3,7 @@

 import { Fn, Stack, Construct, StackProps, CfnParameter, CfnOutput } from '@aws-cdk/core';
 import { CfnDomain } from '@aws-cdk/aws-elasticsearch';
-import { UserPoolAttribute, CfnUserPoolDomain, CfnIdentityPool, CfnIdentityPoolRoleAttachment, CfnUserPool } from '@aws-cdk/aws-cognito';
+import { UserPoolAttribute, CfnUserPoolDomain, CfnIdentityPool, CfnIdentityPoolRoleAttachment, CfnUserPool, CfnUserPoolGroup } from '@aws-cdk/aws-cognito';
 import { Role, ManagedPolicy, ServicePrincipal, FederatedPrincipal } from '@aws-cdk/aws-iam';
 import { CustomResource } from '@aws-cdk/aws-cloudformation';

@@ -55,6 +55,19 @@ export class SearchStack extends Stack {
       }, "sts:AssumeRoleWithWebIdentity")
     });

+    // create two groups, one for admins one for users
+
+    new CfnUserPoolGroup(this, "AdminsGroup", {
+      groupName: "master-user-group",
+      userPoolId: idPool.ref,
+
+    });
+
+    new CfnUserPoolGroup(this, "UsersGroup", {
+      groupName: "limited-user-group",
+      userPoolId: idPool.ref,
+    });
+
     const esRole = new Role(this, "esRole", {
       assumedBy: new ServicePrincipal('es.amazonaws.com'),
       managedPolicies: [ManagedPolicy.fromAwsManagedPolicyName("AmazonESCognitoAccess")]
~

но после повторного развертывания роли не создаются!

любой совет очень ценится.


person khinester    schedule 01.06.2020    source источник


Ответы (3)


Начиная с версии 1.1.1, код amazon-elasticsearch-service-with -ognito включает конфигурацию для детального контроля доступа, включая группу Amazon Cognito под названием es-admins, и необходимое разрешение ролей.

person steffeng    schedule 02.12.2020

Хорошо, мне нужно было использовать:


    new CfnUserPoolGroup(this, "AdminsGroup", {
      groupName: "master-user-group",
      userPoolId: userPool.ref
    });

    new CfnUserPoolGroup(this, "UsersGroup", {
      groupName: "limited-user-group",
      userPoolId: userPool.ref
    });

вместо idPool.ref

person khinester    schedule 01.06.2020
comment
Ты подтолкнул меня на это. Вчера я видел это, но меня отвлекли, и я совершенно не ответил. К счастью, вы со всем разобрались !! - person dmahapatro; 02.06.2020

В AWS CDK v1.91.0 используется userPoolId вместо ref:

import * as cognito from '@aws-cdk/aws-cognito';

//...

const userPool = new cognito.UserPool(this, 'UserPool', {
  //...
});

new cognito.CfnUserPoolGroup(this, "ManagerGroup", {
  groupName: "manager",
  userPoolId: userPool.userPoolId
});
    
person Arian Acosta    schedule 24.02.2021