会社案内ダウンロードMMMブログ2020-01-19サイトリニューアル時のURLリダイレクトをLambda@Edgeで実現する弊社では昨年9月にコーポレートサイトをリニューアルしました。リニューアルの経緯などについてはMMMのサイトリニューアルの経緯に書いてあるのですが、リニューアルに伴いコンテンツの構成が変更になるため、URLも変更する必要がありました。URLの変更はコンテンツの変更を伴ったサイトリニューアル時にはしばしば発生します。その際、検索エンジンにしばらく旧URLがインデックスされていたり、旧URLのブックマークから直接アクセスされたりすることがあるので、新URLへリダイレクトする設定をしておきたいです。する方法について書いてみたいと思います。大前提として旧URLと新URLのマッピングが必要です。https://mmmcorp.co.jp/service/serverlessarchitecture/のようなマッピングをエクセルなどで整理しておきましょう。その上での技術的な話となりますが、リダイレクトの一般的な対応方法としてはWebサーバーでリダイレクトをかけることが多いかと思います。Webサーバーが例えばApacheであれば.htaccessファイルなどで設定します。新コーポレートサイトにおいてはAWSのS3およびCloudFrontを利用して静的なコンテンツ配信を実施しています。コスト削減などメリットが非常に大きいのですが、それだけではWebサーバーでの転送ができないという問題があります。そこで、本ケースにおいて有効なLambda@Edgeを利用した転送を実施することにしました。Lambda@EdgeとはLambda@Edgeの読み方はラムダアットエッジだと思います。(ただ、私はラムダエッジと呼んでいます。実行できる仕組みです。サーバーレスな仕組みであり、自前でサーバーを用意する必要はありません。CloudFrontは静的なコンテンツ配信のサービスであり、Webサーバーで実現できる動的な制御が難しいのですが、Lambda@Edgeはその問題を解決できます。今回のURLのリダイレクト以外にも非常に様々なことが実現できます。これは以前の弊社ブログS3静的ウェブホスティング+CloudFront+Lambda@EdgeでBasic認証をかけるでも紹介しています。こちらも以前の弊社ブログLambda@Edgeでアクセス元の国を判別してリダイレクトでも紹介しています。アクセスをバージョンA/Bにランダムに割り当てるようクッキーをセットし、ページを振り分けるといったことが可能です。実際のプログラム例それでは実際のプログラム例をご紹介します。(ここにURLのマッピングを愚直に設定しています。時に上記プログラムを実行するようにしており、マッピングに合致するURLへのアクセスであればリダイレクト、合致しないURLであればそのままアクセスできるようにしています。Lambda@Edgeでページをリダイレクトする際の注意事項Lambda@Edgeはプログラムを書いて動作させることになりますので、当然バグを作り込んでしまう可能性があります。Lambda@Edgeはサイトアクセス時に必ず動作させるプログラムになりますので、サイトにアクセスできなくなってしまうというような重大バグを作り込んでしまう可能性も大いにあります。バグを作り込まないように以下のような対応が考えられます。実際弊社でも後者2つの対応を実施しています。これはかなり面倒で、今回は自社コーポレートサイトというサービスの事情も踏まえ、テストコードは書いていません。本番と同様の環境を用意し、期待通りのリダイレクトが動いているかテストをしてから本番にリリースします。万が一、本番のLambda@Edgeプログラムを間違って書いて、サイトアクセスできない事態になってしまっても、それをすぐに検知できるように監視します。弊社ではDatadogを利用した監視を実施しています。まとめ今回、サイトリニューアル時にLambda@EdgeでURLのリダイレクトを実現する方法をご紹介いたしました。CloudFrontを利用した静的なサイトホスティングをご提案させていただいております。CloudFrontでの静的ホスティングが不可能だった案件においても、Lambda@Edgeを利用することで可能になるケースも増えてくると考えています。SEOやメンテナンスコストを考慮したサイトリニューアルについてお気軽にお問い合わせページからご相談ください!最適なサイトリニューアルのアーキテクチャをご提案いたします。採用メンバー紹介リモートワーク健康管理ソリューション・サービスお問い合わせ見積もり依頼や詳しいご相談など、クラウド・AWSに関する困りごとをお気軽にご相談ください。以下のお問い合わせ先から受け付けています。お問合わせはこちら※通常1営業日内にご回答いたします。