568 Views
March 03, 25
スライド概要
2025/2/27(木)
株式会社セゾンテクノロジー主催 Color Is LT大会にてお話しさせていただいた内容です
GitHub Actions × AWS Nukeで 不要リソースの一括削除らくらく定期実行! (株)セゾンテクノロジー 青木 菜摘
アジェンダ 1. 自己紹介 2. はじめに 1. AWS Nukeとは 2. GitHub Actionsとは 3. AWS ⇔ GitHub ⇔ Slack の連携、実行 4. メリットと注意点
自己紹介 株式会社セゾンテクノロジー クラウドプラットフォーム部 青木菜摘 普段の業務内容: 主にAWSを用いたクラウドインフラ基盤の提案/構築 趣味: ・ 旅行、お出かけ ・ バンドの音楽鑑賞、ライブ参戦 ・ Youtubeで動画を見ること
はじめに あるAWS環境の管理者として環境に かかるコストを削減中 特定のタグ(Owner)が付いていない リソースを定期的に一括削除したい 削除予定のリソースを一覧にし、Slack に自動で連携、周知したい
AWS Nukeとは AWS環境内のすべてのリソースを一括削除できるオープンソースツール ◼ サービス別にフィルタリングして削除可能 ◼ タグを指定して削除するリソースをフィルタリング可能 ◼ Dry-runで削除予定のリソースを確認可能 Nuke最新バージョンのリポジトリ
GitHub Actionsとは リポジトリに保存したコードの実行フローを自動化できるGitHubの機能 ◼ 好きな処理をワークフローファイルにジョブとして定義可能 ◼ 好きなスケジュールやイベントで処理をトリガーし、自動実行可能 ◼ IAM OIDC ID プロバイダーを用いた一時的な認証情報で IAMロールを引き受け、AWS環境へのセキュアなアクセスを実現可能
GitHub ⇔ AWS環境の接続 IAM OIDC ①認証リクエスト ② ④結果 ③ Nuke実行 参考サイト: https://dev.classmethod.jp/articles/githubactions-aws-nuke/
GitHub ⇔ AWS環境の接続 IAMコンソールで IDプロバイダー選択 「OpenID Connect」を選択してリクエスト用URLを入力し、 対象者にstsを選択
GitHub ⇔ AWS環境の接続 任意のポリシーをアタッチした Nuke実行用IAMロールを 作成 ワークフローファイルからの認証用URL経由の アクセス時にassume roleを許可
GitHub ⇔ AWS環境の接続 GitHubの Organizations名 任意のポリシーをアタッチした Nuke実行用IAMロールを 作成 リポジトリ名 ワークフローファイルからの認証用URL経由の アクセス時にassume roleを許可
GitHub ⇔ AWS環境の接続 GitHub Actionsで、 ◼ Nuke実行用のワークフローファイル ◼ Nuke実行用のnuke-configファイル ◼ Slack連携用のワークフローファイル を作成する 今回のシステムの使用ファイル
GitHub ⇔ AWS環境の接続 ◼ Nuke実行用のワークフローファイル ◼ Slack連携用のワークフローファイル 所属組織で設定されているセルフホステッド ランナーがある場合、そのランナー名を設定する
GitHub ⇔ AWS環境の接続 ◼ Nuke実行用のnuke-configファイル フィルタリングしたいタグのキー、バリューを 設定する
GitHub ⇔ Slackの接続 Slack apiのIncoming Webhooksで通知 ①通知用のSlack Appを作成 ②発行されるWebhook URLをGitHubのSlack連携用ワークフローファイルで使用 参考サイト: https://qiita.com/seratch/items/28d09eacada09134c96c
ワークフローを実行してみる ワークフロー成功時のActions画面 Slackにも同時通知
メリット 事前準備・運用がラクラク! ◼ AWS側の準備はIAMロールとOIDCプロバイダーを作成するだけでOK ◼ GitHubにソースを保存しつつ実行まで自動化 ◼ 定期実行もNuke実行用のワークフローファイルの項目を編集するだけ
注意点 Organizations配下であることでうまく作動しなかったパターン ◼ 所属組織指定のセルフホステッドランナーを指定していない ◼ IAMロールの信頼ポリシーで、repo:の後にユーザ名を設定してしまう (Organizations配下の場合はユーザ名でなくOrganizations名を入力)
注意点 実行後の影響 ◼ NukeがIAMのSAML設定やIAMロールアタッチメントを削除したことで 許可セットの情報が失われ、アカウントにログインできなくなったり、Nukeが 動作できなくなる ◼ あるサービスの削除の際、エラーによりNukeの処理自体が途中で止まって しまうことがある(原因不明…)
コスト削減の成果 2024/7 $10582.23 約93万円削減! 2025/2 $4375.44(予測)
ありがとうございました