Можно ли запускать команды cdk из роли IAM?

Я пытаюсь развернуть инфраструктуру 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")
          }
        }

Я получаю эту ошибку Unable to determine default account and/or region Можно ли использовать роль IAM при использовании CDK? каковы другие альтернативы предоставлению программного ключа доступа IAM?


person Guillaume Bibeau-Laviolette    schedule 04.09.2019    source источник


Ответы (2)


Возможно. Вам просто нужно взять на себя роль. Вот как это сделать:

#!/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
person 0x32e0edfb    schedule 07.09.2019

Вы можете использовать параметр --role-arn в cdk cli, чтобы взять на себя роль.

Например:

cdk deploy --role-arn arn:aws:iam::154438573167:role/jenkins-deploy-role
person Vincent Claes    schedule 25.06.2021