Skip to content

Commit 3e5a75f

Browse files
chore: github workflows to use OIDC to assume IAM role (#457)
1 parent 7ef752c commit 3e5a75f

5 files changed

Lines changed: 60 additions & 94 deletions

File tree

.github/workflows/aurora_performance.yml

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ name: Aurora Performance Tests
33
on:
44
workflow_dispatch:
55

6+
permissions:
7+
id-token: write # This is required for requesting the JWT
8+
contents: read # This is required for actions/checkout
9+
610
jobs:
711
run-integration-tests:
812
strategy:
@@ -31,34 +35,23 @@ jobs:
3135
run: npm install --no-save
3236

3337
- name: Configure AWS Credentials
38+
id: creds
3439
uses: aws-actions/configure-aws-credentials@v4
3540
with:
36-
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
37-
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
41+
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_DEPLOY_ROLE }}
42+
role-session-name: nodejs_aurora_perf_tests
43+
role-duration-seconds: 21600
3844
aws-region: ${{ secrets.AWS_DEFAULT_REGION }}
39-
40-
- name: Set up Temp AWS Credentials
41-
run: |
42-
creds=($(aws sts get-session-token \
43-
--duration-seconds 21600 \
44-
--query 'Credentials.[AccessKeyId, SecretAccessKey, SessionToken]' \
45-
--output text \
46-
| xargs));
47-
echo "::add-mask::${creds[0]}"
48-
echo "::add-mask::${creds[1]}"
49-
echo "::add-mask::${creds[2]}"
50-
echo "TEMP_AWS_ACCESS_KEY_ID=${creds[0]}" >> $GITHUB_ENV
51-
echo "TEMP_AWS_SECRET_ACCESS_KEY=${creds[1]}" >> $GITHUB_ENV
52-
echo "TEMP_AWS_SESSION_TOKEN=${creds[2]}" >> $GITHUB_ENV
45+
output-credentials: true
5346

5447
- name: Run Integration Tests
5548
run: |
5649
./gradlew --no-parallel --no-daemon test-aurora-${{ matrix.db }}-performance --info
5750
env:
5851
RDS_DB_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
59-
AWS_ACCESS_KEY_ID: ${{ env.TEMP_AWS_ACCESS_KEY_ID }}
60-
AWS_SECRET_ACCESS_KEY: ${{ env.TEMP_AWS_SECRET_ACCESS_KEY }}
61-
AWS_SESSION_TOKEN: ${{ env.TEMP_AWS_SESSION_TOKEN }}
52+
AWS_ACCESS_KEY_ID: ${{ steps.creds.outputs.aws-access-key-id }}
53+
AWS_SECRET_ACCESS_KEY: ${{ steps.creds.outputs.aws-secret-access-key }}
54+
AWS_SESSION_TOKEN: ${{ steps.creds.outputs.aws-session-token }}
6255
NUM_INSTANCES: 5
6356
AURORA_MYSQL_DB_ENGINE_VERSION: "default"
6457
AURORA_PG_DB_ENGINE_VERSION: "default"

.github/workflows/integration_tests.yml

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ on:
1414
- "ISSUE_TEMPLATE/**"
1515
- "**/remove-old-artifacts.yml"
1616

17+
permissions:
18+
id-token: write # This is required for requesting the JWT
19+
contents: read # This is required for actions/checkout
20+
1721
jobs:
1822
run-integration-tests:
1923
name: Run Integration Tests with Default
@@ -39,34 +43,23 @@ jobs:
3943
run: npm install --no-save
4044

4145
- name: Configure AWS Credentials
46+
id: creds
4247
uses: aws-actions/configure-aws-credentials@v4
4348
with:
44-
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
45-
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
49+
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_DEPLOY_ROLE }}
50+
role-session-name: nodejs_int_default_tests
51+
role-duration-seconds: 21600
4652
aws-region: ${{ secrets.AWS_DEFAULT_REGION }}
47-
48-
- name: Set up Temp AWS Credentials
49-
run: |
50-
creds=($(aws sts get-session-token \
51-
--duration-seconds 21600 \
52-
--query 'Credentials.[AccessKeyId, SecretAccessKey, SessionToken]' \
53-
--output text \
54-
| xargs));
55-
echo "::add-mask::${creds[0]}"
56-
echo "::add-mask::${creds[1]}"
57-
echo "::add-mask::${creds[2]}"
58-
echo "TEMP_AWS_ACCESS_KEY_ID=${creds[0]}" >> $GITHUB_ENV
59-
echo "TEMP_AWS_SECRET_ACCESS_KEY=${creds[1]}" >> $GITHUB_ENV
60-
echo "TEMP_AWS_SESSION_TOKEN=${creds[2]}" >> $GITHUB_ENV
53+
output-credentials: true
6154

6255
- name: Run Integration Tests
6356
run: |
6457
./gradlew --no-parallel --no-daemon test-aurora-${{ matrix.dbEngine }} --info
6558
env:
6659
RDS_DB_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
67-
AWS_ACCESS_KEY_ID: ${{ env.TEMP_AWS_ACCESS_KEY_ID }}
68-
AWS_SECRET_ACCESS_KEY: ${{ env.TEMP_AWS_SECRET_ACCESS_KEY }}
69-
AWS_SESSION_TOKEN: ${{ env.TEMP_AWS_SESSION_TOKEN }}
60+
AWS_ACCESS_KEY_ID: ${{ steps.creds.outputs.aws-access-key-id }}
61+
AWS_SECRET_ACCESS_KEY: ${{ steps.creds.outputs.aws-secret-access-key }}
62+
AWS_SESSION_TOKEN: ${{ steps.creds.outputs.aws-session-token }}
7063
AURORA_MYSQL_DB_ENGINE_VERSION: "default"
7164
AURORA_PG_DB_ENGINE_VERSION: "default"
7265

.github/workflows/integration_tests_latest.yml

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ on:
1414
- "ISSUE_TEMPLATE/**"
1515
- "**/remove-old-artifacts.yml"
1616

17+
permissions:
18+
id-token: write # This is required for requesting the JWT
19+
contents: read # This is required for actions/checkout
20+
1721
jobs:
1822
run-integration-tests:
1923
name: Run Integration Tests with Latest
@@ -42,34 +46,23 @@ jobs:
4246
run: npm install --no-save
4347

4448
- name: Configure AWS Credentials
49+
id: creds
4550
uses: aws-actions/configure-aws-credentials@v4
4651
with:
47-
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
48-
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
52+
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_DEPLOY_ROLE }}
53+
role-session-name: nodejs_int_latest_tests
54+
role-duration-seconds: 21600
4955
aws-region: ${{ secrets.AWS_DEFAULT_REGION }}
50-
51-
- name: Set up Temp AWS Credentials
52-
run: |
53-
creds=($(aws sts get-session-token \
54-
--duration-seconds 21600 \
55-
--query 'Credentials.[AccessKeyId, SecretAccessKey, SessionToken]' \
56-
--output text \
57-
| xargs));
58-
echo "::add-mask::${creds[0]}"
59-
echo "::add-mask::${creds[1]}"
60-
echo "::add-mask::${creds[2]}"
61-
echo "TEMP_AWS_ACCESS_KEY_ID=${creds[0]}" >> $GITHUB_ENV
62-
echo "TEMP_AWS_SECRET_ACCESS_KEY=${creds[1]}" >> $GITHUB_ENV
63-
echo "TEMP_AWS_SESSION_TOKEN=${creds[2]}" >> $GITHUB_ENV
56+
output-credentials: true
6457

6558
- name: Run Integration Tests
6659
run: |
6760
./gradlew --no-parallel --no-daemon test-aurora-${{ matrix.dbEngine }} --info
6861
env:
6962
RDS_DB_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
70-
AWS_ACCESS_KEY_ID: ${{ env.TEMP_AWS_ACCESS_KEY_ID }}
71-
AWS_SECRET_ACCESS_KEY: ${{ env.TEMP_AWS_SECRET_ACCESS_KEY }}
72-
AWS_SESSION_TOKEN: ${{ env.TEMP_AWS_SESSION_TOKEN }}
63+
AWS_ACCESS_KEY_ID: ${{ steps.creds.outputs.aws-access-key-id }}
64+
AWS_SECRET_ACCESS_KEY: ${{ steps.creds.outputs.aws-secret-access-key }}
65+
AWS_SESSION_TOKEN: ${{ steps.creds.outputs.aws-session-token }}
7366
AURORA_MYSQL_DB_ENGINE_VERSION: "latest"
7467
AURORA_PG_DB_ENGINE_VERSION: "latest"
7568

.github/workflows/multi_az_integration_tests.yml

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ on:
1414
- "ISSUE_TEMPLATE/**"
1515
- "**/remove-old-artifacts.yml"
1616

17+
permissions:
18+
id-token: write # This is required for requesting the JWT
19+
contents: read # This is required for actions/checkout
20+
1721
jobs:
1822
run-integration-tests:
1923
name: Run Integration Tests
@@ -39,34 +43,23 @@ jobs:
3943
run: npm install --no-save
4044

4145
- name: Configure AWS Credentials
46+
id: creds
4247
uses: aws-actions/configure-aws-credentials@v4
4348
with:
44-
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
45-
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
49+
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_DEPLOY_ROLE }}
50+
role-session-name: nodejs_multiaz_int_tests
51+
role-duration-seconds: 21600
4652
aws-region: ${{ secrets.AWS_DEFAULT_REGION }}
47-
48-
- name: Set up Temp AWS Credentials
49-
run: |
50-
creds=($(aws sts get-session-token \
51-
--duration-seconds 21600 \
52-
--query 'Credentials.[AccessKeyId, SecretAccessKey, SessionToken]' \
53-
--output text \
54-
| xargs));
55-
echo "::add-mask::${creds[0]}"
56-
echo "::add-mask::${creds[1]}"
57-
echo "::add-mask::${creds[2]}"
58-
echo "TEMP_AWS_ACCESS_KEY_ID=${creds[0]}" >> $GITHUB_ENV
59-
echo "TEMP_AWS_SECRET_ACCESS_KEY=${creds[1]}" >> $GITHUB_ENV
60-
echo "TEMP_AWS_SESSION_TOKEN=${creds[2]}" >> $GITHUB_ENV
53+
output-credentials: true
6154

6255
- name: Run Integration Tests
6356
run: |
6457
./gradlew --no-parallel --no-daemon test-${{ matrix.dbEngine }} --info
6558
env:
6659
RDS_DB_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
67-
AWS_ACCESS_KEY_ID: ${{ env.TEMP_AWS_ACCESS_KEY_ID }}
68-
AWS_SECRET_ACCESS_KEY: ${{ env.TEMP_AWS_SECRET_ACCESS_KEY }}
69-
AWS_SESSION_TOKEN: ${{ env.TEMP_AWS_SESSION_TOKEN }}
60+
AWS_ACCESS_KEY_ID: ${{ steps.creds.outputs.aws-access-key-id }}
61+
AWS_SECRET_ACCESS_KEY: ${{ steps.creds.outputs.aws-secret-access-key }}
62+
AWS_SESSION_TOKEN: ${{ steps.creds.outputs.aws-session-token }}
7063
RDS_MYSQL_DB_ENGINE_VERSION: "default"
7164
RDS_PG_DB_ENGINE_VERSION: "default"
7265

.github/workflows/run-autoscaling-tests.yml

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ name: Run Autoscaling Tests
33
on:
44
workflow_dispatch:
55

6+
permissions:
7+
id-token: write # This is required for requesting the JWT
8+
contents: read # This is required for actions/checkout
9+
610
concurrency:
711
group: ${{ github.workflow }}-${{ github.ref }}
812
cancel-in-progress: true
@@ -30,32 +34,22 @@ jobs:
3034
with:
3135
node-version: "20.x"
3236
- name: Configure AWS credentials
37+
id: creds
3338
uses: aws-actions/configure-aws-credentials@v4
3439
with:
35-
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
36-
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
40+
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_DEPLOY_ROLE }}
41+
role-session-name: nodejs_autoscaling_tests
42+
role-duration-seconds: 21600
3743
aws-region: ${{ secrets.AWS_DEFAULT_REGION }}
38-
- name: Set up Temp AWS Credentials
39-
run: |
40-
creds=($(aws sts get-session-token \
41-
--duration-seconds 21600 \
42-
--query 'Credentials.[AccessKeyId, SecretAccessKey, SessionToken]' \
43-
--output text \
44-
| xargs));
45-
echo "::add-mask::${creds[0]}"
46-
echo "::add-mask::${creds[1]}"
47-
echo "::add-mask::${creds[2]}"
48-
echo "TEMP_AWS_ACCESS_KEY_ID=${creds[0]}" >> $GITHUB_ENV
49-
echo "TEMP_AWS_SECRET_ACCESS_KEY=${creds[1]}" >> $GITHUB_ENV
50-
echo "TEMP_AWS_SESSION_TOKEN=${creds[2]}" >> $GITHUB_ENV
44+
output-credentials: true
5145
- name: Run integration tests
5246
run: |
5347
./gradlew --no-parallel --no-daemon test-autoscaling-${{ matrix.dbEngine }} --info
5448
env:
5549
RDS_DB_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
56-
AWS_ACCESS_KEY_ID: ${{ env.TEMP_AWS_ACCESS_KEY_ID }}
57-
AWS_SECRET_ACCESS_KEY: ${{ env.TEMP_AWS_SECRET_ACCESS_KEY }}
58-
AWS_SESSION_TOKEN: ${{ env.TEMP_AWS_SESSION_TOKEN }}
50+
AWS_ACCESS_KEY_ID: ${{ steps.creds.outputs.aws-access-key-id }}
51+
AWS_SECRET_ACCESS_KEY: ${{ steps.creds.outputs.aws-secret-access-key }}
52+
AWS_SESSION_TOKEN: ${{ steps.creds.outputs.aws-session-token }}
5953
NUM_INSTANCES: 5
6054
AURORA_MYSQL_DB_ENGINE_VERSION: "default"
6155
AURORA_PG_DB_ENGINE_VERSION: "default"

0 commit comments

Comments
 (0)