Как развернуть CDK с ролью AWS от Jenkins? - PullRequest
1 голос
/ 16 января 2020

Привет, я создал CDK проект с Дженкинсом. Я хочу развернуть с ролью. Например cdk развернуть с ролью. Например, в облачной информации я делал, как показано ниже.

cfn_manage deploy-stack \
  --stack-name "$CFN_CDK_STACK" \
  --template-file "cloudformation/templates/cdk.yml" \
  --parameters-file "$PARAMS_FILE" \
  --role-name infra-cfnrole-location-nonprivileged

Теперь у меня есть проект CDK, как показано ниже.

checkout scm
              withCredentials([[$class: 'AmazonWebServicesCredentialsBinding',credentialsId: "${env.PROJECT_ID}-aws-${CFN_ENVIRONMENT}"]]) {
                abc = docker.build('cdkimage', "--build-arg http_proxy=${env.http_proxy} --build-arg https_proxy=${env.https_proxy} .")
                abc.inside{
                sh 'ls -la'
                sh "bash ./scripts/build.sh"
              }

Затем внутри сборки. sh

NONPRIV_ROLE_NAME='infra-cfnrole-location-nonprivileged'
aws sts assume-role --role-arn 'arn:aws:iam::id:role/infra-cfnrole-location-nonprivileged' --role-session-name jenkins --query '[Credentials.AccessKeyId,Credentials.SecretAccessKey,Credentials.SessionToken]' --output text
cdk synth
cdk deploy

Это ошибка выдачи

An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::id:user/infra-prjauth-location is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::187628286232:role/infra-cfnrole-location-nonprivileged

Для роли cfnrole-location-nonprivileged в доверительных отношениях у меня есть политика ниже

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudformation.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

Может ли кто-нибудь помочь мне развернуть с ролью? Любая помощь будет оценена. Спасибо

1 Ответ

0 голосов
/ 16 января 2020

Думаю, проблема в том, что вы не указали своего пользователя IAM в доверительных отношениях роли IAM.

Предполагая, что эта роль имеет правильные разрешения, необходимые для развертывания CDK (см. здесь для получения дополнительной информации) необходимо разрешить пользователю IAM доступ к роли, а не к облачной информации . Cloudformation уже имеет доступ к ресурсам вашей учетной записи.

Я думаю, что эта версия политики доверительных отношений должна помочь:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Resource": "<full ARN of the relevant user>",
      "Action": "sts:AssumeRole"
    }
  ]
}

Дайте мне знать, если она работает!

...