不能在 AWS CLI 中担任角色,即使有信任关系
Can't assume role in AWS CLI, even with trust relationship
我正在尝试与我的用户(从联合帐户)一起在 awscli 中扮演角色,但我做不到。
每次我 运行 这个命令:
% aws sts assume-role --role-arn “arn:aws:iam::123456789012:role/eksServiceRole” --role-session-name "my_test"
我收到此错误:
An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:sts::123456789012:assumed-role/AzureAD_AWS_Admin/me@mycompany.com is not authorized to perform: sts:AssumeRole on resource: “arn:aws:iam::123456789012:role/eksServiceRole”
我已将我的帐户添加为该角色的信任关系,但仍然没有任何效果:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:sts::123456789012:assumed-role/AzureAD_AWS_Admin/me@mycompany.com",
"arn:aws:iam::123456789012:root"
],
"Service": "eks.amazonaws.com"
},
"Action": "sts:AssumeRole"
},
]
}
我已经为这个角色尝试过同样的方法,但仍然不起作用。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::123456789012:root",
"arn:aws:sts::123456789012:assumed-role/AzureAD_AWS_Admin/me@mycompany.com"
]
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "2ffd8b2c3d8edaf02104a081af4b78d82f6e770f"
}
}
}
]
}
我还为所有地区激活了 STS。
我尝试了不同的角色和用户,但由于这个假设角色,我永远无法 运行 命令。我只需要这样做即可继续我的项目(Gitlab EKS 集群集成以安装指标服务器)。
我为此苦苦挣扎了好几天,我已经尝试了堆栈溢出中的所有解决方案。
我已经解决了!
它缺少 externalId。
在这种情况下,对于这些角色,它们是使用来自第三方应用程序 (Gitlab) 的 externalId 创建的。
所以我把 --external-id
参数放在正常运行的所有东西中:
% aws sts assume-role --role-arn arn:aws:iam::123456789012:role/eksGitlabProvisionRole --external-id 2ffd4wsc3d8edaf02104a081af4b78g432f6e750f --role-session-name my_test
我正在尝试与我的用户(从联合帐户)一起在 awscli 中扮演角色,但我做不到。
每次我 运行 这个命令:
% aws sts assume-role --role-arn “arn:aws:iam::123456789012:role/eksServiceRole” --role-session-name "my_test"
我收到此错误:
An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:sts::123456789012:assumed-role/AzureAD_AWS_Admin/me@mycompany.com is not authorized to perform: sts:AssumeRole on resource: “arn:aws:iam::123456789012:role/eksServiceRole”
我已将我的帐户添加为该角色的信任关系,但仍然没有任何效果:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:sts::123456789012:assumed-role/AzureAD_AWS_Admin/me@mycompany.com",
"arn:aws:iam::123456789012:root"
],
"Service": "eks.amazonaws.com"
},
"Action": "sts:AssumeRole"
},
]
}
我已经为这个角色尝试过同样的方法,但仍然不起作用。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::123456789012:root",
"arn:aws:sts::123456789012:assumed-role/AzureAD_AWS_Admin/me@mycompany.com"
]
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "2ffd8b2c3d8edaf02104a081af4b78d82f6e770f"
}
}
}
]
}
我还为所有地区激活了 STS。
我尝试了不同的角色和用户,但由于这个假设角色,我永远无法 运行 命令。我只需要这样做即可继续我的项目(Gitlab EKS 集群集成以安装指标服务器)。
我为此苦苦挣扎了好几天,我已经尝试了堆栈溢出中的所有解决方案。
我已经解决了!
它缺少 externalId。 在这种情况下,对于这些角色,它们是使用来自第三方应用程序 (Gitlab) 的 externalId 创建的。
所以我把 --external-id
参数放在正常运行的所有东西中:
% aws sts assume-role --role-arn arn:aws:iam::123456789012:role/eksGitlabProvisionRole --external-id 2ffd4wsc3d8edaf02104a081af4b78g432f6e750f --role-session-name my_test