mirror of
https://github.com/aws-actions/configure-aws-credentials.git
synced 2026-09-05 06:25:08 +09:00
fix: clear session token env var if present for non-session credentials (#65)
This commit is contained in:
@@ -31,6 +31,7 @@ Add the following step to your workflow:
|
|||||||
```
|
```
|
||||||
|
|
||||||
For example, you can use this action with the AWS CLI available in [GitHub's hosted virtual environments](https://help.github.com/en/actions/reference/software-installed-on-github-hosted-runners).
|
For example, you can use this action with the AWS CLI available in [GitHub's hosted virtual environments](https://help.github.com/en/actions/reference/software-installed-on-github-hosted-runners).
|
||||||
|
You can also run this action multiple times to use different AWS accounts, regions, or IAM roles in the same GitHub Actions workflow job.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
jobs:
|
jobs:
|
||||||
@@ -42,16 +43,27 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Configure AWS credentials
|
- name: Configure AWS credentials from Test account
|
||||||
uses: aws-actions/configure-aws-credentials@v1
|
uses: aws-actions/configure-aws-credentials@v1
|
||||||
with:
|
with:
|
||||||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
aws-access-key-id: ${{ secrets.TEST_AWS_ACCESS_KEY_ID }}
|
||||||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
aws-secret-access-key: ${{ secrets.TEST_AWS_SECRET_ACCESS_KEY }}
|
||||||
aws-region: us-east-2
|
aws-region: us-east-1
|
||||||
|
|
||||||
- name: Copy files to S3 with the AWS CLI
|
- name: Copy files to the test website with the AWS CLI
|
||||||
run: |
|
run: |
|
||||||
aws s3 sync . s3://my-s3-website-bucket
|
aws s3 sync . s3://my-s3-test-website-bucket
|
||||||
|
|
||||||
|
- name: Configure AWS credentials from Production account
|
||||||
|
uses: aws-actions/configure-aws-credentials@v1
|
||||||
|
with:
|
||||||
|
aws-access-key-id: ${{ secrets.PROD_AWS_ACCESS_KEY_ID }}
|
||||||
|
aws-secret-access-key: ${{ secrets.PROD_AWS_SECRET_ACCESS_KEY }}
|
||||||
|
aws-region: us-west-2
|
||||||
|
|
||||||
|
- name: Copy files to the production website with the AWS CLI
|
||||||
|
run: |
|
||||||
|
aws s3 sync . s3://my-s3-prod-website-bucket
|
||||||
```
|
```
|
||||||
|
|
||||||
See [action.yml](action.yml) for the full documentation for this action's inputs and outputs.
|
See [action.yml](action.yml) for the full documentation for this action's inputs and outputs.
|
||||||
|
|||||||
@@ -107,6 +107,9 @@ function exportCredentials(params){
|
|||||||
if (sessionToken) {
|
if (sessionToken) {
|
||||||
core.exportVariable('AWS_SESSION_TOKEN', sessionToken);
|
core.exportVariable('AWS_SESSION_TOKEN', sessionToken);
|
||||||
core.setSecret(sessionToken);
|
core.setSecret(sessionToken);
|
||||||
|
} else if (process.env.AWS_SESSION_TOKEN) {
|
||||||
|
// clear session token from previous credentials action
|
||||||
|
core.exportVariable('AWS_SESSION_TOKEN', '');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -154,6 +154,28 @@ describe('Configure AWS Credentials', () => {
|
|||||||
expect(core.setSecret).toHaveBeenCalledWith(FAKE_ACCOUNT_ID);
|
expect(core.setSecret).toHaveBeenCalledWith(FAKE_ACCOUNT_ID);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('session token is cleared if necessary', async () => {
|
||||||
|
const mockInputs = {...CREDS_INPUTS, 'aws-region': 'eu-west-1'};
|
||||||
|
core.getInput = jest
|
||||||
|
.fn()
|
||||||
|
.mockImplementation(mockGetInput(mockInputs));
|
||||||
|
process.env.AWS_SESSION_TOKEN = 'helloworld';
|
||||||
|
|
||||||
|
await run();
|
||||||
|
expect(mockStsAssumeRole).toHaveBeenCalledTimes(0);
|
||||||
|
expect(core.exportVariable).toHaveBeenCalledTimes(5);
|
||||||
|
expect(core.setSecret).toHaveBeenCalledTimes(3);
|
||||||
|
expect(core.exportVariable).toHaveBeenCalledWith('AWS_ACCESS_KEY_ID', FAKE_ACCESS_KEY_ID);
|
||||||
|
expect(core.setSecret).toHaveBeenCalledWith(FAKE_ACCESS_KEY_ID);
|
||||||
|
expect(core.exportVariable).toHaveBeenCalledWith('AWS_SECRET_ACCESS_KEY', FAKE_SECRET_ACCESS_KEY);
|
||||||
|
expect(core.setSecret).toHaveBeenCalledWith(FAKE_SECRET_ACCESS_KEY);
|
||||||
|
expect(core.exportVariable).toHaveBeenCalledWith('AWS_SESSION_TOKEN', '');
|
||||||
|
expect(core.exportVariable).toHaveBeenCalledWith('AWS_DEFAULT_REGION', 'eu-west-1');
|
||||||
|
expect(core.exportVariable).toHaveBeenCalledWith('AWS_REGION', 'eu-west-1');
|
||||||
|
expect(core.setOutput).toHaveBeenCalledWith('aws-account-id', FAKE_ACCOUNT_ID);
|
||||||
|
expect(core.setSecret).toHaveBeenCalledWith(FAKE_ACCOUNT_ID);
|
||||||
|
});
|
||||||
|
|
||||||
test('validates region name', async () => {
|
test('validates region name', async () => {
|
||||||
process.env.SHOW_STACK_TRACE = 'false';
|
process.env.SHOW_STACK_TRACE = 'false';
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user