1 スライド / サーバーレスなコンピュートリソースとしてGithub Actionsを考える

自己紹介

  • 夏目祐樹 (ナツメユウタ)
  • クラスメソッド株式会社
    • 情報システムG 情報システム室
  • 好きなサービス
    • Lambda, S3, DynamoDB, SQS
  • 近況
    • FF14やらなきゃ (もう一月以上サボってる)

Github Actions

  • Githubが提供するCI/CDのサービス
  • 最近、CI/CD以外にもサーバーレスなコンピュートリソースとしても使用できるのではないかと思い始めた

Luciferous Public Layers

  • 先日作成したもの
  • PyPIで公開されているPythonモジュールのPublic Layerを作成し、ARNを公開する仕組みです
  • 自分が何か作るたびに、よく使うモジュールとかあるので事前に用意しておきたかった
  • どうせやるなら、一般公開しちゃえということで作成しました
  • https://public-layers.luciferous.app
  • ほぼ全リージョンを対象にデプロイしてる、はず

[9005443501222147] スクリーンショット 2025-08-21 14.18.25


[9005443501159851] スクリーンショット 2025-08-21 14.19.26


[9005443500457848] スクリーンショット 2025-08-21 14.31.09


Github Actionsでやっていること

  • 以下のことをGithub Actionsでやっています
    • PyPIモジュールのインストール
    • Lambda Layerの一覧取得
  • 管理画面でPyPIモジュールを更新するとWebhookでGithub Actionsを動かす
    1. DynamoDB更新
    2. EventBridge API Destination
    3. Github Actions (workflow_dispatch)

[9005443500171928] スクリーンショット 2025-08-21 14.35.44


動かしてみる

  • requestsのモジュールを追加する
    • requests==2.32.5
    • isArchitectureSplit: true

Webhookで起動できるのであれば、サーバーレスな処理系として使えるのではないか


(注意) 以後Github Actionsはホスティッドランナーを前提として話をしていきます


サーバーレスのコンピュートリソース

  • AWS Lambda
    • 安い、トリガー豊富、でも15分までしか動かせない
  • Fargate
    • コンテナイメージを動かせる
    • 動かすのに色々リソース作らないといけない
  • Glue Job
    • Pythonとかも使える、良いお値段する
  • (new) Github Actions
    • リポジトリを作れば動かすことができる
    • Publicリポジトリで標準的なランナーを使うなら無料

Github Actionsの制限 (1)


Github Actionsnの制限 (2)

  • ストレージ: 最低でも500MB
    • 課金しているとストレージ制限は増える
    • Github ActionsのログやArtifact
    • 制限を超えると、1日あたり1GBごとに0.008ドル
      • 有効な支払い方法を登録してある必要がある

Github Actionsのトリガー


トリガー: workflow_dispatch

  • Github Actionsのワークフローを手動実行できるようにするトリガー
    • Webの画面からも起動できる
  • HeaderにAccess Tokenを添えてPOSTすれば外部から起動できる
  • CI/CDでもとりあえず付けておいた方が便利なトリガー

トリガー: schedule

  • 指定日時に実行させることができるトリガー
    • Cron形式で指定
  • つまりは定期バッチ処理に使える
  • デフォルトブランチに置かれたワークフローファイルのものが実行される
  • Publicリポジトリでは60日間アクティビティがないとワークフローが無効化される
    • ボタンぽち、で再度有効化できる

Github Actionsのランナー (1)

  • Linux, Windows, macOSを使用することができる
    • Linuxで1分 = Windowsで2分 = macOS 10分、という換算
  • 標準的なランナーの場合、Publicリポジトリなら無料で使える
    • Linux 2コア, Windows 2コア, macOS 3コアまたは4コア (M1またはIntel)
  • Privateリポジトリでも無料枠がある
    • 個人アカウント: 2,000分/月
    • Team/Enterprise Cloud: 3,000分/月

Github Actionsのランナー (2)

  • より大きなランナーを使う場合は、Publicリポジトリでも有料になる
    • Linux: 4, 8, 16, 32, 64, 96コア (96コアはIntelのみ)
    • Windows: 4, 8, 16, 32, 64, 96コア (96コアはIntelのみ)
    • macOS: 6コア (M1), 12コア (Intel)
  • GPU搭載のより大きなランナー
    • Linux: 4コア
    • Windows: 4コア

まとめ

  • Github Actionsをサーバーレスなコンピュートリソースとして使用することを考慮できる
  • GPU搭載のランナーもあるので、生成AI向けの用途でも使うことができそう (未検証)
  • AWS Lambda用にPyPIのモジュールをPublic Layerとして公開する仕組みを作ったので良かったら使って

おまけ

  • Github Actionsのログのマスキングについて
    • Secretsに登録しているものはマスキングされる
      • ただ、連続した文字列だとマスキングされないことがある
        • AWS Account IDをSecretに書いていてもARNでは見えたりした
    • 明示的にマスキングするように書くとよい
      • echo "::add-mask::sinofseven"
        • これより後ではsinofsevenという文字列がマスクされる
        • このechoの出力ではマスクされない
1

メモを他の人に見せる

このメモを見せたい人に、このURL(今開いているページのURLです)を教えてあげてください

コメント(0)

  • someone

  • someone