我正在尝试将aws-cdk基础设施部署为来自jenkins管道的代码,但它需要存储在~/.aws/credentials中的aws凭证。
为运行jenkins的服务器提供了IAM角色,该角色具有足够的权限来部署任何类型的资源。我还尝试传递环境变量,为其提供正确的区域和帐户:CDK_DEFAULT_ACCOUNT=XXX CDK_DEFAULT_REGION=us-east-2。
这是我目前的阶段
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程序化访问密钥的其他替代方案是什么?
发布于 2019-09-08 03:37:09
这是可能的。你只需要承担这个角色。下面是你怎么做的:
#!/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发布于 2021-06-25 20:58:06
您可以使用cdk cli的--role-arn参数来承担角色。
例如:
cdk deploy --role-arn arn:aws:iam::154438573167:role/jenkins-deploy-rolehttps://stackoverflow.com/questions/57794267
复制相似问题