Compare commits

...

45 Commits

Author SHA1 Message Date
peterwoodworth 27bc1c5cc5 chore: run using node20 2023-09-08 14:13:04 -07:00
Peter Woodworth 50ac8dd1e1 chore: release v3.0.2 (#836) 2023-09-07 13:32:01 -07:00
dependabot[bot] a2593d09d1 chore: Bump @vercel/ncc from 0.36.1 to 0.38.0 (#834)
Bumps [@vercel/ncc](https://github.com/vercel/ncc) from 0.36.1 to 0.38.0.
- [Release notes](https://github.com/vercel/ncc/releases)
- [Commits](https://github.com/vercel/ncc/compare/0.36.1...0.38.0)

---
updated-dependencies:
- dependency-name: "@vercel/ncc"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-06 16:50:24 +00:00
dependabot[bot] 7a8dec84bd chore: Bump jest and @types/jest (#832)
Bumps [jest](https://github.com/jestjs/jest/tree/HEAD/packages/jest) and [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest). These dependencies needed to be updated together.

Updates `jest` from 29.6.2 to 29.6.4
- [Release notes](https://github.com/jestjs/jest/releases)
- [Changelog](https://github.com/jestjs/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jestjs/jest/commits/v29.6.4/packages/jest)

Updates `@types/jest` from 29.5.3 to 29.5.4
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
- dependency-name: "@types/jest"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-06 00:34:02 +00:00
dependabot[bot] 2b89f8a0da chore: Bump @vercel/ncc from 0.34.0 to 0.36.1 (#830)
Bumps [@vercel/ncc](https://github.com/vercel/ncc) from 0.34.0 to 0.36.1.
- [Release notes](https://github.com/vercel/ncc/releases)
- [Commits](https://github.com/vercel/ncc/compare/0.34.0...0.36.1)

---
updated-dependencies:
- dependency-name: "@vercel/ncc"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2023-09-06 00:26:40 +00:00
dependabot[bot] 6488aec6e7 chore: Bump @jest/globals from 29.6.2 to 29.6.4 (#829)
Bumps [@jest/globals](https://github.com/jestjs/jest/tree/HEAD/packages/jest-globals) from 29.6.2 to 29.6.4.
- [Release notes](https://github.com/jestjs/jest/releases)
- [Changelog](https://github.com/jestjs/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jestjs/jest/commits/v29.6.4/packages/jest-globals)

---
updated-dependencies:
- dependency-name: "@jest/globals"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2023-09-06 00:24:41 +00:00
dependabot[bot] 856a411d27 chore: Bump jest-junit from 13.2.0 to 16.0.0 (#828)
Bumps [jest-junit](https://github.com/jest-community/jest-junit) from 13.2.0 to 16.0.0.
- [Release notes](https://github.com/jest-community/jest-junit/releases)
- [Commits](https://github.com/jest-community/jest-junit/compare/v13.2.0...v16.0.0)

---
updated-dependencies:
- dependency-name: jest-junit
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2023-09-06 00:19:53 +00:00
dependabot[bot] 7e7ee94419 chore: Bump @types/node from 14.18.54 to 20.5.9 (#827)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.18.54 to 20.5.9.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-06 00:17:07 +00:00
GitHub Actions 8ad39aa824 chore: Update dist 2023-09-06 00:09:30 +00:00
dependabot[bot] 2014030530 chore: Bump @typescript-eslint/eslint-plugin from 5.62.0 to 6.6.0 (#825)
* chore: Bump @typescript-eslint/eslint-plugin from 5.62.0 to 6.6.0

Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.62.0 to 6.6.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.6.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: fix dependency tree updates

* fix: prevent eslint major version upgrade for node 14 compat

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tom Keller <1083460+kellertk@users.noreply.github.com>
Co-authored-by: Tom Keller <kellertk@amazon.com>
2023-09-06 00:08:11 +00:00
dependabot[bot] 3aeb7ba662 chore: Bump prettier from 2.8.8 to 3.0.3 (#824)
* chore: Bump prettier from 2.8.8 to 3.0.3

Bumps [prettier](https://github.com/prettier/prettier) from 2.8.8 to 3.0.3.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.8.8...3.0.3)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: fix prettier major version incompatibility

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tom Keller <kellertk@amazon.com>
2023-09-05 23:46:16 +00:00
dependabot[bot] 3994f1aeae chore: Bump del-cli from 5.0.0 to 5.1.0 (#823)
Bumps [del-cli](https://github.com/sindresorhus/del-cli) from 5.0.0 to 5.1.0.
- [Release notes](https://github.com/sindresorhus/del-cli/releases)
- [Commits](https://github.com/sindresorhus/del-cli/compare/v5.0.0...v5.1.0)

---
updated-dependencies:
- dependency-name: del-cli
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2023-09-05 22:07:06 +00:00
dependabot[bot] a3412312b9 chore: Bump typescript from 4.9.5 to 5.2.2 (#816)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.9.5 to 5.2.2.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v4.9.5...v5.2.2)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2023-09-05 22:04:41 +00:00
dependabot[bot] ef2571b57d chore: Bump aws-sdk-client-mock from 2.2.0 to 3.0.0 (#808)
Bumps [aws-sdk-client-mock](https://github.com/m-radzikowski/aws-sdk-client-mock) from 2.2.0 to 3.0.0.
- [Release notes](https://github.com/m-radzikowski/aws-sdk-client-mock/releases)
- [Changelog](https://github.com/m-radzikowski/aws-sdk-client-mock/blob/main/CHANGELOG.md)
- [Commits](https://github.com/m-radzikowski/aws-sdk-client-mock/compare/v2.2.0...v3.0.0)

---
updated-dependencies:
- dependency-name: aws-sdk-client-mock
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tom Keller <1083460+kellertk@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2023-09-05 22:02:21 +00:00
GitHub Actions 8e373defe9 chore: Update dist 2023-09-05 21:59:32 +00:00
dependabot[bot] 9555344752 chore: Bump @aws-sdk/client-sts from 3.391.0 to 3.405.0 (#822)
Bumps [@aws-sdk/client-sts](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-sts) from 3.391.0 to 3.405.0.
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/clients/client-sts/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.405.0/clients/client-sts)

---
updated-dependencies:
- dependency-name: "@aws-sdk/client-sts"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2023-09-05 21:58:34 +00:00
dependabot[bot] 72f2c7b9a3 chore: Bump eslint-config-prettier from 8.10.0 to 9.0.0 (#810)
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 8.10.0 to 9.0.0.
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v8.10.0...v9.0.0)

---
updated-dependencies:
- dependency-name: eslint-config-prettier
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2023-09-05 21:56:23 +00:00
dependabot[bot] b0cb02aa90 chore: Bump eslint-plugin-import from 2.28.0 to 2.28.1 (#809)
Bumps [eslint-plugin-import](https://github.com/import-js/eslint-plugin-import) from 2.28.0 to 2.28.1.
- [Release notes](https://github.com/import-js/eslint-plugin-import/releases)
- [Changelog](https://github.com/import-js/eslint-plugin-import/blob/main/CHANGELOG.md)
- [Commits](https://github.com/import-js/eslint-plugin-import/compare/v2.28.0...v2.28.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-import
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2023-09-05 21:54:28 +00:00
dependabot[bot] 7bac5f98a7 chore: Bump eslint from 8.47.0 to 8.48.0 (#807)
Bumps [eslint](https://github.com/eslint/eslint) from 8.47.0 to 8.48.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.47.0...v8.48.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2023-09-05 21:52:27 +00:00
Tom Keller 922470e4ee chore: update Mergify queue rules 2023-09-05 14:48:45 -07:00
Tom Keller d3c2317d0a chore: enumerate all unit tests 2023-09-05 14:41:51 -07:00
Tom Keller f0ede74cf3 chore: update check-success 2023-09-05 14:36:07 -07:00
Tom Keller 8afcd6259e chore: update unit test title 2023-09-05 14:29:59 -07:00
Yukiya Hayashi A.k.a morihaya 84a8fd5e77 fix typo "odic" to "oidc" (#820)
Noticed a typo where "oidc" was mistakenly written as "odic". This typo was present in both the documentation and a certain file name.

Co-authored-by: Tom Keller <1083460+kellertk@users.noreply.github.com>
2023-09-05 14:28:45 -07:00
Peter Woodworth d78f55b1db fix: validation logic throwing unwanted errors (#818)
* fix: throws error even when valid credentials are present

* fix: throws error when invalid credentials are present despite not wanting to use them
2023-09-05 14:19:05 -07:00
Peter Woodworth 6c962b9fd3 chore: add stale issue bot (#806) 2023-08-25 14:48:36 -07:00
Peter Woodworth 14b6c355ca chore: fix packaging workflow (#805)
* fix: token permission in package workflow conflicting with unit tests

* change secret arn and role to assume in package workflow

---------

Co-authored-by: Tom Keller <1083460+kellertk@users.noreply.github.com>
2023-08-25 13:35:09 -07:00
Tom Keller 22617f9706 Merge pull request #804 from aws-actions/kellertk-patch-1
chore: wording change to closed issue message
2023-08-25 13:06:16 -07:00
Tom Keller 622237c36a chore: wording change to closed issue message 2023-08-25 12:53:54 -07:00
Tom Keller 014a5f9adc Merge pull request #803 from j1mmie/j1mmie/incorrect-audience-in-readme
chore: change sts.amazon.com to sts.amazonaws.com in README.md
2023-08-25 12:51:25 -07:00
Tom Keller 44cffa5fa8 Merge pull request #802 from mhemani-reach/main
fix: Update README.md
2023-08-25 11:37:06 -07:00
Mujahid Hemani 19f0360930 Update README.md
fix link to changelog.md
2023-08-25 13:55:12 -04:00
Tom Keller fd194eccd1 Merge pull request #799 from massongit/massongit-patch-1
fix: Fix NEWS in README
2023-08-25 09:44:03 -07:00
Masaya Suzuki 7f32242eff doc: Fix NEWS 2023-08-25 13:03:26 +09:00
Jimmie Tyrrell 7e430f7278 Change sts.amazon.com to sts.amazonaws.com in README.md
Small typo that caused a major headache
2023-08-24 16:18:43 -07:00
Tom Keller 04b98b3f9e Merge pull request #798 from aws-actions/kellertk-patch-1
chore: CHANGELOG.md for 3.0.1
2023-08-24 14:50:12 -07:00
peterwoodworth a2b0094a4d change bugfix description 2023-08-24 14:49:22 -07:00
Tom Keller 3464309856 chore: update CHANGELOG.md for v3.0.1 2023-08-24 14:48:11 -07:00
Tom Keller 3a12f318be CHANGELOG.md for 3.0.1 2023-08-24 14:45:24 -07:00
Tom Keller 6478abc372 Merge pull request #794 from ubaid-ansari21/contri
fix: fix typo
2023-08-24 14:40:17 -07:00
Tom Keller 91d9dfcd6f Merge branch 'main' into contri 2023-08-24 14:38:35 -07:00
Peter Woodworth 76997ececd fix: action fails when intending to use existing credentials (#796)
* fix: action fails when intending to use existing credentials

* fix: action fails when intending to use existing credentials

* fix: action fails when intending to use existing credentials

* fix: action fails when intending to use existing credentials

* fix: action fails when intending to use existing credentials

* fix: action fails when intending to use existing credentials

---------

Co-authored-by: Tom Keller <1083460+kellertk@users.noreply.github.com>
2023-08-24 14:38:12 -07:00
Tom Keller a96263310b feat: special character check (#797)
* feat: add config option for special character handling

* chore: update dist files
2023-08-24 13:58:54 -07:00
Tom Keller fbbf385657 feat: add config option for special character handling (#795) 2023-08-24 13:05:29 -07:00
ubaid-ansari21 f5f46df077 fix typo 2023-08-24 13:53:51 +05:30
20 changed files with 4178 additions and 4877 deletions
+51
View File
@@ -0,0 +1,51 @@
name: "Close Stale Issues"
# Controls when the action will run.
on:
workflow_dispatch:
schedule:
- cron: "0 */4 * * *"
jobs:
cleanup:
permissions:
issues: write
contents: read
pull-requests: write
runs-on: ubuntu-latest
name: Stale issue job
steps:
- uses: aws-actions/stale-issue-cleanup@v5
with:
# Setting messages to an empty string will cause the automation to skip
# that category
ancient-issue-message: This issue has not received any attention in 1 year. If you want to keep this issue open, please leave a comment below and auto-close will be canceled.
stale-issue-message: This issue has not received a response in a while. If you want to keep this issue open, please leave a comment below and auto-close will be canceled.
stale-pr-message: This PR has not received a response in a while. If you want to keep this issue open, please leave a comment below and auto-close will be canceled.
# These labels are required
stale-issue-label: closing-soon
exempt-issue-labels: no-autoclose
stale-pr-label: closing-soon
exempt-pr-labels: no-autoclose
response-requested-label: response-requested
# Don't set closed-for-staleness label to skip closing very old issues
# regardless of label
closed-for-staleness-label: closed-for-staleness
# Issue timing
days-before-stale: 5
days-before-close: 2
days-before-ancient: 36500
# If you don't want to mark a issue as being ancient based on a
# threshold of "upvotes", you can set this here. An "upvote" is
# the total number of +1, heart, hooray, and rocket reactions
# on an issue.
minimum-upvotes-to-exempt: 5
repo-token: ${{ secrets.GITHUB_TOKEN }}
loglevel: DEBUG
# Set dry-run to true to not perform label or close actions.
dry-run: false
@@ -13,7 +13,5 @@ jobs:
# These inputs are both required
repo-token: "${{ secrets.GITHUB_TOKEN }}"
message: |
** Note **
Comments on closed issues are hard for our team to see.
If you need more assistance, please either tag a team member or open a new issue that references this one.
If you wish to keep having a conversation with other community members under this issue feel free to do so.
+3 -2
View File
@@ -6,6 +6,7 @@ on:
- main
paths-ignore:
- 'dist/**'
workflow_dispatch:
jobs:
package:
@@ -30,7 +31,7 @@ jobs:
uses: aws-actions/configure-aws-credentials@v3
with:
aws-region: us-west-2
role-to-assume: ${{ secrets.SECRETS_AWS_ROLE_TO_ASSUME }}
role-to-assume: ${{ secrets.SECRETS_AWS_PACKAGING_ROLE_TO_ASSUME }}
role-duration-seconds: 900
role-session-name: SecretsManagerFetch
- name: Get bot user token
@@ -38,7 +39,7 @@ jobs:
with:
parse-json-secrets: true
secret-ids: |
OSDS,arn:aws:secretsmanager:us-west-2:294535624312:secret:github-aws-sdk-osds-automation-ZHNalp
OSDS,arn:aws:secretsmanager:us-west-2:206735643321:secret:github-aws-sdk-osds-automation-gebs9n
- name: Commit
run: |
echo "::add-mask::${{ env.OSDS_ACCESS_TOKEN }}"
+50 -1
View File
@@ -1,4 +1,4 @@
name: Run tests
name: Run Integ tests
on:
workflow_dispatch:
@@ -27,6 +27,33 @@ jobs:
role-duration-seconds: 900
role-session-name: IntegOidcAssumeRole
role-external-id: ${{ secrets.SECRETS_OIDC_AWS_ROLE_EXTERNAL_ID }}
integ-oidc-env:
permissions:
contents: read
id-token: write
strategy:
fail-fast: false
matrix:
os: [[self-hosted, linux-fargate], windows-latest, ubuntu-latest, macos-latest]
node: [14, 16, 18]
name: Run OIDC integ tests with existing invalid env vars
runs-on: ${{ matrix.os }}
env:
AWS_ACCESS_KEY_ID: dummyaccesskeyid
AWS_SECRET_ACCESS_KEY: dummysecretkey
AWS_SESSION_TOKEN: dummytoken
timeout-minutes: 30
steps:
- name: "Checkout repository"
uses: actions/checkout@v3
- name: Integ test for OIDC
uses: ./
with:
aws-region: us-west-2
role-to-assume: ${{ secrets.SECRETS_OIDC_AWS_ROLE_TO_ASSUME }}
role-duration-seconds: 900
role-session-name: IntegOidcAssumeRole
role-external-id: ${{ secrets.SECRETS_OIDC_AWS_ROLE_EXTERNAL_ID }}
integ-access-keys:
strategy:
fail-fast: false
@@ -48,6 +75,28 @@ jobs:
role-to-assume: ${{ secrets.SECRETS_AWS_ROLE_TO_ASSUME }}
role-session-name: IntegAccessKeysAssumeRole
role-external-id: ${{ secrets.SECRETS_AWS_ROLE_EXTERNAL_ID }}
integ-access-keys-env:
strategy:
fail-fast: false
matrix:
os: [[self-hosted, linux-fargate], windows-latest, ubuntu-latest, macos-latest]
node: [14, 16, 18]
name: Run access key from env integ tests
runs-on: ${{ matrix.os }}
timeout-minutes: 30
steps:
- name: "Checkout repository"
uses: actions/checkout@v3
- name: Integ test for access keys
uses: ./
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
with:
aws-region: us-west-2
role-to-assume: ${{ secrets.SECRETS_AWS_ROLE_TO_ASSUME }}
role-session-name: IntegAccessKeysAssumeRole
role-external-id: ${{ secrets.SECRETS_AWS_ROLE_EXTERNAL_ID }}
integ-iam-user:
strategy:
fail-fast: false
+30 -4
View File
@@ -1,8 +1,18 @@
queue_rules:
- name: default
conditions:
# Conditions to get out of the queue (= merged)
- status-success=Run Unit Tests
# Conditions to merge a queued PR
- check-success=Run unit tests (windows-latest, 14)
- check-success=Run unit tests (windows-latest, 16)
- check-success=Run unit tests (windows-latest, 18)
- check-success=Run unit tests (ubuntu-latest, 14)
- check-success=Run unit tests (ubuntu-latest, 16)
- check-success=Run unit tests (ubuntu-latest, 18)
- check-success=Run unit tests (macos-latest, 14)
- check-success=Run unit tests (macos-latest, 16)
- check-success=Run unit tests (macos-latest, 18)
- "#approved-reviews-by>=1"
- -approved-reviews-by~=author
pull_request_rules:
- name: Automatically merge on CI success and review approval
@@ -10,7 +20,15 @@ pull_request_rules:
- base~=main|integ-tests
- "#approved-reviews-by>=1"
- -approved-reviews-by~=author
- status-success=Run Unit Tests
- check-success=Run unit tests (windows-latest, 14)
- check-success=Run unit tests (windows-latest, 16)
- check-success=Run unit tests (windows-latest, 18)
- check-success=Run unit tests (ubuntu-latest, 14)
- check-success=Run unit tests (ubuntu-latest, 16)
- check-success=Run unit tests (ubuntu-latest, 18)
- check-success=Run unit tests (macos-latest, 14)
- check-success=Run unit tests (macos-latest, 16)
- check-success=Run unit tests (macos-latest, 18)
- label!=work-in-progress
- -title~=(WIP|wip)
- -merged
@@ -25,7 +43,15 @@ pull_request_rules:
conditions:
- base~=main
- author=dependabot[bot]
- status-success=Run Unit Tests
- check-success=Run unit tests (windows-latest, 14)
- check-success=Run unit tests (windows-latest, 16)
- check-success=Run unit tests (windows-latest, 18)
- check-success=Run unit tests (ubuntu-latest, 14)
- check-success=Run unit tests (ubuntu-latest, 16)
- check-success=Run unit tests (ubuntu-latest, 18)
- check-success=Run unit tests (macos-latest, 14)
- check-success=Run unit tests (macos-latest, 16)
- check-success=Run unit tests (macos-latest, 18)
- -title~=(WIP|wip)
- -label~=(blocked|do-not-merge)
- -merged
+19
View File
@@ -2,6 +2,25 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
## [3.0.2](https://github.com/aws-actions/configure-aws-credentials/compare/v3.0.1...v3.0.2) (2023-09-07)
### Bug Fixes
* fixes #817 #819: validation logic throwing unwanted errors [d78f55b](https://github.com/aws-actions/configure-aws-credentials/commit/d78f55b1db65186cb251a8504ae9527af06fc5fd)
## [3.0.1](https://github.com/aws-actions/configure-aws-credentials/compare/v3.0.0...v3.0.1) (2023-08-24)
### Features
* Can configure `special-characters-workaround` to keep retrying credentials if the returned
credentials have special characters (Fixes #599)
### Bug Fixes
* Fixes #792: Action fails when intending to use existing credentials
* Minor typo fix from @ubaid-ansari21
### Changes to existing functionality
* Special characters are now allowed in returned credential variables unless you configure the
`special-characters-workaround` option
## [3.0.0](https://github.com/aws-actions/configure-aws-credentials/compare/v2.2.0...v3.0.0) (2023-08-21)
### Features
+22 -11
View File
@@ -24,9 +24,9 @@ changes should be backwards compatible with your existing workflows.
_all_ use cases. This is changed from 6 hours in `v2`. You can adjust this value
with the `role-duration-seconds` input.
- By default, your account ID will not be masked in workflow logs. This was
changed from being masked by default in the previous version. AWS does consider
changed from being masked by default in the previous version. AWS does not consider
account IDs as sensitive information, so this change reflects that stance. You
can rever to the old default and mask your account ID in workflow logs by
can revert to the old default and mask your account ID in workflow logs by
setting the `mask-aws-account-id` input to `true`.
**New features**
@@ -46,7 +46,7 @@ variables are interfering with the action. You can enable this by setting the
**Bug fixes**
You can find a list of bugs that have been fixed in v3 in the
[changelog](./changelog.md).
[changelog](./CHANGELOG.md).
---
@@ -161,13 +161,15 @@ We recommend using [GitHub's OIDC provider](https://docs.github.com/en/actions/d
The following table describes which method is used based on which values are supplied to the Action:
| **Identity Used** | `aws-access-key-id` | `role-to-assume` | `web-identity-token-file` | `role-chaining` |
| --------------------------------------------------------------- | ------------------- | ---------------- | ------------------------- | - |
| [✅ Recommended] Assume Role directly using GitHub OIDC provider | | ✔ | | |
| IAM User | ✔ | | | |
| Assume Role using IAM User credentials | ✔ | ✔ | | |
| Assume Role using WebIdentity Token File credentials | | ✔ | ✔ | |
| Assume Role using existing credentials | | ✔ | | ✔ |
| **Identity Used** | `aws-access-key-id` | `role-to-assume` | `web-identity-token-file` | `role-chaining` | `id-token` permission
| --------------------------------------------------------------- | ------------------- | ---------------- | ------------------------- | - | - |
| [✅ Recommended] Assume Role directly using GitHub OIDC provider | | ✔ | | | ✔ |
| IAM User | ✔ | | | | |
| Assume Role using IAM User credentials | ✔ | ✔ | | | |
| Assume Role using WebIdentity Token File credentials | | ✔ | ✔ | | |
| Assume Role using existing credentials | | ✔ | | ✔ | |
*Note: `role-chaining` is not necessary to use existing credentials in every use case. If you're getting a "Credentials loaded by the SDK do not match" error, try enabling this prop.
### Credential Lifetime
The default session duration is **1 hour**.
@@ -268,6 +270,15 @@ Your account ID is not masked by default in workflow logs since it's not conside
#### Unset current credentials
Sometimes, existing credentials in your runner can get in the way of the intended outcome, and the recommended solution is to include another step in your workflow which unsets the environment variables set by this action. Now if you set the `unset-current-credentials` input to `true`, the workaround is made eaiser
#### Special characters in AWS_SECRET_ACCESS_KEY
Some edge cases are unable to properly parse an `AWS_SECRET_ACCESS_KEY` if it
contains special characters. For more information, please see the
[AWS CLI documentation](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-troubleshooting.html#tshoot-signature-does-not-match).
If you set the `special-characters-workaround` option, this action will
continually retry fetching credentials until we get one that does not have
special characters. This option overrides the `disable-retry` and
`retry-max-attempts` options.
## OIDC
We recommend using [GitHub's OIDC provider](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) to get short-lived AWS credentials needed for your actions. When using OIDC, this action will create a JWT unique to the workflow run, and it will use this JWT to assume the role. For this action to create the JWT, it is required for your workflow to have the `id-token: write` permission:
@@ -280,7 +291,7 @@ We recommend using [GitHub's OIDC provider](https://docs.github.com/en/actions/d
### Audience
When the JWT is created, an audience needs to be specified. By default, the audience is `sts.amazon.com` and this will work for most cases. Changing the default audience may be necessary when using non-default AWS partitions. You can specify the audience through the `audience` input:
When the JWT is created, an audience needs to be specified. By default, the audience is `sts.amazonaws.com` and this will work for most cases. Changing the default audience may be necessary when using non-default AWS partitions. You can specify the audience through the `audience` input:
```yaml
- name: Configure AWS Credentials for China region audience
+4 -1
View File
@@ -2,7 +2,7 @@
name: '"Configure AWS Credentials" Action for GitHub Actions'
description: Configures AWS credentials for use in subsequent steps in a GitHub Action workflow
runs:
using: node16
using: node20
main: dist/index.js
post: dist/cleanup/index.js
branding:
@@ -70,6 +70,9 @@ inputs:
retry-max-attempts:
description: The maximum number of attempts it will attempt to retry the assume role call. By default it will retry 12 times
required: false
special-characters-workaround:
description: Some environments do not support special characters in AWS_SECRET_ACCESS_KEY. This option will retry fetching credentials until the secret access key does not contain special characters. This option overrides disable-retry and retry-max-attempts. This option is disabled by default
required: false
outputs:
aws-account-id:
description: The AWS account ID for the provided credentials
Generated Vendored
+1520 -1346
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -9,7 +9,7 @@ export declare function defaultSleep(ms: number): Promise<unknown>;
declare let sleep: typeof defaultSleep;
export declare function withsleep(s: typeof sleep): void;
export declare function reset(): void;
export declare function verifyKeys(creds: Partial<Credentials> | undefined): void;
export declare function verifyKeys(creds: Partial<Credentials> | undefined): boolean;
export declare function retryAndBackoff<T>(fn: () => Promise<T>, isRetryable: boolean, maxRetries?: number, retries?: number, base?: number): Promise<T>;
export declare function errorMessage(error: unknown): string;
export declare function isDefined<T>(i: T | undefined | null): i is T;
Generated Vendored
+238 -1512
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1,6 +1,6 @@
# federated-setup
## [github-action-oidc-federation](./github-actions-odic-federation.yml)
## [github-action-oidc-federation](./github-actions-oidc-federation.yml)
Setup of the OIDC federation between your GitHub Organization/repository and your AWS account.
+2095 -1897
View File
File diff suppressed because it is too large Load Diff
+17 -17
View File
@@ -14,34 +14,34 @@
},
"devDependencies": {
"@aws-sdk/credential-provider-env": "^3.186.0",
"@aws-sdk/property-provider": "^3.188.0",
"@jest/globals": "^29.1.2",
"@types/jest": "^29.1.2",
"@types/node": "^14",
"@typescript-eslint/eslint-plugin": "^5",
"@typescript-eslint/parser": "^5",
"@vercel/ncc": "^0.34.0",
"aws-sdk-client-mock": "^2.0.0",
"@smithy/property-provider": "^2.0.6",
"@jest/globals": "^29.6.4",
"@types/jest": "^29.5.4",
"@types/node": "^20",
"@typescript-eslint/eslint-plugin": "<=5.62.0",
"@typescript-eslint/parser": "<=5.62.0",
"@vercel/ncc": "^0.38.0",
"aws-sdk-client-mock": "^3.0.0",
"copyfiles": "^2.4.1",
"del-cli": "^5.0.0",
"del-cli": "^5.1.0",
"eslint": "^8",
"eslint-config-prettier": "^8.5.0",
"eslint-config-prettier": "^9.0.0",
"eslint-import-resolver-node": "^0.3.6",
"eslint-import-resolver-typescript": "^3.5.1",
"eslint-plugin-import": "^2.26.0",
"eslint-plugin-prettier": "^4.2.1",
"jest": "^29.1.2",
"jest-junit": "^13",
"eslint-plugin-import": "^2.28.1",
"eslint-plugin-prettier": "^5.0.0",
"jest": "^29.6.4",
"jest-junit": "^16",
"json-schema": "^0.4.0",
"prettier": "^2.7.1",
"prettier": "^3.0.3",
"standard-version": "^9",
"ts-jest": "^29.0.3",
"typescript": "^4.8.4"
"typescript": "^5.2.2"
},
"dependencies": {
"@actions/core": "^1.10.0",
"@aws-sdk/client-sts": "^3",
"@aws-sdk/node-http-handler": "^3",
"@smithy/node-http-handler": "^2.0.0",
"https-proxy-agent": "^5.0.0"
},
"keywords": [
+1 -1
View File
@@ -1,6 +1,6 @@
import { info } from '@actions/core';
import { STSClient } from '@aws-sdk/client-sts';
import { NodeHttpHandler } from '@aws-sdk/node-http-handler';
import { NodeHttpHandler } from '@smithy/node-http-handler';
import { HttpsProxyAgent } from 'https-proxy-agent';
import { errorMessage } from './helpers';
+1 -4
View File
@@ -5,7 +5,7 @@ import * as core from '@actions/core';
import type { AssumeRoleCommandInput, STSClient, Tag } from '@aws-sdk/client-sts';
import { AssumeRoleCommand, AssumeRoleWithWebIdentityCommand } from '@aws-sdk/client-sts';
import type { CredentialsClient } from './CredentialsClient';
import { errorMessage, isDefined, sanitizeGitHubVariables, verifyKeys } from './helpers';
import { errorMessage, isDefined, sanitizeGitHubVariables } from './helpers';
async function assumeRoleWithOIDC(params: AssumeRoleCommandInput, client: STSClient, webIdentityToken: string) {
delete params.Tags;
@@ -17,7 +17,6 @@ async function assumeRoleWithOIDC(params: AssumeRoleCommandInput, client: STSCli
WebIdentityToken: webIdentityToken,
})
);
verifyKeys(creds.Credentials);
return creds;
} catch (error) {
throw new Error(`Could not assume role with OIDC: ${errorMessage(error)}`);
@@ -49,7 +48,6 @@ async function assumeRoleWithWebIdentityTokenFile(
WebIdentityToken: webIdentityToken,
})
);
verifyKeys(creds.Credentials);
return creds;
} catch (error) {
throw new Error(`Could not assume role with web identity token file: ${errorMessage(error)}`);
@@ -60,7 +58,6 @@ async function assumeRoleWithCredentials(params: AssumeRoleCommandInput, client:
core.info('Assuming role with user credentials');
try {
const creds = await client.send(new AssumeRoleCommand({ ...params }));
verifyKeys(creds.Credentials);
return creds;
} catch (error) {
throw new Error(`Could not assume role with user credentials: ${errorMessage(error)}`);
+6 -3
View File
@@ -93,18 +93,21 @@ export function reset() {
export function verifyKeys(creds: Partial<Credentials> | undefined) {
if (!creds) {
return;
return false;
}
if (creds.AccessKeyId) {
if (SPECIAL_CHARS_REGEX.test(creds.AccessKeyId)) {
throw new Error('AccessKeyId contains special characters.');
core.debug('AccessKeyId contains special characters.');
return false;
}
}
if (creds.SecretAccessKey) {
if (SPECIAL_CHARS_REGEX.test(creds.SecretAccessKey)) {
throw new Error('SecretAccessKey contains special characters.');
core.debug('SecretAccessKey contains special characters.');
return false;
}
}
return true;
}
// Retries the promise with exponential backoff if the error isRetryable up to maxRetries time.
+45 -24
View File
@@ -1,4 +1,5 @@
import * as core from '@actions/core';
import type { AssumeRoleCommandOutput } from '@aws-sdk/client-sts';
import { assumeRole } from './assumeRole';
import { CredentialsClient } from './CredentialsClient';
import {
@@ -8,6 +9,7 @@ import {
exportCredentials,
exportAccountId,
unsetCredentials,
verifyKeys,
} from './helpers';
const DEFAULT_ROLE_DURATION = 3600; // One hour (seconds)
@@ -43,10 +45,20 @@ export async function run() {
const unsetCurrentCredentialsInput = core.getInput('unset-current-credentials', { required: false }) || 'false';
const unsetCurrentCredentials = unsetCurrentCredentialsInput.toLowerCase() === 'true';
const disableRetryInput = core.getInput('disable-retry', { required: false }) || 'false';
const disableRetry = disableRetryInput.toLowerCase() === 'true';
let disableRetry = disableRetryInput.toLowerCase() === 'true';
const specialCharacterWorkaroundInput =
core.getInput('special-characters-workaround', { required: false }) || 'false';
const specialCharacterWorkaround = specialCharacterWorkaroundInput.toLowerCase() === 'true';
let maxRetries = parseInt(core.getInput('retry-max-attempts', { required: false })) || 12;
if (maxRetries < 1) {
maxRetries = 1;
switch (true) {
case specialCharacterWorkaround:
// 😳
disableRetry = false;
maxRetries = 12;
break;
case maxRetries < 1:
maxRetries = 1;
break;
}
for (const managedSessionPolicy of managedSessionPoliciesInput) {
managedSessionPolicies.push({ arn: managedSessionPolicy });
@@ -66,7 +78,8 @@ export async function run() {
!roleChaining
) {
core.info(
'It looks like you might be trying to authenticate with OIDC. Did you mean to set the `id-token` permission?'
'It looks like you might be trying to authenticate with OIDC. Did you mean to set the `id-token` permission? ' +
'If you are not trying to authenticate with OIDC and the action is working successfully, you can ignore this message.'
);
}
return (
@@ -116,7 +129,9 @@ export async function run() {
// in any error messages.
exportCredentials({ AccessKeyId, SecretAccessKey, SessionToken });
} else if (!webIdentityTokenFile && !roleChaining) {
throw new Error('Could not determine how to assume credentials. Please check your inputs and try again.');
// Proceed only if credentials can be picked up
await credentialsClient.validateCredentials();
sourceAccountId = await exportAccountId(credentialsClient, maskAccountId);
}
if (AccessKeyId || roleChaining) {
@@ -129,25 +144,30 @@ export async function run() {
// Get role credentials if configured to do so
if (roleToAssume) {
const roleCredentials = await retryAndBackoff(
async () => {
return assumeRole({
credentialsClient,
sourceAccountId,
roleToAssume,
roleExternalId,
roleDuration,
roleSessionName,
roleSkipSessionTagging,
webIdentityTokenFile,
webIdentityToken,
inlineSessionPolicy,
managedSessionPolicies,
});
},
!disableRetry,
maxRetries
);
let roleCredentials: AssumeRoleCommandOutput;
do {
// eslint-disable-next-line no-await-in-loop
roleCredentials = await retryAndBackoff(
async () => {
return assumeRole({
credentialsClient,
sourceAccountId,
roleToAssume,
roleExternalId,
roleDuration,
roleSessionName,
roleSkipSessionTagging,
webIdentityTokenFile,
webIdentityToken,
inlineSessionPolicy,
managedSessionPolicies,
});
},
!disableRetry,
maxRetries
);
// eslint-disable-next-line no-unmodified-loop-condition
} while (specialCharacterWorkaround && !verifyKeys(roleCredentials.Credentials));
core.info(`Authenticated as assumedRoleId ${roleCredentials.AssumedRoleUser!.AssumedRoleId!}`);
exportCredentials(roleCredentials.Credentials, outputCredentials);
// We need to validate the credentials in 2 of our use-cases
@@ -173,6 +193,7 @@ export async function run() {
}
/* c8 ignore start */
/* istanbul ignore next */
if (require.main === module) {
(async () => {
await run();
+74 -50
View File
@@ -6,7 +6,7 @@ import {
STSClient,
} from '@aws-sdk/client-sts';
import { fromEnv } from '@aws-sdk/credential-provider-env';
import { CredentialsProviderError } from '@aws-sdk/property-provider';
import { CredentialsProviderError } from '@smithy/property-provider';
import { mockClient } from 'aws-sdk-client-mock';
import { withsleep, reset } from '../src/helpers';
import { run } from '../src/index';
@@ -202,7 +202,7 @@ describe('Configure AWS Credentials', () => {
await run();
expect(core.setFailed).toHaveBeenCalledWith(
'Could not determine how to assume credentials. Please check your inputs and try again.'
'Credentials could not be loaded, please check your action inputs: Could not load credentials from any providers'
);
});
@@ -217,7 +217,7 @@ describe('Configure AWS Credentials', () => {
await run();
expect(core.setFailed).toHaveBeenCalledWith(
'Could not determine how to assume credentials. Please check your inputs and try again.'
'Credentials could not be loaded, please check your action inputs: Access key ID empty after loading credentials'
);
});
@@ -508,6 +508,8 @@ describe('Configure AWS Credentials', () => {
});
test('GH OIDC check fails if token is not set', async () => {
(fromEnv as jest.Mock).mockReset();
process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN'] = undefined;
process.env['GITHUB_ACTIONS'] = 'true';
jest.spyOn(core, 'getInput').mockImplementation(
mockGetInput({
@@ -519,13 +521,34 @@ describe('Configure AWS Credentials', () => {
await run();
expect(core.info).toHaveBeenCalledWith(
'It looks like you might be trying to authenticate with OIDC. Did you mean to set the `id-token` permission?'
'It looks like you might be trying to authenticate with OIDC. Did you mean to set the `id-token` permission?' +
' If you are not trying to authenticate with OIDC and the action is working successfully, you can ignore this message.'
);
expect(core.setFailed).toHaveBeenCalledWith(
'Could not determine how to assume credentials. Please check your inputs and try again.'
'Credentials could not be loaded, please check your action inputs: provider is not a function'
);
});
test('Assume role with existing credentials if nothing else set', async () => {
process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN'] = undefined;
process.env['AWS_ACCESS_KEY_ID'] = FAKE_ACCESS_KEY_ID;
process.env['AWS_SECRET_ACCESS_KEY'] = FAKE_SECRET_ACCESS_KEY;
jest.spyOn(core, 'getInput').mockImplementation(
mockGetInput({
'role-to-assume': ROLE_ARN,
'aws-region': FAKE_REGION,
})
);
await run();
expect(core.info).toHaveBeenCalledWith(
'It looks like you might be trying to authenticate with OIDC. Did you mean to set the `id-token` permission?' +
' If you are not trying to authenticate with OIDC and the action is working successfully, you can ignore this message.'
);
expect(mockedSTS.commandCalls(AssumeRoleCommand).length).toEqual(1);
});
test('role assumption fails after maximum trials using OIDC provider', async () => {
process.env['GITHUB_ACTIONS'] = 'true';
process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN'] = 'test-token';
@@ -556,61 +579,62 @@ describe('Configure AWS Credentials', () => {
expect(mockedSTS.commandCalls(AssumeRoleWithWebIdentityCommand).length).toEqual(1);
});
test('role assumption fails if access key id contains special characters', async () => {
jest.spyOn(core, 'getInput').mockImplementation(mockGetInput({ ...ASSUME_ROLE_INPUTS }));
test('special character workaround works for AWS_ACCESS_KEY_ID', async () => {
jest
.spyOn(core, 'getInput')
.mockImplementation(mockGetInput({ ...ASSUME_ROLE_INPUTS, 'special-characters-workaround': 'true' }));
mockedSTS.on(AssumeRoleCommand).resolves({
Credentials: {
AccessKeyId: 'asdf+',
SecretAccessKey: FAKE_STS_SECRET_ACCESS_KEY,
SessionToken: FAKE_STS_SESSION_TOKEN,
Expiration: new Date(8640000000000000),
},
});
mockedSTS
.on(AssumeRoleCommand)
.resolvesOnce({
Credentials: {
AccessKeyId: FAKE_STS_ACCESS_KEY_ID,
SecretAccessKey: 'asdf+',
SessionToken: FAKE_STS_SESSION_TOKEN,
Expiration: new Date(8640000000000000),
},
})
.resolves({
Credentials: {
AccessKeyId: FAKE_STS_ACCESS_KEY_ID,
SecretAccessKey: 'asdf',
SessionToken: FAKE_STS_SESSION_TOKEN,
Expiration: new Date(8640000000000000),
},
});
await run();
expect(mockedSTS.commandCalls(AssumeRoleCommand).length).toEqual(12);
expect(core.setFailed).toHaveBeenCalledWith(
'Could not assume role with user credentials: AccessKeyId contains special characters.'
);
expect(mockedSTS.commandCalls(AssumeRoleCommand).length).toEqual(2);
});
test('role assumption fails if secret access key contains special characters', async () => {
jest.spyOn(core, 'getInput').mockImplementation(mockGetInput({ ...ASSUME_ROLE_INPUTS }));
test('special character workaround works for AWS_SECRET_ACCESS_KEY', async () => {
jest
.spyOn(core, 'getInput')
.mockImplementation(mockGetInput({ ...ASSUME_ROLE_INPUTS, 'special-characters-workaround': 'true' }));
mockedSTS.on(AssumeRoleCommand).resolves({
Credentials: {
AccessKeyId: FAKE_STS_ACCESS_KEY_ID,
SecretAccessKey: 'asdf+',
SessionToken: FAKE_STS_SESSION_TOKEN,
Expiration: new Date(8640000000000000),
},
});
mockedSTS
.on(AssumeRoleCommand)
.resolvesOnce({
Credentials: {
AccessKeyId: FAKE_STS_ACCESS_KEY_ID,
SecretAccessKey: 'asdf+',
SessionToken: FAKE_STS_SESSION_TOKEN,
Expiration: new Date(8640000000000000),
},
})
.resolves({
Credentials: {
AccessKeyId: FAKE_STS_ACCESS_KEY_ID,
SecretAccessKey: 'asdf',
SessionToken: FAKE_STS_SESSION_TOKEN,
Expiration: new Date(8640000000000000),
},
});
await run();
expect(mockedSTS.commandCalls(AssumeRoleCommand).length).toEqual(12);
expect(core.setFailed).toHaveBeenCalledWith(
'Could not assume role with user credentials: SecretAccessKey contains special characters.'
);
});
test('role assumption succeeds if keys have no special characters', async () => {
jest.spyOn(core, 'getInput').mockImplementation(mockGetInput({ ...ASSUME_ROLE_INPUTS }));
mockedSTS.on(AssumeRoleCommand).resolves({
Credentials: {
AccessKeyId: FAKE_STS_ACCESS_KEY_ID,
SecretAccessKey: FAKE_STS_SECRET_ACCESS_KEY,
SessionToken: FAKE_STS_SESSION_TOKEN,
Expiration: new Date(8640000000000000),
},
});
await run();
expect(mockedSTS.commandCalls(AssumeRoleCommand).length).toEqual(1);
expect(mockedSTS.commandCalls(AssumeRoleCommand).length).toEqual(2);
});
test('max retries is configurable', async () => {