web-dev-qa-db-ja.com

デフォルトのキャッシュ制御を設定し、S3バケット/ CloudFront全体の有効期限が切れます

大規模なウェブサイトで使用される約30万のアイテムが入ったAmazon S3バケットがあります。 CloudFrontからS3バケットから提供されるすべてのオブジェクトの有効期限を設定して、ユーザーのマシンがブラウザーにキャッシュできるようにします。現在バケットにあるすべてのs3オブジェクトにキャッシュ制御を設定する簡単な方法はありますか[〜#〜]および[〜#〜]最も重要ですバケットのデフォルトを設定して、追加された新しいアイテムにも有効期限とキャッシュ制御ヘッダーが付与されるようにします[〜#〜]または[〜#〜]これはCloudFrontを使用して実行できますか?

これまでにいくつかのAWSドキュメントを読みましたが、何も見つかりませんでした。

21
dpegasusm

バケット内の既存のオブジェクトのキャッシュ制御を追加する手順

  1. git clone https://github.com/s3tools/s3cmd
  2. S3cmd --configureを実行します(2つのキーを求められます-確認メールまたはAmazonアカウントページからコピーして貼り付けます。コピーするときは注意してください!大文字と小文字が区別されるため、正確に入力する必要があります。無効な署名などに関するエラーが発生します。s3:ListAllMyBuckets権限をキーに追加してください。そうしないと、アクセスのテスト中にAccessDeniedエラーが発生します。)
  3. ./s3cmd --recursive modify --add-header = "Cache-Control:public、max-age = 31536000" s3:// your_bucket_name /

CloudFrontの場合、最小TTL、最大TTL、およびデフォルトTTL)を指定できます。これらは基本的にはCloudFrontでオブジェクトをキャッシュできる時間。オブジェクトの有効期限ヘッダーを追加することとは関係ありません。つまり、ヘッダーを変更しません

そのため、ヘッダーを追加していない場合、cloudfrontはそれをDEFAULT TTL用にキャッシュします。テーブルの詳細については、次を参照してください http://docs.aws.Amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html#ExpirationDownloadDist

16