2013-06-17 25 views
13

Tôi biết cloudfront cung cấp cơ chế làm mất hiệu lực tệp, nhưng nếu tôi muốn vô hiệu hóa tất cả các tệp trong một thư mục cụ thể thì sao? Tài liệu đề cập rằng tôi không thể sử dụng các ký tự đại diện để thực hiện việc này.Vô hiệu hóa tất cả các tệp trong một thư mục trong bảng điều khiển đám mây

Dưới đây là hướng dẫn lấy từ các tài liệu chính thức:

Bạn phải vô hiệu hóa một cách rõ ràng mọi đối tượng và mọi thư mục mà bạn muốn CloudFront ngừng phân phối. Bạn không thể sử dụng các ký tự đại diện để vô hiệu hóa các nhóm đối tượng và bạn không thể vô hiệu hóa tất cả các đối tượng trong một thư mục bằng cách chỉ định đường dẫn thư mục.

Trả lời

15

Trở lại năm 2013, trong một phiên bản trước của câu trả lời này, tôi đã viết: "thư mục"

Bạn không thể làm điều này vì "tác phẩm" trong CloudFront đang không ở trong Mọi thứ đều là một đối tượng và mọi đối tượng đều độc lập.

Vào thời điểm đó, điều đó hoàn toàn đúng. Đúng là mọi thứ đều là một đối tượng và mọi đối tượng đều độc lập, nhưng CloudFront đã thay đổi logic vô hiệu của nó. Hãy đọc tiếp.

Vào thời điểm đó, đây cũng là sự thật, và một lần nữa, đến một mức độ nhất định, nó vẫn là:

tài liệu

Các CloudFront đề cập đến "thư mục hủy bỏ hiệu lực," nhưng điều này đề cập đến các trang web mà thực sự cho phép một thư mục liệt kê [khi] danh sách là những gì bạn muốn vô hiệu hóa, vì vậy điều này cũng không giúp bạn.

Tuy nhiên, thời gian đã thay đổi đáng kể.

Về mặt kỹ thuật, mỗi đối tượng vẫn độc lập và CloudFront không thực sự lưu trữ chúng trong các thư mục phân cấp, nhưng giao diện vô hiệu đã được cải tiến để hỗ trợ khớp ký tự đại diện được neo bên trái. Bạn có thể làm mất hiệu lực nội dung của một "thư mục" hoặc bất kỳ số lượng đối tượng nào mà bạn có thể khớp với một ký tự đại diện ở cuối chuỗi. Bất cứ điều gì phù hợp sẽ bị đuổi khỏi bộ nhớ cache:

Để vô hiệu hóa đối tượng, bạn có thể chỉ định một trong hai con đường cho các đối tượng cá nhân hay một con đường mà kết thúc với * ký tự đại diện, mà có thể áp dụng cho một đối tượng hoặc để nhiều người, như thể hiện trong các ví dụ sau:

/images/image1.jpg

/images/image*

/images/*

—   http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html

đẹp tăng cường. Nhưng có một bắt?

Khác với thực tế là một yêu cầu vô hiệu hóa - như mọi khi - 10 đến 15 phút để hoàn thành trong các hoạt động bình thường, câu trả lời là không, không thực sự là một bắt. Đường dẫn hủy hợp lệ 1.000 đầu tiên (trước đây là "yêu cầu" và "yêu cầu" dành cho một đối tượng duy nhất) bạn gửi trong vòng một tháng là miễn phí; sau đó, có một khoản phí, nhưng:

Giá là như nhau cho dù bạn đang vô hiệu hóa các đối tượng riêng lẻ hoặc sử dụng * ký tự đại diện để vô hiệu hóa nhiều đối tượng.

—   http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html#PayingForInvalidation

Lưu ý rằng nếu bạn không bao gồm các * ở cuối, sau đó là một hiệu lực cho /images/ (ví dụ) sẽ chỉ nói CloudFront để vô hiệu hóa bất cứ đối tượng duy nhất của bạn máy chủ gốc trả về cho các yêu cầu cho /images/.

Dấu gạch chéo hàng đầu được ghi lại là tùy chọn.

6

Chừng nào bạn muốn vô hiệu hóa một số tiền hợp lý của các đối tượng, một trong những cách dễ dàng hơn tôi đã tìm thấy là để chọn các đối tượng trong Cyberduck, nhấn chuột phải chọn >Info và click vào tab Distribution và bạn có thể làm mất hiệu lực từ đó . Cyberduck sẽ gửi một yêu cầu vô hiệu đến Cloudfront của bạn với danh sách các tệp đã chọn.

Cyberduck cũng là nguồn mở.

enter image description here

ps: không liên kết với các sản phẩm trong bất kỳ cách nào. Chỉ cần liệt kê một giải pháp thay thế.

+0

Đây là một cách tuyệt vời để làm điều đó, nhưng chỉ khi bạn thiết lập phân phối Cloudfront thông qua Cyberduck. Cyberduck dường như không thể nhận ra một bản phân phối Cloudfront đã tồn tại. – Scottie

+2

@Scottie - Tôi đã thiết lập tất cả Cloudfront của mình thông qua giao diện điều khiển web amazon .. cyberduck của tôi không thực sự nhận ra url của CDN (và do đó cung cấp cho tôi url trống) nhưng nó vẫn cho phép tôi vô hiệu hóa tệp. – iamserious

+0

Huh! Sẽ phải cung cấp cho rằng một cái nhìn gần hơn sau đó. Cảm ơn! – Scottie

6

Kể từ 2015-05-25, bạn có thể vô hiệu bằng cách sử dụng ký tự đại diện. Ex: /* hay /images/*

Nó cũng là ít tốn kém để làm điều đó theo cách này, như một cái gì đó giống như /images/* đếm như một đối tượng cho huỷ bỏ hiệu lực, chứ không phải là bị tính phí cho hàng ngàn hình ảnh trong thư mục/images.

http://aws.amazon.com/about-aws/whats-new/2015/05/amazon-cloudfront-makes-it-easier-to-invalidate-multiple-objects/

+0

Cuối cùng! Đó là tin tốt. – iamserious

+0

Đúng, đủ rồi. Thật kỳ lạ, sự chú ý của tôi đã được rút lại cho câu hỏi này bởi vì tôi đã nhận được một câu trả lời vào ngày hôm qua về câu trả lời lỗi thời của tôi từ hai năm trước - tôi đánh giá rất cao - nhưng câu trả lời của tôi đã được sửa đổi để phản ánh tình trạng hiện tại. –

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