首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以从IAM角色运行cdk命令?

是否可以从IAM角色运行cdk命令?
EN

Stack Overflow用户
提问于 2019-09-05 02:49:46
回答 2查看 3.9K关注 0票数 5

我正在尝试将aws-cdk基础设施部署为来自jenkins管道的代码,但它需要存储在~/.aws/credentials中的aws凭证。

为运行jenkins的服务器提供了IAM角色,该角色具有足够的权限来部署任何类型的资源。我还尝试传递环境变量,为其提供正确的区域和帐户:CDK_DEFAULT_ACCOUNT=XXX CDK_DEFAULT_REGION=us-east-2

这是我目前的阶段

代码语言:javascript
复制
        stage('Deploy test infrastructure') {
          container(cdkDeployContainer.getName()) {
            sh("npm install -g aws-cdk aws-cli")
            sh("cd test-infrastructure && npm install && CDK_DEFAULT_ACCOUNT=154438573167 CDK_DEFAULT_REGION=us-east-2 cdk bootstrap")
          }
        }

我收到这个错误,Unable to determine default account and/or region在使用CDK时,是否可以使用角色IAM?提供IAM程序化访问密钥的其他替代方案是什么?

EN

回答 2

Stack Overflow用户

发布于 2019-09-08 03:37:09

这是可能的。你只需要承担这个角色。下面是你怎么做的:

代码语言:javascript
复制
#!/usr/bin/env bash

export ACCOUNT_ID="154438573167"
role_arn="arn:aws:iam::${ACCOUNT_ID}:role/jenkins-deploy-role"

export AWS_DEFAULT_REGION="us-east-2"
KST=($(aws sts assume-role --role-arn "${role_arn}" --role-session-name jenkins --query '[Credentials.AccessKeyId,Credentials.SecretAccessKey,Credentials.SessionToken]' --output text))
unset AWS_SECURITY_TOKEN
export AWS_ACCESS_KEY_ID=${KST[0]}
export AWS_SECRET_ACCESS_KEY=${KST[1]}
export AWS_SESSION_TOKEN=${KST[2]}
export AWS_SECURITY_TOKEN=${KST[2]}

# Now you have assumed the role and obtained temporary credentials.
cdk bootstrap
票数 15
EN

Stack Overflow用户

发布于 2021-06-25 20:58:06

您可以使用cdk cli的--role-arn参数来承担角色。

例如:

代码语言:javascript
复制
cdk deploy --role-arn arn:aws:iam::154438573167:role/jenkins-deploy-role
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57794267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档