AWSS3のWebページリダイレクト機能をお試しして、これは便利だ、となった作業メモです。仕事でやってるいくつかのシステムで、Webコンテンツの画像資産がサーバ上に残っている問題があり、それをS3に持っていきたいねという流れがあって、本番と開発の差分をどうやって吸収&区別するかを悩んでいたりします。具体的には本番環境の画像が更新されたら開発環境にも展開したいただし開発環境で作業している画像はそのままにしたい開発が終わったファイルをそのまま開発環境から本番環境へ展開したいと言った要望があります。この要件を満たすためにいくつかの検討をしていて、その一つが「開発したいファイルだけ開発環境のS3におけると嬉しいのでは?」というものでした。作業メモS3バケットの作成まずは2つのS3バケットを作成しました。今回はこれだけなので普通にWebコンソールからやります。ポイントはWebホスティングをするためにパブリック設定をする必要がある点ですが、ドキュメントの通りにやるだけなので迷うことはありませんでした。バケットを設定する方法S3バケットポリシーは以下の様になりました。続いてテスト用のファイルを配置します。画像2つとindex.htmlだけのシンプルな構成です。2つのバケットの一方には猫の画像、もう一方には犬の画像が同名で配置してあります。index.htmlindex.htmlは以下です。さんから拝借しました。いつもありがとうございます。この状態でWebアクセスをします。ここで一点注意ですが、Webホスティング用のURLを利用しましょう。オブジェクト参照用のURLではないことに注意です。NGこっちはオブジェクト参照のURLで、リダイレクト効かないhttp://morihaya-test-public01.s3-ap-northeast-1.amazonaws.com以下のクールなWebページが参照できました。これは開発状態を想定しています。本番環境には犬の画像をアップしてしまったので、急いで修正しようとしている設定です。初期状態この状態でcat02の画像名を変更します。cat02.jpgをリネーム当然ですがcat02の画像は404が返ってきました。Hostingのメニューから、Webページリダイレクトに以下の設定を入れます。</RoutingRule></RoutingRules>その状態でキャッシュを消しつつリロードすると、以下の応答がきます。存在しないため、2つ目のバケットにリダイレクトされています。開発用のバケットにある猫の画像から、本番環境の間違ってアップした犬の画像が見えるようになった、という想定です。リダイレクトルールの追加後curlコマンドで確認しても、cat01.jpgは200が、cat02.jpgについては301がリターンされました。AmazonS3<まとめこの検証結果には大満足しました。機能としては十分と言えるでしょう。要望を振り返ると本番環境の画像が更新されたら開発環境にも展開したいOK。開発用のバケットになければ本番用のバケットにアクセスさせられるただし開発環境で作業している画像はそのままにしたいOK。開発用のバケットにあれば、それがそのまま表示される開発が終わったファイルをそのまま開発環境から本番環境へ展開したいOK。rsyncなどでまとめてデプロイするだけしかし、実際の運用として考えると「差分ファイルだけ配置する」というのは開発やデザイナ側に取って大変ではないかと言った懸念はあります。ディレクトリだけ作成しておく、とか工夫が必要と感じているので、利用する彼らと詰めていきたいと考えています。参加してきましたS3のWebページリダイレクト機能を試す2020年の目標ALBとTargetGroup一式をTerraformにimportしてみる2019年の振り返り月別アーカイブスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。