Gui*_*tte 5 amazon-web-services typescript aws-cdk
我正在尝试将 aws-cdk 基础设施部署为来自 jenkins 管道的代码,但它需要将 aws 凭据存储在~/.aws/credentials.
为运行 jenkins 的服务器提供了一个 IAM 角色,该角色具有足够的权限来部署任何类型的资源。我还尝试传递 env 变量以为其提供正确的区域和帐户: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")
}
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误Unable to determine default account and/or region是否可以在使用 CDK 时使用角色 IAM?提供 IAM 编程访问密钥的其他替代方法是什么?
0x3*_*dfb 15
有可能的。你只需要承担这个角色。您可以这样做:
#!/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
Run Code Online (Sandbox Code Playgroud)
您可以使用--role-arncdk cli 的参数来承担角色。
例如:
cdk deploy --role-arn arn:aws:iam::01234567890:role/jenkins-deploy-role
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3556 次 |
| 最近记录: |