当前位置: 首页 > 知识库问答 >
问题:

从认知组承担IAM角色

金晨
2023-03-14

是否可以将IAM角色IAM-role1链接到Cognito用户池cognito-user1中Cognito用户cognito-user1的Cognito组cognito-group1

我的配置:

Cognito用户池cognito-user-pool1:

  • 认知用户cognito-user1属于cognito-group1
  • 认知组cognito-group1已分配给IAM-role1.
    null
    null

这段代码允许我对Cognito用户池进行身份验证:

AmazonCognitoIdentityProviderClient provider = new AmazonCognitoIdentityProviderClient();
            CognitoUserPool userPool = new CognitoUserPool("user-pool-id", "client-id", provider);
            CognitoUser user = new CognitoUser("cognito-user1", "client-id", userPool, provider);
            InitiateSrpAuthRequest authRequest = new InitiateSrpAuthRequest()
            {
                Password = "cognito-password1"
            };

            AuthFlowResponse authResponse = await user.StartWithSrpAuthAsync(authRequest);

然后从cognito标识池cognito-identity-pool1中获取链接到cognito用户池cognito-user-pool1的凭据:

CognitoAWSCredentials credentials = user.GetCognitoAWSCredentials("identity-pool-arn", RegionEndpoint.USEast1); 
using (var client = new AmazonS3Client(credentials))
...

共有1个答案

马俊
2023-03-14

当使用认知用户池cognito-user-pool1对用户进行身份验证时,id令牌包括认知组和iam角色:

"cognito:groups": [
    "cognito-group1"
  ],
"cognito:roles": [
    "arn:aws:iam::xxx:role/iam-role1"
  ],

我们还需要通过编辑IAM角色IAM-role1中的信任关系来允许认知标识池承担此角色:

{
  "Version": "2012-10-17",
  "Statement": [
    ...
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "cognito-identity.amazonaws.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity"
    }
  ]
}
 类似资料:
  • 在我们的应用程序中,我们使用自定义角色访问aws API。在开发者环境中,我们在app.config中提供访问密钥和秘密密钥,它工作得很好。 在prod环境中,我们设置了一个IAM角色,该角色对自定义角色具有必要的权限,EC2实例将使用该IAM角色启动。当我们尝试使用代码切换角色时,我们会遇到以下错误 消息:用户:arn:aws:sts::XXXXXXXXX:假定角色//i-0490fbbb5ea

  • 我正在设置一些文件传输脚本,并正在使用boto3来做这件事。 我需要从本地发送一些文件到第三方AWS帐户(跨帐户)。我在另一个帐户上设置了一个角色,具有写入桶的权限,并将此角色分配给了我帐户上的一个用户。 我可以在CLI上做到这一点,但Boto一直在为桶踢出一个AccessDenied错误。 编辑:作为对John的多部分权限评论的回应,我尝试通过put_object方法上传以绕过此操作-但仍然被访

  • 获取错误 引起原因:org.springframework.beans.BeanInstantiationExc0019:未能实例化[software.amazon.awssdk.services.dynamodb.DynamoDbClient]:工厂方法'amazonDynamoDB'抛出异常;嵌套异常java.lang.NullPointerExc0019: STS客户端不得为空。atspri

  • 问题内容: 我有两个AWS账户-假设A和B. 在帐户B中,我定义了一个角色,该角色允许从帐户A中访问另一个角​​色。我们称其为角色B 在帐户A中,我定义了一个角色,该角色允许root用户承担角色。让我们称之为角色A 角色A附加了以下策略 作为帐户A的用户,我担任角色A。现在使用此临时凭据,我想承担角色B并访问帐户B拥有的资源。我有以下代码 该代码适用于我从客户端获得的一组角色,但不适用于我在我有权

  • 创建了一个Java应用程序并部署在EC2实例中,将EC2实例配置文件角色与实例相关联 通过AWS调用AWS API时JavaSDK V2以及V1得到以下错误 无法从系统设置加载凭据。必须通过环境变量(AWS_Access_key_ID)或系统属性(AWS.accessKeyId)指定访问密钥。 是否有任何与权限/设置相关的内容 注意:我不想在应用程序中使用访问密钥和密钥,我想使用STS承担角色

  • 当我试图用create-function命令创建一个lambda函数时,我得到了一个错误:“为函数定义的角色不能由lambda承担”。 aws lambda create-function --region US-West-2 --function-name hellopython --zip-file fileb:/hello_python.zip --role arn:aws:iam::my-