Return 一个默认对象,没有错误,当找不到请求的对象时,来自 S3
Return a default object, without error, when requested object is not found, from S3
当请求的对象不是 found/available 时,是否可以将 S3 存储桶配置为 return 默认对象?我不想 return 任何类型的 403 或 404 错误。
[编辑以反映下面的评论]
在标准模式下,当请求的对象不可用时,无法将 Amazon S3 配置为 return 默认对象。
当对象不存在时,默认行为是 return HTTP 403
# existing object
$ curl -I http://s3-eu-west-1.amazonaws.com/public-sst/wifi.jpg
HTTP/1.1 200 OK
x-amz-id-2: K8PxI6YUES0Ua2/rPaLwKhmhZv/lVMbWnvagmfQpzs2BI6NNyHplTB4ROaYvIXCWtE/S+xXIImk=
x-amz-request-id: 9853D002E3968F0D
Date: Mon, 16 Feb 2015 11:08:56 GMT
Last-Modified: Sun, 30 Nov 2014 21:15:06 GMT
ETag: "553353dcf5d98841970e95a6d1af0741"
Accept-Ranges: bytes
Content-Type: image/jpeg
Content-Length: 113572
Server: AmazonS3
# non existing object
$ curl -I http://s3-eu-west-1.amazonaws.com/public-sst/wifi.png
HTTP/1.1 403 Forbidden
x-amz-request-id: F78E2F047DC09F00
x-amz-id-2: wydGOgs8aHMn1qc5MLbNjKGKyqshpBhA0kCgWX0zHUm0fXFRU7Z1eWdPKgtkv2ZVtPPhAqP+O+k=
Content-Type: application/xml
Transfer-Encoding: chunked
Date: Mon, 16 Feb 2015 11:08:59 GMT
Server: AmazonS3
当 Amazon S3 配置为网站托管模式时(根据 http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html),默认行为不同:
- HTTP 403 return当对象不可公开读取时
- 当对象或存储桶不存在或者存储桶未配置为网站时,return会编辑 HTTP 404。
Web 托管模式下的 Amazon S3 可以配置为 return 自定义错误页面,而不是 Amazon S3 生成的默认 HTML HTTP 404 错误。
原问题也提到了 HTTP 403:没有办法,仅使用 Amazon S3 将 Amazon S3 配置为 return HTTP 403 上的自定义错误页面。详细信息位于 http://docs.aws.amazon.com/AmazonS3/latest/dev/CustomErrorDocSupport.html
要return HTTP 403 和 404 上的自定义错误页面,您可以在 Amazon S3 存储桶前面使用 CloudFront。
Cloudfront 可以配置为 return 由 Amazon S3 return 编辑的任何 HTTP 4xx 或 HTTP 5xx 错误的自定义错误页面。
CloudFront Distributions 无需额外费用,您只需为来自 CloudFront 的带宽付费。 CloudFront 传出带宽成本低于 S3 传出带宽(0.09 美元/Gb),因此使用 CloudFront 应该是轻而易举的事。
当请求的对象不是 found/available 时,是否可以将 S3 存储桶配置为 return 默认对象?我不想 return 任何类型的 403 或 404 错误。
[编辑以反映下面的评论]
在标准模式下,当请求的对象不可用时,无法将 Amazon S3 配置为 return 默认对象。
当对象不存在时,默认行为是 return HTTP 403
# existing object
$ curl -I http://s3-eu-west-1.amazonaws.com/public-sst/wifi.jpg
HTTP/1.1 200 OK
x-amz-id-2: K8PxI6YUES0Ua2/rPaLwKhmhZv/lVMbWnvagmfQpzs2BI6NNyHplTB4ROaYvIXCWtE/S+xXIImk=
x-amz-request-id: 9853D002E3968F0D
Date: Mon, 16 Feb 2015 11:08:56 GMT
Last-Modified: Sun, 30 Nov 2014 21:15:06 GMT
ETag: "553353dcf5d98841970e95a6d1af0741"
Accept-Ranges: bytes
Content-Type: image/jpeg
Content-Length: 113572
Server: AmazonS3
# non existing object
$ curl -I http://s3-eu-west-1.amazonaws.com/public-sst/wifi.png
HTTP/1.1 403 Forbidden
x-amz-request-id: F78E2F047DC09F00
x-amz-id-2: wydGOgs8aHMn1qc5MLbNjKGKyqshpBhA0kCgWX0zHUm0fXFRU7Z1eWdPKgtkv2ZVtPPhAqP+O+k=
Content-Type: application/xml
Transfer-Encoding: chunked
Date: Mon, 16 Feb 2015 11:08:59 GMT
Server: AmazonS3
当 Amazon S3 配置为网站托管模式时(根据 http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html),默认行为不同:
- HTTP 403 return当对象不可公开读取时
- 当对象或存储桶不存在或者存储桶未配置为网站时,return会编辑 HTTP 404。
Web 托管模式下的 Amazon S3 可以配置为 return 自定义错误页面,而不是 Amazon S3 生成的默认 HTML HTTP 404 错误。
原问题也提到了 HTTP 403:没有办法,仅使用 Amazon S3 将 Amazon S3 配置为 return HTTP 403 上的自定义错误页面。详细信息位于 http://docs.aws.amazon.com/AmazonS3/latest/dev/CustomErrorDocSupport.html
要return HTTP 403 和 404 上的自定义错误页面,您可以在 Amazon S3 存储桶前面使用 CloudFront。
Cloudfront 可以配置为 return 由 Amazon S3 return 编辑的任何 HTTP 4xx 或 HTTP 5xx 错误的自定义错误页面。
CloudFront Distributions 无需额外费用,您只需为来自 CloudFront 的带宽付费。 CloudFront 传出带宽成本低于 S3 传出带宽(0.09 美元/Gb),因此使用 CloudFront 应该是轻而易举的事。