2016-08-01 19 views
14

Tôi đã tạo nhóm s3 với một số tệp. Tôi đã tạo phân phối CloudFront với thùng S3 đó là nguồn gốc và nó đã thay đổi trạng thái để triển khai.AWS CloudFront trả lại http 307 khi xuất xứ là thùng S3

Khi tôi cuộn tròn CloudFront đối với bất kỳ tập tin tôi nhận được:

<Error><Code>TemporaryRedirect</Code><Message>Please re-send this request to the specified temporary endpoint. Continue to use the original request endpoint for future requests.</Message><Bucket>MY-BUCKET</Bucket><Endpoint>MY-BUCKET.s3-eu-west-1.amazonaws.com</Endpoint><RequestId>...</RequestId><HostId>...</HostId></Error> 

Khi tôi cuộn tròn xô S3 của tôi cho bất kỳ tập tin tôi nhận được rằng nội dung file.

Tôi đang làm gì sai? Làm thế nào để lực lượng cloudfront để cache các tập tin để khách hàng không cần phải lấy dữ liệu từ S3 trực tiếp?

+0

Bạn đã thử Curl ngay khi bạn nhận được thông báo được triển khai chưa? – error2007s

+0

@ error2007s hơn 3 giờ nó được triển khai, nhưng tin nhắn vẫn tồn tại – user3231055

+0

Vùng của bạn là gì? Điểm cuối của nhóm mà bạn đã chỉ định trong phân phối CloudFront của bạn là gì? –

Trả lời

22

Thx Matt Houser từ nhận xét đến bài đăng đầu tiên của tôi!

Có vẻ như CloudFront đã lưu trong bộ nhớ cache yêu cầu đầu tiên của tôi đối với tệp khi bản phân phối chưa sẵn sàng hoàn toàn (nhưng nó đã ở trạng thái được triển khai tại thời điểm đó, vì vậy hãy cẩn thận!). Tôi đã yêu cầu không hợp lệ đối với tất cả các tệp trong bộ nhớ cache, mất vài phút, nhưng sau khi việc vô hiệu được thực hiện, tất cả các tệp đều được cuộn bằng http 200 bằng cách sử dụng url CloudFront.

Vấn đề trở nên rõ ràng sau những nhận xét từ Michael-sqlbot:

Tất cả xô có ít nhất hai tên máy chủ endpoint REST. Trong eu-west-1, chúng là example-bucket.s3-eu-west-1.amazonaws.com và example-bucket.s3.amazonaws.com. Giá trị đầu tiên sẽ ngay lập tức là hợp lệ khi tạo nhóm. Điều thứ hai - đôi khi được gọi là là "điểm cuối toàn cầu" - là thiết bị đầu cuối CloudFront sử dụng - sẽ không, trừ khi thùng ở phía đông-1 của chúng tôi. Trong một khoảng thời gian giây đến phút, được thay đổi theo vị trí và các yếu tố khác, nó sẽ trở thành cũng có thể truy cập toàn cầu. Trước đó, chuyển hướng 307 được trả về là . Do đó, xô không sẵn sàng.

+3

Trên thực tế, đó không phải là * phân phối * chưa hoàn toàn sẵn sàng. Nếu nó chưa sẵn sàng, nó sẽ không hoạt động. [Đó là * thùng * chưa sẵn sàng] (http://docs.aws.amazon.com/AmazonS3/latest/dev/Redirects.html). Chuyển hướng tạm thời là bình thường trong vài phút đầu tiên của cuộc đời của nhóm mới, đôi khi lâu hơn một chút, khi nhóm không ở trong vùng phía đông-1 của chúng tôi, vì cách mà DNS điểm cuối toàn cầu hoạt động. Các phản hồi được cung cấp từ bộ nhớ cache của CloudFront cũng có tiêu đề 'Age:', điều này có thể gợi ý rằng những gì bạn nhìn thấy được lưu trữ. –

+0

@ Michael-sqlbot ý bạn là gì dưới gầm xe chưa sẵn sàng? Nó đã được cuộn tròn bình thường và không có mặt tiền cùng một lúc. – user3231055

+1

Tất cả các nhóm có ít nhất hai tên máy chủ lưu trữ điểm cuối REST. Trong eu-west-1, chúng là example-bucket.s3-eu-west-1.amazonaws.com và example-bucket.s3.amazonaws.com. Giá trị đầu tiên sẽ được áp dụng hợp lệ khi tạo nhóm. Điều thứ hai - đôi khi được gọi là "điểm cuối toàn cầu" - là một điểm cuối của CloudFront - sẽ không, trừ khi thùng ở phía đông-1. Trong một khoảng thời gian từ vài giây đến vài phút, được thay đổi theo vị trí và các yếu tố khác, nó trở nên được chấp nhận trên toàn cầu. Trước đó, chuyển hướng 307 được trả về. Do đó, xô không sẵn sàng. –

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