В своих модульных тестах я использую 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 с секретами?
Большое спасибо за ваше внимание.