В своих модульных тестах я использую aws-sdk
для тестирования SES, для которого требуются некоторые учетные данные, мы сталкиваемся с проблемой доступа к секретам с помощью GitHub Actions.
Вначале я пытался установить значения ~/.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 Actions, что не идеально, в целях безопасности)
У кого-то есть идеи, как учетные данные AWS могут работать в GitHub Actions с секретами?
Большое спасибо за внимание.