允许Lambda扮演由身份库创建的IAM角色的角色



我正在尝试使用Amazon Cognito赋予我的令牌,以使用boto3的" pabus_role_with_web_identity"在身份池上定义的角色,但它给了我这个错误:

" botocore.exceptions.clienterror:呼叫asherolelewithwebidentity操作时发生错误(访问):访问拒绝"

我一定错过了政策上的东西?

我已经尝试更改lambda的策略,以下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "logs:CreateLogStream"
            ],
            "Resource": [
                "arn:aws:logs:us-west-2:xxx:log-group:/aws/lambda/xxx:*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:us-west-2:xxx:log-group:/aws/lambda/rxx:*:*"
            ],
            "Effect": "Allow"
        },
        {
            "Sid": "PermitAssumeRole",
            "Action": [
                "sts:AssumeRole"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:iam::xxx:role/Auth_Role",
                "arn:aws:iam::xxx:role/Cognito_Unauth_Role"
            ]
        }
    ]
}

我在boto3上的代码:

x = trial.assume_role_with_web_identity(RoleArn="arn:aws:iam::xxx:role/xxx",
                                         RoleSessionName="xx",WebIdentityToken=response['xx']['xx'])

我希望它能够扮演我创建的IAM的角色。

就像@franziga所说的那样,将您的信任政策(PermitAssumeRole语句)与策略的其余部分(这是权限策略)分开。此外,如果Lambda需要担任该职位,您的信任政策也需要像

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

另外,如果您希望您的Lambda具有与Cognito authenticated中的权限相同的访问权限。unauthenticated角色,您必须在Lambda中添加这些权限。据我所知,您不能将角色附加到另一个角色上。

应将信任策略与许可策略分开。

相关内容

  • 没有找到相关文章

最新更新