thisismydesign
thisismydesign

Reputation: 25072

How to configure / use AWS CLI in GitHub Actions?

I'd like to run commands like aws amplify start-job in GitHub Actions. I understand the AWS CLI is pre-installed but I'm not sure how to configure it.

In particular, I'm not sure how the env vars are named for all configuration options as some docs only mention AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY but nothing for the region and output settings.

Upvotes: 3

Views: 11125

Answers (3)

Clare Liguori
Clare Liguori

Reputation: 1650

I recommend using this AWS action for setting all the AWS region and credentials environment variables in the GitHub Actions environment. It doesn't set the output env vars so you still need to do that, but it has nice features around making sure that credential env vars are masked in the output as secrets, supports assuming a role, and provides your account ID if you need it in other actions.

https://github.com/marketplace/actions/configure-aws-credentials-action-for-github-actions

Upvotes: 7

chenrui
chenrui

Reputation: 9866

In my experience, the out-of-box AWS CLI tool coming from action runner just works fine.

But there would be some time that you'd prefer to use credentials file (like terraform AWS provider), and this is example for it.

This would base64 decode the encoded file and use for the following steps.

      - name: Write into file
        id: write_file
        uses: timheuer/[email protected]
        with:
          fileName: 'myTemporaryFile.txt'
          encodedString: ${{ secrets.AWS_CREDENTIALS_FILE_BASE64 }}

Upvotes: 0

thisismydesign
thisismydesign

Reputation: 25072

I could provide the following secrets and env vars and then use the commands:

env:
  AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
  AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
  AWS_DEFAULT_REGION: us-east-1
  AWS_DEFAULT_OUTPUT: json

E.g.

  deploy:
    runs-on: ubuntu-latest
    steps:
    - name: Deploy
      env:
        AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
        AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
        AWS_DEFAULT_REGION: eu-west-1
        AWS_DEFAULT_OUTPUT: json
      run: aws amplify start-job --app-id xxx --branch-name master --job-type RELEASE

Upvotes: 7

Related Questions