📚

Github ActionのOpenID Connect使ってAWS認証を行う

2021/11/03に公開

いろんなところでやられているが、引っかかった部分あったのでまとめる

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