2012-01-18 49 views
13

Có thể có các tiêu đề tùy chỉnh trên Amazon S3 bằng cách đặt tên tùy ý không? Ví dụ: Tôi đang sử dụng CDN trỏ tới Amazon S3 làm máy chủ gốc và để bật chức năng nâng cao trên CDN, tôi cần sử dụng tiêu đề tùy chỉnh "x-something-something" ...Tiêu đề tùy chỉnh trên Amazon S3

Tôi thấy nó có thể làm điều này với "x-amz-meta- (cái gì đó)" nhưng những gì về một cái gì đó chung chung hơn như "x- (cái gì đó) - (cái gì)" mà không có amz?

Amazon S3 custom headers

+0

Bạn không thể thực hiện điều gì với tiêu đề được đặt trước theo cách đó? – Kekoa

Trả lời

11

Tôi không nghĩ rằng nó có thể với current API của họ. Chúng bao gồm các tiêu đề chính bạn sẽ cần cho bộ nhớ đệm và khả năng tương tác của trình duyệt.

Tôi nghĩ rằng chúng an toàn khi chỉ cho phép x-amz-meta- đầu đề tùy chỉnh được đặt trước, có thể để tránh xung đột với tiêu đề được chọn của người dùng khi họ cập nhật api của chúng trong tương lai.

Nếu bạn cần thuộc tính tùy chỉnh được đính kèm với các đối tượng của bạn, nó sẽ không quan trọng để phân tích cú pháp x-amz-meta- trong ứng dụng khách của bạn.

+5

"tầm thường" nếu bạn kiểm soát ứng dụng khách ... nhưng nếu đó là một số bên thứ ba, nó không quá tầm thường! – Jeff

+1

@ Jeff Tôi cho rằng nếu bạn không truy cập trực tiếp vào AWS, bạn sẽ được nhìn thấy những hạn chế của bất cứ điều gì bạn đang sử dụng. – Kekoa

+0

Cảm ơn, tôi đã tự hỏi tại sao tôi không thể đặt tiêu đề tùy chỉnh một mình. 'X-amz-meta-'prefix đã làm nó thực sự (một thực tế kém tài liệu của Amazon). – Frederic

5

bài viết đẹp này giải thích tất cả https://medium.com/@tom.cook/edge-lambda-cloudfront-custom-headers-3d134a2c18a2

TLDR:

bạn không thể trang làm chỉ với s3. Bạn cần sử dụng Cloudfront và lambda qua Lambda @ Edge. Đó là sự tích hợp giữa Lambda và CloudFront. Nó cho phép bạn chạy Lambdas trong CloudFront. Điều này cho phép bạn thay đổi tiêu đề trong số những thứ khác. Vì vậy, nếu bạn đang ok truy cập s3 của bạn thông qua CloudFront thì đây có thể là một lựa chọn khả thi.

0

Tôi có thể đạt được điều này bằng cách sử dụng s3cmd tool. Tôi đã viết một kịch bản đồng bộ mà đồng bộ trang web tĩnh của tôi bằng cách sử dụng tham số --cache-control vào công cụ client AWS và sau đó tự reset nó và thêm một vài tiêu đề khác cho một vài tác phẩm cụ thể:

cd/appropriatedirectory

# xóa trang web hiện tại
AWS s3 rm s3: // yourbucket --recursive --exclude 'logs/*'

# Tải lên trang web mới, thiết lập tiêu đề bộ nhớ cache để 1 tháng cho tất cả các file
AWS s3 đồng bộ. s3: // yourbucket --exclude '.idea/*' --exclude '.git/*' --exclude '.gitignore' --cache-control max-age = 2592000

# Ghi đè tiêu đề bộ nhớ cache cho một số tệp
python/pathToS3cmd/s3cmd sửa đổi --add-header = "Cache-Control: không có bộ nhớ cache, không lưu trữ, phải xác thực lại" s3: //yourbucket/somefile.html
python/pathToS3cmd/s3cmd/s3cmd sửa đổi --add-header = "Hết hạn: 0" s3: //yourbucket/somefile.html
python/pathToS3cmd/s3cmd/s3cmd sửa đổi --add-header = "Pragma: no-cache" s3: // yourbucket /somefile.html

+0

Điều này có một số cruft trong nó cho bỏ qua các bản ghi, IntelliJ, và các tập tin Git. Tôi để nó như là một ví dụ hữu ích hy vọng về một kịch bản đồng bộ thực tế. –

Các vấn đề liên quan