簡體   English   中英

是否可以從 IAM 角色運行 cdk 命令?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM