Как AWS Credentials работает на GitHub Actions? - PullRequest
0 голосов
/ 31 октября 2019

В своих модульных тестах я использую aws-sdk для тестирования SES, которому требуются некоторые учетные данные, мы столкнулись с проблемой доступа к секретам с помощью действий GitHub.

Вначале я пыталсяустановите значения ~/.aws/credentials, используя команду run из рабочих процессов github:

# .github/workflows/nodejs.yml
steps:
  ...
  - name: Unit Test
    run: |
      mkdir -p ~/.aws
      touch ~/.aws/credentials

      echo "[default]
      aws_access_key_id = ${{ secrets.AWS_ACCESS_KEY_ID }}
      aws_secret_access_key = ${{ secrets.AWS_SECRET_KEY_ID }}
      region = ${AWS_DEFAULT_REGION}

      [github]
      role_arn = arn:aws:iam::{accountID}:role/{role}
      source_profile = default" > ~/.aws/credentials 

      npm test
    env:
      AWS_DEFAULT_REGION: us-east-1
      CI: true

Первоначально мой тестовый файл:

// ses.test.js
const AWS = require("aws-sdk")
const credentials = new AWS.SharedIniFileCredentials({ profile: "github" })
AWS.config.update({ credentials })
...

Я пытался использовать другой способ получения учетных данных в моих тестахвроде, а также не работает:

const AWS = require("aws-sdk")
const credentials = new AWS.ChainableTemporaryCredentials({
  params: {RoleArn: "arn:aws:iam::{accountID}:role/{role}"},
  masterCredentials: new AWS.EnvironmentCredentials("AWS")
)}

AWS.config.update({ credentials })

Наконец я попытался создать настроенное действие (используя библиотеку действий js, например: @ actions / core, @ actions / io, @ actions / exec), чтобыполучить значения AWS env и установить его на ~/.aws/credentials, но также не работает должным образом

Один из способов, который работал, - выставить AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY (без использования секретных действий GitHub, не идеально, в целях безопасности)

У кого-то есть идеи, как учетные данные AWS могут работать на GitHub Actions с секретами?

Большое спасибо за ваше внимание.

1 Ответ

0 голосов
/ 01 ноября 2019

К счастью, aws-sdk должен автоматически обнаруживать учетные данные , установленные в качестве переменных среды и использовать их для запросов

Чтобы получить доступ к секретам в вашем действии, вам необходимо установить их в репозитории,Затем вы можете выставить их на шаг как переменную env.

Подробнее см. Создание и использование секретов

  1. На GitHub перейдите на главную страницурепозитория
  2. Под своим именем репозитория откройте вкладку ⚙ Настройки
  3. Кнопка настроек репозитория
  4. На левой боковой панели нажмите Секреты
  5. Введите имядля вашего секрета в поле ввода «Имя»
  6. Введите значение вашего секрета
  7. Нажмите Добавить секрет

В вашем случае вы захотите добавить секреты дляи AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY.

Теперь, когда они установлены, вы можете передать эти значения в действие через рабочий процесс yaml:

steps:
...
- name: Unit Test
  uses: ...
  env:
    AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
    AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
  run: ...
...