web-dev-qa-db-ja.com

AWSS3でカスタムレスポンスヘッダーを設定する方法

アプリケーションをオフラインモードにし、ServiceWorkerを登録したい。私のファイルはAWSS3でホストされており、バケットのルートにworker.jsを作成しました。 AWS S3 forworker.jsからの応答としてカスタムヘッダー「Service-Worker-Allowed」を返す必要がある場合があります。現在、カスタムヘッダーにはx-amz-metaヘッダーが必要ですが、これは使用できません。 CloudfrontまたはCloudfareを使用してそのヘッダーを追加する方法はありますか?または他の提案はありますか?

12
user2757853

S3またはcloudfrontでカスタムレスポンスヘッダーを設定することはできません。

AWSを使用する場合、2つの可能な回避策があります。

  1. リクエストをプロキシします。つまりec2で実行されているnginx/haproxyを使用する
  2. lambda@Edgeを使用します。

オプション2、lambda@Edgeはより簡単なソリューションです。クラウドフロントエッジノードからラムダ関数を実行するように設計されています。 lambda @ Edgeを使用して、カスタムjavascriptコードを実行できます。 httpリクエストがクラウドフロントに送信される前、またはhttpレスポンスがクラウドフロントから受信された後に実行するようにコードを設定できます。これにより、カスタムのリクエストヘッダーまたはレスポンスヘッダーを設定できます。これを行う方法の詳細については、 https://medium.com/@tom.cook/Edge-lambda-cloudfront-custom-headers-3d134a2c18a2 を参照してください。

11
Learner

現時点では不可能です。 S3では、プレフィックスx-amz-metaによるヘッダーと、キャッシュ用の標準ヘッダーのみを追加できます。

4
Reza Mousavi

AWS S3で、オブジェクトをクリックしてその設定に移動します。メタデータセクションでは、カスタムヘッダーを追加できます。 [メタデータの追加]をクリックするだけです。

これは、データのアップロード中にプログラムで実行することもできます。すべてのAPIは追加のメタデータをサポートしています。

3
hridayesh