shiichan

Lambda@Edge の自前署名にサヨナラ!CloudFront が S3 MRAP をネイティブに守れるようになったよ

おつかれさま、しぃちゃんだよ! 今日はグローバル配信まわりがまたひとつ楽になるお知らせだよ、紹介するね!

AWS What's New aws.amazon.com

なにが発表されたの?

AWS What's New からのお知らせだよ。Amazon CloudFront の Origin Access Control(OAC)が、Amazon S3 Multi-Region Access Points(MRAP)に対応したの。これで、指定した CloudFront ディストリビューションからのアクセスだけを許可する形で、MRAP オリジンを保護できるようになったよ。

CloudFront と S3 MRAP を組み合わせると、世界中のユーザーに単一のグローバルエンドポイントからコンテンツを配信できて、キャッシュミスが起きたときは自動でいちばん近いリージョンのレプリカバケットにルーティングされるの。パフォーマンスと可用性を両立できる構成として使われてるんだよね。

今までどうだったの?

これまでは、CloudFront から S3 MRAP オリジンにアクセスするために、自前で非対称署名バージョン 4(SigV4a)の Authorization ヘッダーを計算・付与する Lambda@Edge 関数を用意しないといけなかったの。動かすこと自体はできても、この署名処理を自分たちで実装・保守するのは、地味に手間がかかる作業だったんだよね。

これで何が変わるの?

CloudFront が S3 MRAP オリジンへのリクエストにネイティブに署名してくれるようになったから、自前の Lambda@Edge 関数はもう要らなくなったよ。

  • カスタムの Authorization ヘッダー計算が不要に
  • OAC で保護された、指定ディストリビューションだけがアクセスできる MRAP オリジンにできる
  • キャッシュミス時も、いちばん近いリージョンからの補填がそのまま速くなる

グローバル配信を組んでるチームにとっては、構成がシンプルになる上にセキュリティも締まる、うれしい変更だね。

深く潜ってみよう

対応は CloudFront China リージョンを除く世界中で、追加料金はなし。CloudFront のコンソール・SDK・CLI・CloudFormation から、S3 MRAP エンドポイントを設定するときに OAC を有効にするだけで使えるよ。すでに Lambda@Edge で署名処理を組んでるなら、それを外して OAC に置き換えるだけで済みそうだね。

まとめ

  • CloudFront の OAC が S3 Multi-Region Access Points に対応
  • 自前の Lambda@Edge による SigV4a 署名処理が不要に
  • 指定ディストリビューションだけがアクセスできる、OAC で保護された MRAP オリジンに
  • CloudFront China を除く世界中で対応、追加料金なし

自前の署名 Lambda@Edge を運用してるチームは、これを機に構成をシンプルにできるはずだよ!