概要
最近Amplify ConsoleからCloudFront+S3へ移行する検討をしたり実際に移行したので、それぞれの違いをまとめてみました。
まとめ
- Amplify Consoleは手軽だけどそれ以上のことはできない(しづらい)
- 気軽にリリースしたい・開発環境で気軽に動作確認したい場合にベスト
- Amplifyにオールインワンで作れて楽(CI/CDも含む)
- インフラ/AWSの知識もそこまでいらない
- CloudFront+S3は設定の手間があるがいろいろできる
- 細かい設定ができる
- セキュリティ要件がある場合や大規模環境・本番環境などに安心
- コード書くことでさらになんでもできる
- 細かい設定ができる
※以下では「Amplify Console」を略して「Amplify」と記載しています。
Amplify Consoleの特徴
特徴(メリット)
- Amplifyにオールインワンで作れる
- フロントエンドとバックエンドも1つで管理できる
- ※今回バックエンド(API)の方の話はスコープ外としています
- 手軽に作れる
- リダイレクト設定・カスタムヘッダー設定も簡単
- マージ前プレビュー機能もなかなか便利
- Basic認証とかの機能もつけられる
補足
- amplify CLIで作成するとS3/CloudFrontがAWS上で見える・触れるようになるので、amplifyで作成後に手を加えられるようになるが、気軽さが失われるのでそれならCloudFrontから作ればいいかと
- そもそも「手を加えられる」=「その知識がある」
- AWSリソース責務がamplifyとCloudFront各々に散らばるので、そこまでするなら個人的にはamplifyやめた方がいいのではと
- 管理が辛い
- 用途が合ってない可能性(※それがベストな可能性もあります)
CloudFront + S3の特徴
特徴(メリット)
- Lambda@edge、CloudFront Functionsが使える(リクエスト/レスポンス間にコードの処理を挟める)
- カスタムエラーページの導入/遷移・レスポンスやステータスコードの動的変更が可能
- S3,CloudFrontの細かいパラメータ設定が可能
- キャッシュTTL・キャッシュポリシー
- パスパターンなどでのマルチオリジン
- amplifyはモノレポはできるがマルチオリジンとは違う
- セキュリティポリシー(TLSバージョン)
- CDN反映先の国の制限
- バケットポリシーによるアクセス制限変更
- あまりないが、運用バッチなどでS3直アクセスしたい場合などを想定
- その他いろいろetc...
- DNSレコードをCNAMEではなくAliasレコード(CNAMEを内部でAレコードに変換)で設定可
補足
- S3のみによる「S3静的ホスティング」という方法もありますが、詳細は割愛。
※Twitter始めました!
良かったらぜひ。
Twitter ID → @365_step_tech