1ヶ月ぶりのブログとなります!今回は、S3の静的Webサイトホスティング(Static Website Hosting)がAmplify Hostingに統合されました。以前はHTTPS対応のためにCloudFrontを設定する必要がありましたが、不要になったのは非常に便利ですね。ということで、試しにTerraform化とReactアプリをGitHub Actionsでデプロイしてみました。

https://aws.amazon.com/jp/blogs/news/simplify-and-enhance-amazon-s3-static-website-hosting-with-aws-amplify/

ちなみに、静的Webサイトホスティング関連のブログを発見しましたが…6年前!?とか衝撃的。

[AWS][static website hosting]S3でページごとにリダイレクトしたい!


Terraform

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/amplify_app

  • amplify.tf

Amplifyアプリをstagingで作成します。ReactのようなSPAの場合、custom_ruleを設定してすべてのルートをindex.html にリダイレクトします。Amplifyアプリとリポジトリのstagingとしてブランチをリンクします。この設定で特定のブランチがデプロイ対象になります。最後にカスタムドメインをAmplifyに割り当てます。ブランチごとに異なるドメインを設定することも可能です。

  • s3.tf

S3はすべてのデータをAES-256で暗号化しました。ちなみにKMSで暗号化しようと思ったところ、AmplifyはKMSに対応しておらず、いつまでもデプロイが失敗してしまうため気をつけましょう。(AWSサポートさん感謝)セキュリティ強化としてはHTTPS接続のみを許可します。権限はAmplifyがバケットを操作するように付与しました。
> 2024-11-19T01:13:39 [ERROR]: Something went wrong. Please try again later.


GitHub Actions

  • deploy_staging.yml

ReactのコードはGitHubで管理されているため、AmplifyのデプロイはGitHub Actionsで実装しました。環境ごとに環境変数でsecretsやenvを管理するのと、if文でstagingはworkflowでのデプロイとproductionの場合は追加すればmainマージでデプロイすることによって、actionsのymlファイルを一つで管理することができます。

Nodeのバージョン取得ですが、 node-version-file を指定すればわざわざバージョンアップするときに変更しなくても済むので楽ですね。デプロイの挙動としてはフロントエンドのbuild後にS3シンクしてもサイト側には影響ないのと、  aws amplify start-deployment で実行することによってAmplifyがいい感じに反映してくれるようです。カスタムドメインですが、Route53に自動で作成されてしまうので、あとでterraform importしたほうがよさそうです。

以下のようにデプロイできて、ドメインでアクセスできれば完了となります。

  • 動作確認


まとめ

S3静的WebサイトホスティングがAmplify Hostingに統合されたことで、フロントエンドのデプロイがより簡単かつ効率的になりました。特に、HTTPS化のためにCloudFrontを利用する必要がなくなり、設定のシンプルさが大幅に向上した点は非常に魅力的ですね。気になったところは、Amplifyがいい感じに設定してしまうため、カスタムドメインでAレコード先がCloudFrontのリンクになっていたり、ACMでの証明書が各サービスから見当たらなかったので、裏側で何が動いているのか判断できなくなってしまうといったところでしょうかね。

告知です!

年明けから開催されるSRE Kaigiで、Flat Security CTOの米内さんとAWSセキュリティの取り組みについてお話しします。ご興味のある方はぜひご参加ください!また、来月開催されるsrestさん主催の「渋谷でSRE大忘年会」もLTも決まったので、詳細はX(旧Twitter)をチェック!

 


adachin

1989年生まれのFindy/SRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWSでのインフラ構築、Docker開発環境の提供、IaC、新技術の検証、リファクタリング、セキュリティ強化、分析基盤の運用などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTA/TechBullで未経験者にインフラのコーチング/コミュニティマネージャーとして立ち上げと運営をしている。また、過去「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください