Github ActionのOpenID Connect使ってAWS認証を行う
いろんなところでやられているが、引っかかった部分あったのでまとめる
ID プロバイダーの作成(AWS)
IAMのIDプロバイダーから作成を行う
設定は以下の通り
プロバイダのタイプ: Open ID Connect
プロバイダ: token.actions.githubusercontent.com
対象者: sts.amazonaws.com
ここでプロバイダーはvstoken.actions.githubusercontent.comではなくtoken.actions.githubusercontent.comが最新
また、対象者もsigstoreでやっているの多いけど以下のgithubのissueによるとsts.amazonaws.comが正解らしい
IAMロールの作成(AWS)
設定は以下
エンティティの種類: ウェブID
IDプロバイダー: token.actions.githubusercontent.com
Audience: sts.amazonaws.com
後はアクセス権限や名前を決めて設定する
githubのaccess tokenを作る(github)
githubのiconからSetting→Developer setting→personal access tokensと移動する
Generate new tokenでトークンを作成する(名前は任意)
github Actionのyamlファイルを記述する(github)
以下のように記述する
# 名前は適当に
name: test
on:
main branch
#ルールも適当に
push:
branches: [ main ]
permissions:
id-token: write
contents: write
jobs:
build:
steps:
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@master
with:
aws-region: ap-northeast-1
role-to-assume: arn:aws:iam::010922940107:role/{role_name}
role-session-name: MySessionName
- run: aws sts get-caller-identity
# 以下はS3にあげる処理。基本的に認証が通れば、aws cliで操作できるようになる
- name: Deploy to S3
run: |
aws s3 cp {blahblahblah} ${{ secrets.AWS_BUCKET_NAME }} --recursive
working-directory: {hogehoge}
permissionsの部分がないとエラーが出る
githubのエディタで編集していたのだが、id-tokenがまだ対応していないらしくエラーが出て調べるはめになった。結局、エディタが対応していないだけだった。
これでaction行えば普通に認証されてawsにアクセスできる。
AWSのアクセストークンとかいらないから楽だね!!
やったね!!
参考
結局githubのissueが一番役に立ちます。多分下のissueが一番新しい情報になっているのでエラーなど出たらここで検索した方が良い(もしくは聞く)
Could not load credentials from any providers #271
以下の記事は日本語なのでわかりやすいし、概要的な書き方などを参考にできる
GitHub Actions のIDトークンを使ってAWSリソースにアクセスする
[GitHub Actions]aws-actions/configure-aws-credentialsを使ってOIDCプロバイダを介したSwitchRoleをする
Discussion