2009-02-20 37 views
12

Làm thế nào tôi có thể thay đổi url Amazon S3 từ http://bucket.amazons3.com/imagepath.jpg để http://image.mydomain.com/imagepath.jpgAmazon S3 Url viết lại

EDIT: Về cơ bản cả lý do cho điều này là để che giấu url s3 amazon từ người dùng của tôi.

Tôi đã suy nghĩ về một HttpModule sẽ chuyển hướng yêu cầu từ image.mydomain.com đến bucket.amazons3.com. Nhưng điều đó sẽ yêu cầu tất cả các yêu cầu phải được xử lý bởi máy chủ của tôi trước rồi được chuyển tiếp.

+1

Vui lòng đánh dấu là đã trả lời nếu câu trả lời của bạn hữu ích. – Ramesh

Trả lời

22

Nếu tôi hiểu, bạn cần chỉ định tên miền thay vì S3. Để làm điều này, bạn cần phải viết một trình xử lý sẽ hoạt động như một proxy cho máy chủ amazon.

Nhưng, điều đó thực sự sẽ tăng gấp đôi băng thông của bạn khi bạn cần gửi hình ảnh cho khách hàng cũng như tìm nạp hình ảnh cho S3.

Tôi không chắc là có cách nào cụ thể để xử lý việc này.

Dưới đây là Amazon S3 cách cụ thể lấy từ Amazon S3, CNAME record

Người dùng trung bình có thể đăng ký Amazon S3 lưu trữ và bắt đầu tải lên file - chấp nhận URL mặc định cấu trúc cho các tập tin được lưu trữ:

http://s3.amazonaws.com/your-bucket/some-file.txt Nếu bạn định sử dụng S3 để lưu trữ các tệp phương tiện - cụ thể hơn là các tệp Flash - bạn sẽ chạy vào chính sách bảo mật tên miền chéo của Adobe. Bản sửa lỗi yêu cầu ánh xạ các tệp S3 được lưu trữ của bạn để xem như thể chúng đang được phục vụ từ tên miền của riêng bạn - lưu trữ ảo. Các dễ nhất và hấp dẫn nhất phương pháp sẽ là một URL tập tin lưu trữ trên máy thích này:

http://s3.your-site.com/some-file.txt Để bắt đầu, tạo ra một xô trên S3 mà bạn muốn như là gốc rễ cho các tập tin lưu trữ. Đối với ví dụ này, nhóm S3 của bạn sẽ là:

s3.your-site.com Bước quan trọng nhất là thêm bản ghi CNAME thích hợp vào cài đặt DNS của bạn.

Loại tên Dữ liệu s3.your-site.com CNAME s3.amazonaws.com. Mong đợi cài đặt DNS mới của bạn để có tối đa 24-48 giờ để giải quyết.

0

Cách tôi nhìn thấy nó, bạn có hai lựa chọn:

  1. để làm chuyển hướng như bạn đã nêu, hoặc
  2. để thực hiện một yêu cầu cho các nguồn lực từ S3 và sau đó để trả lại cho người dùng thông qua phản hồi của bạn.

Vì vậy, nếu người dùng muốn xem tài nguyên http://image.mydomain.com/imagepath.jpg, bạn có thể yêu cầu nội bộ nguồn gốc từ http://bucket.amazons3.com/imagepath.jpg, lưu nó tại địa phương và gửi lại cho người dùng yêu cầu.

Nó tiêu tốn rất nhiều băng thông, nhưng nếu đây là yêu cầu quan trọng của bạn, đây sẽ là cách để đi.

3

Có vẻ như bạn muốn tạo liên kết hết hạn,

http://www.ioncannon.net/s3/21/creating-s3-urls-that-expire-using-php/

Sau đó bạn có thể tạo ra những khi đang bay, và cung cấp cho họ như chuyển hướng qua ứng dụng của bạn. Vì vậy, ai đó yêu cầu, http://images.mydomain.com/img123.jpg

và bạn tạo ra một tốt đẹp, tính năng tự động hết hạn url s3, http://mydomain.s3.amazonaws.com/T154456.jpg?AWSAccessKeyId=1ESOMESPECIALIDJJAKJ6RA82&Expires=1241372284&Signature=ddfr%2BlkoSEPAL%2BGbMwlMzj6q%2BCY%3D

sau đó bạn chuyển hướng người dùng đến url tự động tạo ra. theo cách này, ngay cả khi người dùng nhìn vào nguồn html họ chỉ nhìn thấy url dẫn trở lại trang web của bạn, nhưng khi họ nhấp vào liên kết, họ được chuyển hướng đến amazon để bạn không phải lo lắng về proxy-ing yêu cầu qua máy chủ của bạn và ăn hết băng thông không cần thiết.

3

nếu bạn có quyền kiểm soát DNS của mình tại sao không thiết lập CNAME?

chúng tôi có một thiết lập cname trỏ js.our-domain.com trỏ đến một trong các nhóm của chúng tôi (tệp javascript đủ kỳ lạ), chúng tôi chỉ tham khảo js.our-domain.com/jquery.js (ví dụ) và chúng tôi đi.

Tùy thuộc vào máy chủ của bạn, có rất nhiều cách để thiết lập CNAME - một google tìm kiếm reveals many

6

Để xây dựng trên câu trả lời của Tez, Amazon S3 cung cấp hỗ trợ cho các lĩnh vực lập bản đồ tùy chỉnh thông qua Virtual Hosting of Buckets.

Để thực hiện công việc này, tên của nhóm của bạn phải là tên máy chủ đầy đủ mà bạn muốn ánh xạ.

Vì vậy, sử dụng ví dụ trong câu hỏi ban đầu, tạo ra một xô S3 gọi image.mydomain.com và thiết lập một CNAME cho nó:

image.mydomain.com CNAME image.mydomain.com.s3.amazonaws.com. 
9

Tạo CNAME trên s3.amazonaws.com. là đủ. Không cần phải thêm tên nhóm.

4

Câu trả lời của Bryan là chính xác và Ramesh và Vincent có lỗi. Đặt CNAME thành s3.amazonaws.com dẫn đến các chuyển hướng không cần thiết đối với tôi, như được cảnh báo trong hướng dẫn về Bộ lưu trữ ảo của AWS here.