@@ -8,63 +8,63 @@ parameters:
88 type : string
99
1010steps :
11- - template : " azure/components/aws-clean-config.yml@common"
11+ - template : " azure/components/aws-clean-config.yml@common"
1212
13- - bash : |
14- set -e
15- echo "##vso[task.setvariable variable=ROLE]${{ parameters.role }}"
16- echo "##vso[task.setvariable variable=AWS_ACCOUNT_ID]${{ parameters.aws_account_id }}"
17- displayName: get imms role name
18- - bash : |
19- set -e
20- aws_role="$(ROLE)"
21- echo "assume role: '${aws_role}'"
22- echo "account_id: $(AWS_ACCOUNT_ID)"
23-
24- aws_role="arn:aws:iam::${account_id}:role/${aws_role}"
25- echo "AWS role: $aws_role"
26-
27- echo "Check if role exists"
28- # iam synchronisation issues can take a few to make the role appear
29- for i in {1..15}; do
30- if aws iam get-role --role-name ${aws_role} > /dev/null; then
31- echo role exists
32- sleep 2
33- break
34- fi
35- echo waiting for role ...
13+ - bash : |
14+ set -e
15+ echo "##vso[task.setvariable variable=ROLE]${{ parameters.role }}"
16+ echo "##vso[task.setvariable variable=AWS_ACCOUNT_ID]${{ parameters.aws_account_id }}"
17+ displayName: get imms role name
18+ - bash : |
19+ set -e
20+ aws_role="$(ROLE)"
21+ echo "assume role: '${aws_role}'"
22+ echo "account_id: $(AWS_ACCOUNT_ID)"
23+
24+ aws_role="arn:aws:iam::${account_id}:role/${aws_role}"
25+ echo "AWS role: $aws_role"
26+
27+ echo "Check if role exists"
28+ # iam synchronisation issues can take a few to make the role appear
29+ for i in {1..15}; do
30+ if aws iam get-role --role-name ${aws_role} > /dev/null; then
31+ echo role exists
3632 sleep 2
37- done
38- account_id="$(aws sts get-caller-identity --query Account --output text)"
39- aws_role="arn:aws:iam::${account_id}:role/${aws_role}"
40-
41- cp ~/.aws/config.default ~/.aws/config
42- tmp_file="$(Agent.TempDirectory)/.aws.tmp.creds.json"
43- # add some backoff to allow for eventual consistency of IAM
44- for i in {2..4};
45- do
46- if aws sts assume-role --role-arn "${aws_role}" --role-session-name build-assume-role > ${tmp_file}; then
47- echo assumed role
48- assumed_role="yes"
49- break
50- fi
51- let "sleep_for=$i*10";
52- sleep $sleep_for
53- done
54- if [[ "${assumed_role}" != "yes" ]]; then
55- echo "assume role failed"
56- exit -1
33+ break
5734 fi
58- echo "aws_access_key_id = $(jq -r .Credentials.AccessKeyId ${tmp_file})" >> ~/.aws/config
59- echo "aws_secret_access_key = $(jq -r .Credentials.SecretAccessKey ${tmp_file})" >> ~/.aws/config
60- echo "aws_session_token = $(jq -r .Credentials.SessionToken ${tmp_file})" >> ~/.aws/config
61- expiry=$(jq -r .Credentials.Expiration ${tmp_file})
62- echo "##vso[task.setvariable variable=ASSUME_ROLE_EXPIRY;]$expiry"
63- rm ${tmp_file}
64- profile="${{ parameters.profile }}"
65- if [[ ! -z "${profile}" ]]; then
66- echo as profile ${profile}
67- sed -i "s#\[default\]#\[profile ${profile}\]#" ~/.aws/config
68- fi
69- displayName : assume role
70- condition : and(succeeded(), ne(variables['ROLE'], ''))
35+ echo waiting for role ...
36+ sleep 2
37+ done
38+ account_id="$(aws sts get-caller-identity --query Account --output text)"
39+ aws_role="arn:aws:iam::${account_id}:role/${aws_role}"
40+
41+ cp ~/.aws/config.default ~/.aws/config
42+ tmp_file="$(Agent.TempDirectory)/.aws.tmp.creds.json"
43+ # add some backoff to allow for eventual consistency of IAM
44+ for i in {2..4};
45+ do
46+ if aws sts assume-role --role-arn "${aws_role}" --role-session-name build-assume-role > ${tmp_file}; then
47+ echo assumed role
48+ assumed_role="yes"
49+ break
50+ fi
51+ let "sleep_for=$i*10";
52+ sleep $sleep_for
53+ done
54+ if [[ "${assumed_role}" != "yes" ]]; then
55+ echo "assume role failed"
56+ exit -1
57+ fi
58+ echo "aws_access_key_id = $(jq -r .Credentials.AccessKeyId ${tmp_file})" >> ~/.aws/config
59+ echo "aws_secret_access_key = $(jq -r .Credentials.SecretAccessKey ${tmp_file})" >> ~/.aws/config
60+ echo "aws_session_token = $(jq -r .Credentials.SessionToken ${tmp_file})" >> ~/.aws/config
61+ expiry=$(jq -r .Credentials.Expiration ${tmp_file})
62+ echo "##vso[task.setvariable variable=ASSUME_ROLE_EXPIRY;]$expiry"
63+ rm ${tmp_file}
64+ profile="${{ parameters.profile }}"
65+ if [[ ! -z "${profile}" ]]; then
66+ echo as profile ${profile}
67+ sed -i "s#\[default\]#\[profile ${profile}\]#" ~/.aws/config
68+ fi
69+ displayName: assume role
70+ condition: and(succeeded(), ne(variables['ROLE'], ''))
0 commit comments