我正在尝试使用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中添加这些权限。据我所知,您不能将角色附加到另一个角色上。
应将信任策略与许可策略分开。