AWS S3とCloudFrontへのデプロイ
GitHub Actionsを使用して静的ウェブサイトをAWS S3にデプロイし、CloudFrontキャッシュを無効化。OIDC認証、sync、無効化を解説。
Deployment
詳細な説明
AWS S3 + CloudFrontデプロイメント
CloudFront CDN無効化を伴うAWS S3へのデプロイは、静的ウェブサイトとシングルページアプリケーションの一般的なパターンです。このワークフローはOIDCベースの認証を使用し、長期間有効なAWS認証情報の保存を回避する推奨アプローチです。
ワークフローYAML
name: Deploy to AWS
on:
push:
branches:
- main
permissions:
id-token: write
contents: read
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::123456789012:role/GitHubActionsRole
aws-region: us-east-1
- name: Sync to S3
run: aws s3 sync ./dist s3://my-website-bucket --delete
- name: Invalidate CloudFront
run: aws cloudfront create-invalidation --distribution-id E1234567890 --paths "/*"
OIDC認証(推奨)
AWSアクセスキーをシークレットとして保存する代わりに、このワークフローはOpenID Connect(OIDC)を使用してIAMロールを直接引き受けます。
主要ステップの説明
aws s3 sync --delete: ビルドディレクトリをS3に同期し、新しい/変更されたファイルをアップロードし、ローカルに存在しなくなったファイルを削除します。- CloudFront無効化: CDNキャッシュをクリアして、訪問者がすぐに最新バージョンを見られるようにします。
コスト最適化
CloudFront無効化は月間最初の1,000パスまで無料です。/*は1つのパス無効化としてカウントされます。
ユースケース
グローバルCDN配信を伴うAWS上での静的ウェブサイト、シングルページアプリケーション、またはドキュメントサイトのホスティング。コンプライアンス、既存アーキテクチャ、または高度なキャッシュ設定のためにAWSインフラを必要とするチームが使用します。