[英]AWS CDK deploy using role
您可以在此处找到可用于复制我的问题的 cdk 应用程序varvay/issue-replication.git 。 README
中解释的使用说明
我需要通过发出此命令使用角色部署 CDK 应用程序
cdk -r arn:aws:iam::000000000000:role/fooRole deploy
但随后抛出错误
Assuming role failed: User: arn:aws:iam::000000000000:user/fooUser is not authorized to
perform: sts:AssumeRole on resource: arn:aws:iam::000000000000:role/barRole
可以肯定的是,我尝试通过在 AWS IAM 策略模拟器中使用arn:aws:iam::000000000000:role/fooRole
假设arn:aws:iam::000000000000:role/barRole
角色来模拟它,它工作得很好。 困扰我的一件事是错误表示User
试图承担角色,而不是Role
。
这是为什么? 或者我应该假设fooRole
,更新与 AWS 相关的环境变量然后部署? 如果是这样,那么在cdk
上使用-r
选项有什么意义
作为附加信息,这里是barRole
的信任关系
{
"Version": "2008-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam:: 000000000000:root"
},
"Action": "sts:AssumeRole"
}
]
}
我什至还尝试将AdministratorAccess
AWS 托管策略附加到用于部署的fooRole
因此,您可以通过两种方式运行cdk deploy
命令。
1- 您正在使用 IAM 密钥从本地计算机的 CLI 运行此命令。 在这种情况下,此角色必须可由所使用的 AWS 账户(IAM 用户)担任。
2-您正在从任何 AWS 服务(例如 EC2 实例上的 cicd 代理)运行此命令,然后应允许与实例关联的角色承担此部署角色。
提及您如何运行此命令,您可能会得到更好的答案。
更新:基于更新的问题:
在您的 IAM USER 中添加assume role
部分,而不是您的部署角色。 应允许您尝试部署的 IAM 用户担任部署 CDK 的角色。
稍微图解一下:
(IAM-USER -> Assume -> Role) -> cdk deploy
如您的错误消息中所写,错误是在跨帐户角色访问的过程中。
我假设您从一个账户的 AWS 配置开始,我们称之为“配置”,然后您需要根据分支或其他东西在不同的账户(开发或产品)中担任角色?
我在设置跨账户角色时闻到了错误。 https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html
一种可能性是:您想假设的 Rolle 没有您的配置帐户作为受信任的实体。
另一个是:试图承担角色的用户没有相应的政策。
只需按照 AWS 的教程,看看您的设置中缺少什么 :)
我通过创建 bash 脚本来切换到目标角色并使用凭据执行 CDK 命令来满足我的需求,如下所示,
#!/bin/bash
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset AWS_SESSION_TOKEN
AWS_CREDENTIAL=$(aws sts assume-role \
--role-arn <destination role ARN> \
--role-session-name <role session name> \
--duration-seconds 3600)
export AWS_ACCESS_KEY_ID=$(echo $AWS_CREDENTIAL \
| jq -r '.Credentials''.AccessKeyId')
export AWS_SECRET_ACCESS_KEY=$(echo $AWS_CREDENTIAL \
| jq -r '.Credentials''.SecretAccessKey')
export AWS_SESSION_TOKEN=$(echo $AWS_CREDENTIAL \
| jq -r '.Credentials''.SessionToken')
cdk deploy
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset AWS_SESSION_TOKEN
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.