Hi,
Using the pipe with ROLE_ARN does not seem to work when using 2 different accounts.
- pipe: atlassian/aws-cloudformation-deploy:0.10.0
variables:
STACK_NAME: $SERVICE-$BITBUCKET_DEPLOYMENT_ENVIRONMENT
ROLE_ARN: arn:aws:iam::$AWS_ACCOUNT_ID:role/Deployment
AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID_V2
AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY_V2
The AWS_ACCESS_KEY_ID_V2 & AWS_SECRET_ACCESS_KEY_V2 are credentials of a IAM User that is defined in Account A but can assume the Deployment Role in account B where the deployment needs to happen. However this does not work.
Error below for the stack being deployed first time in Account B.
<span>INFO: <br>Using default authentication with AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY.</span><span>INFO: Found credentials in environment variables.</span><span>INFO: <br>Using stack template from template.yml for deploy.</span><span>INFO: Validating the template.</span><span>INFO: Updating the stack for notebook-dev.</span><span>ERROR: <br>Failed to get information about stack notebook-dev.<br></span><span>An error occurred (ValidationError) when calling the DescribeStacks operation: Stack with id notebook-dev does not exist</span><span>✖ <br>Failed to update the stack.</span><span>An error occurred (AccessDenied) when calling the UpdateStack operation: Cross-account pass role is not allowed.</span><span>Status: Downloaded newer image for bitbucketpipelines/aws-cloudformation-deploy:0.10.0</span>
It could be possible that the AWS_ACCESS_KEY_ID & AWS_SECRET_ACCESS_KEY variables are not being used properly as the default environment variables in Bitbucket environment is for another account C where user cannot assume role.
The following configuration works without using the pipe -
- export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID_V2
- export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY_V2
- aws s3 cp s3://$GROUP_V2/deploymentArchives/$SERVICE/$BITBUCKET_BUILD_NUMBER/template.yml .
- eval $(aws sts assume-role --role-arn arn:aws:iam::$AWS_ACCOUNT_ID:role/Deployment --role-session-name Bitbucket | jq -r '.Credentials | "export AWS_ACCESS_KEY_ID=\(.AccessKeyId)\nexport AWS_SECRET_ACCESS_KEY=\(.SecretAccessKey)\nexport AWS_SESSION_TOKEN=\(.SessionToken)\n"')
- >
aws cloudformation deploy \
--stack-name $SERVICE-$BITBUCKET_DEPLOYMENT_ENVIRONMENT \
--template-file template.yml \
--capabilities CAPABILITY_NAMED_IAM CAPABILITY_IAM CAPABILITY_AUTO_EXPAND \
--parameter-overrides \
AppId=$SERVICE \
BuildNumber=$BITBUCKET_BUILD_NUMBER \
Environment=$BITBUCKET_DEPLOYMENT_ENVIRONMENT \
Group=$GROUP_V2 \
--tags \
AppID=$SERVICE \
BuildNumber=$BITBUCKET_BUILD_NUMBER \
Environment=$BITBUCKET_DEPLOYMENT_ENVIRONMENT \
Branch=$BITBUCKET_BRANCH \
Name=$SERVICE-$BITBUCKET_DEPLOYMENT_ENVIRONMENT \
Project=$GROUP_V2 \
Immutable=True
Expected behavior should be like this pipe where a similar configuration works.
https://bitbucket.org/sightsoundtheatres/aws-cdk-deploy/src/master/