[英]Is it possible to run cdk commands from an IAM role?
我正在嘗試將 aws-cdk 基礎設施部署為 jenkins 管道中的代碼,但它需要存儲在~/.aws/credentials
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")
}
}
我收到此錯誤Unable to determine default account and/or region
是否可以在使用 CDK 時使用角色 IAM? 提供 IAM 編程訪問密鑰的其他替代方法是什么?
有可能的。 你只需要承擔這個角色。 您可以這樣做:
#!/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
您可以使用 cdk cli 的--role-arn
參數來承擔角色。
例如:
cdk deploy --role-arn arn:aws:iam::154438573167:role/jenkins-deploy-role
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.