Hateburo: kazeburo hatenablog

SRE / 運用系小姑 / Goを書くPerl Monger

GitHub Actionsからさくらのクラウド オブジェクトストレージへアクセスする

2月1日よりオープンβとなった新しいさくらのクラウド オブジェクトストレージサービスにGitHub Actionsからアクセスしてみるサンプルです。

オブジェクトストレージは2021年3月31日までオープンベータ期間となります。お試しいただいてフィードバックいただけると嬉しいです! オブジェクトストレージ(β)の利用についてはこちらのニュースを確認してください。

cloud-news.sakura.ad.jp

この新しいオブジェクトストレージの特徴の一つとして、Amazon S3と高い互換性を持つAPIの提供があげられ、AWS CLIを通してオブジェクトの操作が可能です。マニュアルはこちらから

manual.sakura.ad.jp

ということで、GitHub ActionsからAWS CLIを使ってオブジェクトストレージにアクセスを試してみました。

アクセストークンについて

オブジェクトストレージ利用開始時に、 アクセスキーID と シークレットアクセスキー が表示されます。こちらのアクセスキーは全てのバケットを操作できてしまうので、パーミッションメニューからバケットごとにアクセス件が設定なアクセスキーを生成するのがお勧めです。

f:id:kazeburo:20210215094509p:plain (画像はマニュアルより)

アクセスキーを作成したら、GitHub Actionsを設定するrepositoryのSecretsに登録します。

f:id:kazeburo:20210215095118p:plain

Workflow の作成

GitHub ActionsでAWSへのアクセスを行う際には、

github.com

configure-aws-credentials を使うことで設定をシンプルにすることができますが、このactionの中で aws sts get-caller-identity 相当のAPI呼び出しを行うため、オブジェクトストレージのアクセスキーではエラーになってしまい、今回は使うことができません。

なので、環境変数でアクセスキーを渡すようにしてワークフローを作ったところ動きました。

name: release
on:
  push:
    branches:
      - main

jobs:
  renew-cert:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2
        with:
          fetch-depth: 0

      - name: sync to object storage
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          AWS_REGION: eu-west-1

        run: |
          aws --endpoint-url=https://s3.isk01.sakurastorage.jp s3 --only-show-errors --delete sync public_html/ s3://my-website-data/public_html/

aws コマンドに --endpoint-url=https://s3.isk01.sakurastorage.jp を渡せばオブジェクトストレージにアクセス可能です。

どうぞお試しあれ~

2021/03/03 追記

GitHub Actionsで

<botocore.awsrequest.AWSRequest object at 0x7f22f2d7d630>

のようなエラーが出る際は環境変数 AWS_REGION を指定するか、awsコマンドに --region オプションの追加をするとなおります。

参考

github.com