| Welcome to Huynh's Collections. We hope you enjoy your visit. You're currently viewing our forum as a guest. This means you are limited to certain areas of the board and there are some features you can't use. If you join our community, you'll be able to access member-only sections, and use many member-only features such as customizing your profile, sending personal messages, and voting in polls. Registration is simple, fast, and completely free. Join our community! If you're already a member please log in to your account to access all of our features: |
| Điện toán đám mây với Amazon Web Services | |
|---|---|
| Tweet Topic Started: Mar 12 2014, 08:59 PM (448 Views) | |
| Huynhnb8x | Mar 12 2014, 08:59 PM Post #1 |
|
Th1nk
![]() ![]() ![]() ![]() ![]()
|
Khi nào th́ quyết định đi thuê hơn đi mua Nghiên cứu về các khái niệm cơ bản của Amazon SimpleDB (SDB) và khám phá một số chức năng được cung cấp bởi boto, một thư viện mă nguồn mở Python để tương tác với SDB. Trong loạt bài viết "Điện toán đám mây với Amazon Web Services", t́m hiểu về điện toán đám mây bằng cách sử dụng các dịch vụ Web Amazon. Khám phá các dịch vụ làm thế nào cung cấp cách thay thế hấp dẫn cho kiến trúc và xây dựng các ứng dụng đáng tin cậy và có thể mở rộng được. Bài đầu tiên này giới thiệu về các đặc trưng của các khối xây dựng cơ bản của hạ tầng máy ảo. Sau đó bạn sẽ học cách sử dụng Amazon Web Services để xây dựng các hệ thống Web. Xem thêm bài trong loạt bài này | PDF: (544 KB) | 1 B́nh luận: Prabhakar Chaganti, Kiến trúc sư trưởng, Ylastic, LLC 20 05 2009 + Mục lục Điện toán đám mây là ǵ? Điện toán đám mây nhận được từ miêu tả phổ biến trong các biểu đồ kiến trúc công nghệ của Internet hoặc các địa chỉ IP có sẵn, được minh họa như một đám mây. Điện toán đám mây được thực sự quan tâm vào năm 2007 như là một giải pháp phổ biến cho vấn đề của quy mô ngang. Điện toán đám mây có thể được định nghĩa một cách đơn giản như là sự sử dụng tài nguyên tính toán có khả năng thay đổi theo nhu cầu được cung cấp như là một dịch vụ từ bên ngoài với chi phí trả cho mỗi lần sử dụng. Bạn có thể truy cập đến bất kỳ tài nguyên nào tồn tại trong "đám mây (cloud)" tại bất kỳ thời điểm nào và từ bất kỳ đâu thông qua hệ thống Internet. Bạn không phải quan tâm xem làm cách nào các thứ đang được duy tŕ phía trong của đám mây. Đám mây là được đánh giá cao và sẵn sàng đáp ứng cho các nhu cầu cần thiết của ứng dụng của bạn. Điện toán đám mây cũng có thể được gọi là tính toán tiện ích hay là tính toán lưới (grid computing). Điện toán đám mây là mô h́nh dịch chuyển trong cách thức làm thế nào chúng ta cung cấp kiến trúc và khả năng mở rộng của các ứng dụng. Trong quá khứ, các công ty thành công dành thời gian quư báu và nguồn lực xây dựng cơ sở hạ tầng, cái mà được cung cấp như là một lợi thế cạnh tranh. Nó thường xuyên là theo trường hợp sau "Xây dựng nó và cái cần sẽ đến". Trong hầu hết các trường hợp, cách tiếp cận này: Để lại một lượng lớn các tài nguyên tính toán không được sử dụng làm tiêu tốn không gian trong các trung tâm dữ liệu lớn. Bắt buộc một ai đó trông giữ các máy chủ. Gắn liền với chi phí năng lượng. Công suất tính toán không được sử dụng bị bỏ phí mà không có cách nào chuyển sang công ty khác hay người dùng mà họ có thể t́nh nguyện chi trả cho các chu kỳ tính toán thêm vào. Với điện toán đám mây, các máy tính dư thừa có thể đưa và sử dụng và được sinh lời bằng cách bán cho khách hàng. Sự chuyển đổi của việc tính toán và cơ sở hạ tầng công nghệ thông tin vào một tiện ích, cái làm cho có tác dụng trong các trường hợp hoặc có tác dụng trong một số mức độ cho phép. Điều đó là nỗ lực cạnh tranh dựa trên ư tưởng hơn là dựa trên các tài nguyên tính toán. Các tài nguyên ứng dụng của bạn và các hệ thống công nghệ thông tin liên tục cần thiết (để đáp ứng nhu cầu ngày càng lớn cho lưu trữ, cho tài nguyên tính toán, cho các hệ thống nhắn tin và cho các cơ sở dữ liệu) là cần thiết trở lên thông dụng. Bạn có thể trả chi phí hạ tầng cơ sở này cho nhà cung cấp nào mà cung cấp giá và dịch vụ tốt nhất. Rất đơn giản, có phải thế không? Đó là một ư tưởng đơn giản nhưng cuộc cách mạng về tư duy không phải là hoàn toàn mới. Điều này bây giờ là đứng đầu trong các xu hướng công nghệ hiện đại bởi v́ môi trường điện toán đám mây được Amazon đưa ra đầu tiên. Về đầu trang Amazon Web Services Amazon Web Services là tập hợp các dịch vụ cung cấp cho người lập tŕnh có khả năng truy cập tới hạ tầng kiến trúc tính toán kiểu sẵn sàng-để-sử dụng (ready-to-use) của Amazon. Các máy tính có nền tảng vững chắc đă được xây dựng và tinh chế qua nhiều năm của Amazon bây giờ là có thể cho phép bất cứ ai cũng có quyền cập tới Internet. Amazon cung cấp một số dịch vụ Web nhưng trong loạt bài viết này chỉ tập trung vào các dịch vụ khối hợp nhất (building-block) cơ bản, cái mà đáp ứng được một số yêu cầu cốt lơi của hầu hết các hệ thống như: lưu trữ, tính toán, truyền thông điệp và tập dữ liệu. Amazon Web Services lưu trữ thành công SmugMug, là ứng dụng cho phép lưu trữ ảnh trực tuyến nó cho phép lưu trữ hơn một nửa petabyte dữ liệu trong S3, được đánh giá chi phí việc cất giữ trên dịch vụ và khả năng lưu trữ lên tới 1 triệu đôla. Điều này có nghĩa là người dùng nhiều (heavy user) tài nguyên tính toán của Elastic Compute Cloud (EC2) dẫn tới khả năng vượt quá sự đ̣i hỏi. 37Signals, là phần mềm phổ biến để quản lư dự án trực tuyến có tên là Basecamp, sử dụng S3 để lưu trữ. Tạp chí New York Times sử dụng sức mạnh của EC2 để xử lư nhiều terabyte dữ liệu lưu trữ bằng cách sử dụng hàng trăm các thực thể EC2 trong 36 giờ. Animoto, chương tŕnh tạo video tŕnh diễn trực tuyến cần một lượng lớn các máy tính tính toán lớn để thực hiện xử lư video, gần đây đă chịu đựng thành công một cơn sóng cồn về lưu lượng truy cập web (lưu lượng này có thể làm tiêu tan hầu hết các hệ thống của các công ty) bằng cách tăng công suất xử lư nhanh chóng sử dụng EC2. Tại một thời điểm họ đă sử dụng hơn 3,500 máy ảo chạy cùng lúc với nhau. Bạn có thể xây dựng các ứng dụng phức tạp và gồm nhiều phần khác nhau bằng cách sử dụng các chức năng phân tầng với các dịch vụ đáng tin cậy, hiệu quả khối hợp nhất được cung cấp bởi Amazon. Các dịch vụ Web mà tồn tại bên trong đám mây phía bên ngoài môi trường của bạn và có khả năng thực hiện là rất cao. Bạn sẽ trả chỉ dựa trên những cái bạn sử dụng mà không cần phải trả trước các chi phí và vốn đầu tư ban đầu. Bạn không cần phải mất chi phí cho bảo tŕ bởi v́ phần cứng được duy tŕ và phục vụ bởi Amazon. Cơ sở hạ tầng ảo là cỗ máy san đường khổng lồ trong thế giới chịu chi phối từ web ngày nay. Trong một phút, bạn có thể nhanh chóng kết hợp thành một nền tảng hạ tầng mà có thể bạn sẽ mất hàng tuần để làm việc đó trong một cửa hàng công nghệ thông tin trong thế giới thực. Điểm quan trọng là, cơ sở hạ tầng là mềm dẻo và có thể thay đổi lên hay xuống tùy theo nhu cầu. Các công ty trên thế giới đang chuẩn bị để sử dụng tính toán mềm dẻo này (xem hộp bên cạnh). Sự tự do từ sự hạn chế của lượng lớn vốn đầu tư cơ sở hạ tầng và khả năng bảo tŕ tạo cơ hội lớn hơn cho sự đổi mới. Bạn có thể tập trung vào các ư tưởng kinh doanh thay v́ quan tâm đến sự hao ṃn của một lượng lớn các máy chủ bạn có, ví dụ bạn lo lắng về khả năng chạy ra ngoài không gian đĩa, v.v. Theo ước tính của Amazon, các doanh nghiệp sử dụng hơn 70% thời gian của họ trong việc xây dựng và bảo tŕ hạ tầng cơ sở, trong khi chỉ sử dụng 30% thời gian để làm việc với các ư tưởng thực sự để tạo ra sức mạnh của doanh nghiệp. Amazon lo lắng về các vấn đề chi tiết cơ bản của phần cứng và hạ tầng cơ sở — và làm thế nào để có được hiệu quả cao — trong khi bạn tập trung vào việc mang các ư tưởng của bạn tới cuộc sống. Các thành phần chính của hạ tầng cơ sở của trang Web này, cái mà cung cấp hầu hết các khối xây dựng cơ bản phổ biến cần thiết cho hầu hết các ứng dụng không tầm thường: Lưu trữ (Storage) Mọi người đều cần phải lưu trữ — cho các tệp, các tài liệu, các dữ liệu tải về của người dùng hoặc các bản sao lưu. Có thể tiến hành lưu trữ bất kỳ các ứng dụng cần thiết của bạn trong Amazon Simple Storage Service (S3) và nhận được các lợi ích với nó như có khả năng mở rộng, đáng tin cậy và với mức chi phí thấp cho việc lưu trữ. Tính toán (Computing) Amazon Elastic Compute Cloud (EC2) cung cấp khả năng để mở rộng tài nguyên tính toán của bạn lớn lên hoặc giảm xuống dựa trên nhu cầu và tạo ra khả năng cung cấp dịch vụ mới một cách dễ dàng. Gửi thông điệp (Messaging) Thực hiện tách riêng các thành phần ứng dụng của bạn bằng cách sử dụng khả năng không giới hạn của việc truyền thông điệp được cung cấp bởi Amazon Simple Queue Service (SQS). Tập hợp dữ liệu (Datasets) Amazon SimpleDB (SDB) cung cấp khả năng mở rộng, lập chỉ mục, khả năng lưu trữ mà không cần bảo tŕ, cùng với việc thực hiện xử lư và truy vấn với tập hợp dữ liệu. Các bài báo trong loạt bài "Cloud computing with Amazon Web Services" thực hiện khám phá các từng dịch vụ Web, và các thư việc có thể để truy cập đến một cách chi tiết. Bạn có thể thực hiện trộn và kết hợp các dịch vụ khi cần thiết; bạn được thiết kế để làm việc với những người khác. Bởi v́ bạn đang chạy trong môi trường Amazon tất cả sự liên lạc thuộc về các dịch vụ này sẽ luôn luôn được thực hiện một cách nhanh chóng. Nhà doanh nghiệp có thể xây dựng các ứng dụng có khả năng mở rộng và tin cậy bằng cách phân nhánh vào hạ tầng cơ sở ảo, cái mà mất chi phí ít hơn là cách tiếp cận dựa trên nền ứng dụng máy chủ truyền thống cái mà yêu cầu một lượng lớn máy chủ để phục vụ cho sự thay đổi thường xuyên của yêu cầu. Nó cũng cung cấp một số mức độ cao của sự dư thừa. Có hai mức độ được hỗ trợ cho người dùng của Amazon Web Services: Hỗ trợ dựa trên diễn đàn tự do từ nhân viên Amazon, người điều khiển các diễn đàn thảo luận Amazon Hỗ trợ các cặp đóng gói cái, cung cấp kiểu một-tới-một và kiểu hỗ trợ thông qua điện thoại và là cách thận trọng hơn cách yêu cầu trợ giúp Amazon xuất bản khả năng của tất cả các dịch vụ Web trong một thể truy cập công khai bảng điều khiển cái được cập nhật với bất kỳ kết quả nào về các dịch vụ. Trong suốt thời gian ngừng chạy của bất kỳ dịch vụ nào, các thành viên của Amazon Web Services đều gửi các cập nhật 15 - 30 phút một lần trong khi họ đang làm việc trên một vấn đề nào đó và cho đến khi vấn đó đề đó được xác định. Amazon cung cấp các giao diện chuẩn dựa trên SOAP và REST để tương tác với từng dịch vụ. Các thư viện phát triển hoặc là từ Amazon hoặc từ một trong các ngôn ngữ cho phép, như Ruby, Python, Java™, Erlang và PHP, để thực hiện trao đổi với các dịch vụ này. Các công cụ ḍng lệnh là cũng có thể để thực hiện quản lư tài nguyên tính toán trên EC2. Giao diện REST là dễ dàng sử dụng; bạn có thể sử dụng chương tŕnh bên phía máy khách được viết bằng bất cứ ngôn ngữ nào dưới dạng giao thức HTTP để cho phép thực hiện gửi yêu cầu tới các dịch vụ Web. Lưu trữ với Amazon S3 Amazon Simple Storage Service (S3) cung cấp các giao diện dịch vụ Web cho việc lưu trữ và khôi phục dữ liệu. Dữ liệu được cho ở bất kỳ loại nào và có thể được lưu trữ và truy cập đến từ bất kỳ vị trí nào thông qua Internet. Bạn có thể lưu trữ không giới hạn một lượng lớn các đối tượng trong S3 với kích thước của mỗi đối tượng trong khoảng từ 1 byte tới 5 GB. Các lưu trữ là có thể ở trong Hoa Kỳ hoặc trong Liên Minh Châu Âu. Bạn có thể chọn vị trí lưu trữ cho các đối tượng của bạn khi bạn tạo ra buckets, cái mà tương tự như khái niệm của thư mục trong hệ thống xử lư của bạn. Dữ liệu được lưu trữ an toàn bằng cách sử dụng cùng hạ tầng cơ sở lưu trữ Amazon sử dụng sức mạng của ḿnh trên toàn thế giới với một mạng lưới các trang Web thương mại điện tử. Sự hạn chế truy cập có thể được xác định cho từng đối tượng bạn lưu trữ trong S3, và các đối tượng này có thể được truy cập với các yêu cầu HTTP đơn giản. Thậm chí bạn có thể tạo ra các đối tượng để tải về bằng cách sử dụng giao thức BitTorrent. "Phần 2: Lưu trữ trong điện toán đám mây với Amazon Simple Storage Service (S3)" mô tả về chi tiết về S3. S3 giải phóng hoàn toàn cho bạn về các lo lắng cho không gian lưu trữ, truy cập vào dữ liệu, hoặc bảo vệ dữ liệu. Bạn thậm chí không phải đối phó với chi phí của việc bảo tŕ các máy chủ lưu trữ. Amazon đảm bảo ở mức độ cao khả năng lưu trữ các tệp của bạn v́ thế nó luôn luôn sẵn sàng bất kỳ khi nào bạn cần đến chúng. Các thỏa thuận cấp độ dịch vụ được cung cấp bởi Amazon cho S3 là lên tới 99,9% thời gian chạy máy hàng tháng. Elastic computing with Amazon EC2 Amazon EC2 là dịch vụ Web cho phép bạn yêu cầu các máy ảo trong ṿng một vài phút và dễ dàng thay đổi khả năng của bạn hoặc tải xuống dựa trên nhu cầu. Bạn chỉ cần phải trả chi phí cho khoảng thời gian mà bạn sử dụng. Nếu bạn muốn tăng khả năng tính toán của bạn nên, bạn có thể nhanh chóng tiếp cận khởi tạo máy áo và sau đó chấm dứt chúng khi mà nhu cầu của bạn giảm đi. Những trường hợp mà dựa trên Linux® và có thể chạy trên bất kỳ ứng dụng nào hoặc phần mềm nào bạn muốn. Bạn có thực hiện điều khiển cho từng trường hợp cụ thể. Môi trường của EC2 là được xây dựng trên cùng mă nguồn mở Xen hypervisor, cái được phát triển tại trường Đại học Cambridge. Amazon cho phép bạn tạo ra h́nh ảnh máy Amazon (AMIs) cái thực hiện hành động như là các khuôn mẫu cho các ví dụ của bạn. Truy cập với các ví dụ có thể được điều khiển bằng việc xác định được các quyền cho phép. Bạn cũng có thể làm bất cứ cái ǵ bạn muốn với chúng tuy chỉ có một hạn chế duy nhất là yêu cầu bạn cần sử dụng dựa trên Linux. Thời gian gần đây, khi mà Open Solaris được công bố trong một quan hệ đối tác với Sun Microsoftsystem, nhưng phần lớn các thương mại miễn phí và có sẵn được xây dựng cho EC2 đều dựa trên nền tảng Linux. Amazon EC2 cung cấp chính xác quy mô máy tính cái cho phép dễ dàng để thay đổi quy mô tài nguyên tính toán của bạn lên và xuống. Bạn hoàn toàn kiểm soát được môi trường tính toán cái mà chạy trong trung tâm dữ liệu của Amazon. Amazon cung cấp năm kiểu của các máy chủ; để cho phép bạn chọn lựa một trong các loại này phù hợp với ứng dụng cần thiết của bạn. Các máy chủ cung cấp từ loại đơn lơi x86 đến loại tám lơi x86_64. Bạn có thể thay thế các trường hợp trong các mô h́nh địa lư khác nhau hoặc trong các vùng mà từ chỗ đảm bảo thực hiện đến chỗ có thể thất bại. Amazon cũng chỉ dẫn khái niệm của địa chỉ IP thay đổi cho phép làm việc với địa chỉ động. Khả năng truyền thông điệp tin cậy của Amazon Simple Queue Service Amazon Simple Queue Service (SQS) cung cấp khả năng truy cập tới hạ tầng kiến trúc thông điệp đảm bảo được sử dụng bởi Amazon. Bạn có thể thực hiện gửi và nhận các thông điệp từ bất cứ nơi nào bằng cách sử dụng các yêu cầu HTTP đơn giản dựa trên REST. Không cần phải cài đặt cái ǵ, không cần phải thực hiện cấu h́nh ǵ cả. Bạn có thể tạo ra một lượng không giới hạn của các hàng đợi và gửi một lượng không giới hạn các tin nhắn. Các tin nhắn được lưu trữ bởi Amazon thông qua nhiều máy chủ và các trung tâm dữ liệu để cung cấp khả năng dư thừa và đáng tin cậy bạn cần từ hệ thống nhắn tin. Mỗi một tin nhắn có thể chứa lên tới 8KB dữ liệu văn bản. Chỉ sử dụng các kư tự dạng Unicode với nguyên tắc sau phải tuân thủ #x9 | #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | [#x10000 tới #x10FFFF]. Mỗi một hàng đợi có thể phải định dạng xác định khoảng thời gian timeout (hạn thời gian), cái được sử dụng để điều khiển cách truy cập tới hàng đợi bởi nhiều người đọc khác nhau. Mỗi một ứng dụng đọc một thông điệp từ hàng đợi, thông điệp này sẽ không được đọc bởi bất kỳ một người đọc khác cho đến khi khoảng thời gian timeout kết thúc. Thông điệp sẽ được lặp lại trong hàng đợi sau một khoảng thời gian timeout được xác định sau đó nó được giữ bởi một bộ xử lư đọc khác. SQS tích hợp rất tốt với các Amazon Web Sercives khác. Nó cung cấp một cách nào đó để xây dựng hệ thống riêng biệt nơi mà EC2 của bạn có thể trao đổi với các hệ thống khác bằng cách gửi thông điệp tới SQS và phối hợp các luồng làm việc. Bạn cũng có thể sử dụng các hàng đợi để xây dựng hạ tầng tự phục hồi, tự động mở rộng dựa trên EC2 cho các ứng dụng của bạn. Bạn có thể bảo đảm các thông điệp trong hàng đợi của bạn tránh bị truy cập trái phép bằng cách sử dụng cơ chế xác thực được cung cấp bởi SQS. Xử lư tập hợp dữ liệu với Amazon SimpleDB Amazon SimpleDB (SDB) là dịch vụ Web cho phép lưu trữ, xử lư và truy vấn tập hợp dữ liệu có cấu trúc. Ở đây không phải là một cơ sở dữ liệu quan hệ theo cách tiếp cận truyền thống mà ở mức độ cao hơn dưới dạng các sơ đồ, với dữ liệu ít cấu trúc lưu trữ trong các đám mây và trong đó bạn có thể sử dụng để lưu trữ và khôi phục các giá trị khóa. Mỗi một tập hợp các giá trị khóa cần phải có một tên một mục duy nhất; các mục là được phân chia vào từng miền khác nhau. Mỗi một mục có thể lưu giữ lên tới 256 cặp giá trị khóa của dữ liệu. Bạn có thể thực thi các truy vấn dựa trên tập dữ liệu của bạn trong từng miền khác nhau. Các truy vấn dựa theo từng miền là không được hỗ trợ bởi SDB. SDB là một cách đơn giản để sử dụng và cung cấp hầu hết các chức năng của cơ sở dữ liệu quan hệ. Sự duy tŕ là đơn giản hơn nhiều so với cơ sở dữ liệu điển h́nh bởi v́ không cần phải cài đặt hoặc định dạng. Amazon quan tâm nhiều tới tất cả các việc liên quan đến quản trị. Dữ liệu là được tự động đánh chỉ mục bởi Amazon và là sẵn có cho bạn tại bất kỳ thời điểm nào từ bất kỳ chỗ nào. Một lợi thế quan trọng của khóa là không được sử dụng cho các sơ đồ đó là khả năng chèn dữ liệu vào khi đang hoạt động và thêm các cột hoặc các khóa động. SDB là một phần của cơ sở hạ tầng Amazon, và khả năng mở rộng được thực hiện một cách tự động đối với bạn tùy từng t́nh huống. Bạn có thể tự do tập trung sự chú ư của bạn vào một số thứ quan trọng. Một lần nữa, bạn chỉ phải trả chi phí chỉ cho tập dữ liệu tài nguyên mà bạn sử dụng. Về đầu trang Khả năng mở rộng của kiến trúc Amazon Web Services có thể giúp bạn kiến trúc mở rộng hệ thống bằng cách cung cấp: Khả năng đáng tin cậy (Reliability) Các dịch vụ hoạt động trong trung tâm dữ liệu với tính sẵn sàng cao và được kiểm tra qua thực tế. Bảo mật Cơ chế bảo mật và xác thực cơ bản là có sẵn của bên ngoài hộp lựa chọn, và bạn có thể nâng cao chúng khi cần bằng cách bảo mật từng tầng ứng dụng riêng của bạn ở các mức trên của dịch vụ. Các lợi ích về giá cả Không có một chi phí cố định hoặc các chi phí nào về bảo tŕ. Bạn phải chỉ trả các dịch vụ như bạn sử dụng, và khả năng thay đổi về tài nguyên và nguồn lực khi cần thiết. Sự dễ dàng để phát triển Các APIs đơn giản cho phép bạn khai thác được sức mạnh của toàn bộ cơ sở hạ tầng ảo cũng như các thư viện có sẵn trong hầu hết các ngôn ngữ lập tŕnh được sử dụng rộng răi. Tính mềm dẻo (Elasticity) Quy mô các nguồn lực máy tính của bạn thay đổi lên hoặc xuống dựa trên nhu cầu. Bạn có thể đi từ một đến bất kỳ số lượng máy phục vụ một cách nhanh chóng để phục vụ nhu cầu ứng dụng của bạn. Sự gắn kết Có bốn khối dịch vụ cơ bản (Lưu trữ, Tính toán, Truyền thông điệp, và Tập hợp dữ liệu) là được thiết kế từ nhóm phát triển để làm việc rất tốt với nhau, và cung cấp một giải pháp hoàn thiện trên một lượng ứng dụng tên miền. Cộng đồng Tận dụng cộng đồng người sử dụng năng động và sôi nổi mà đang chi phối sự chấp nhận phổ biến của các dịch vụ web này và đang tạo ra các ứng dụng độc nhất được xây dựng trên cơ sở hạ tầng này. Về đầu trang Sẵn sàng bắt đầu Để bắt đầu khám phá các dịch vụ một cách chi tiết hơn trong loạt bài viết về "Cloud computing with Amazon Web Services", bạn cần đăng kư một tài khoản tại Amazon Web Services (xem tại Tài nguyên). Tại đó khi đăng kư bạn sẽ nhận được các khóa truy cập bảo mật ở mức độ dùng chung hoặc mức độ riêng, cùng với chứng chỉ bảo mật x.509, được yêu cầu khi bắt đầu sử dụng các thư viện và các công cụ khác nhau trong " Phần 2: Storage in the cloud with Amazon Simple Storage Service (S3)". Các công cụ và các thư viện có sẵn cho sự tương tác với các dịch vụ Web được viết bằng nhiều ngôn ngữ khác nhau. Các bài báo trong loạt bài viết cố gắng sử dụng ngôn ngữ đặc tả và làm việc với các ví dụ trong các ngôn ngữ khác nhau, nhưng tốt hơn nếu bạn làm việc với Java, Ruby hay Python. Về đầu trang Kết luận Trong bài viết này, bạn có được các giới thiệu về môi trường điện toán đám mây của Amazon và chỉ dẫn ngắn gọn về bốn phần chính của hạ tầng cơ sở của môi trường này. Phần c̣n lại của loạt bài viết này tiến hành mô tả từng phần của Amazon Web Service một cách chi tiết hơn, và cũng tŕnh bày về các thư viện cũng như các công cụ khác nhau hữu ích cho việc phát triển hạ tầng cơ sở ảo để xây dựng các ứng dụng của bạn. |
| Knowledge crawling | |
![]() |
|
| Huynhnb8x | Mar 12 2014, 09:05 PM Post #2 |
|
Th1nk
![]() ![]() ![]() ![]() ![]()
|
Lưu trữ và lấy dữ liệu tin cậy, mềm dẻo, và rẻ T́m hiểu về các khái niệm cơ bản của Amazon SimpleDB (SDB) và khám phá một số chức năng được cung cấp bởi boto, một thư viện mă nguồn mở Python cho các tương tác với SDB. Trong loạt bài viết về "Điện toán đám mây với Amazon Web Services" t́m hiểu về điện toán đám mây bằng cách sử dụng các dịch vụ Web của Amazon. T́m hiểu làm thế nào các dịch vụ cung cấp cách thay thế hấp dẫn cho kiến trúc và xây dựng các ứng dụng đáng tin cậy và có thể mở rộng. Bài này nghiên cứu sâu về các dịch vụ có tính mở rộng cao và phản hồi nhanh được cung cấp bởi dịch vụ lưu trữ đơn giản của Amazon, tên là Amazon Simple Storage Service (S3). T́m hiểu các công cụ để tương tác với S3, và sử dụng các đoạn mă mẫu để thử nghiệm. Xem thêm bài trong loạt bài này | PDF: (823 KB) | 0 B́nh luận: Prabhakar Chaganti, Kiến trúc sư trưởng, Ylastic, LLC 20 05 2009 + Mục lục Dịch vụ lưu trữ đơn giản của Amazon (Amazon Simple Storage Service) Phần 1 Của loạt bài viết này giới thiệu về các nền tảng cơ bản của các dịch vụ Amazon Web Services và giải thích cách bạn có thể sử dụng nền tảng ảo này để xây dụng các ứng dụng trên web. Trong bài viết này, t́m hiểu thêm về dịch vụ lưu trữ đơn giản của Amazon, Amazon Simple Storage Service (S3). S3 là hệ thống lưu trữ dữ liệu nhanh và có thể mở rộng được trên internet giúp bạn lưu trữ và lấy dữ liệu một cách đơn giản với bất cứ dung lượng nào, bất cứ khi nào và bất cứ đâu trên thế giới. Bạn trả phí dựa trên dung lượng lưu trữ và băng thông mà bạn dùng. Không phí cài đặt, không phí tối thiểu hay phí phụ trội. Amazon cung cấp sự quản lư và duy tŕ của nền tảng lưu trữ, giúp bạn thoải mái tập trung vào các chức năng quan trọng của hệ thống và ứng dụng của bạn. S3 là nền tảng công nghiệp mà luôn sẵn sàng cho nhu cầu lưu trữ dữ liệu của bạn. Nó tuyệt vời cho: Lưu trữ dữ liệu cho các ứng dụng của bạn. Sao lưu dữ liệu cho doanh nghiệp hoặc cá nhân. Phân tán nhanh và rẻ các nội dung làm tiêu hao băng thông lớn tới khách hàng của bạn. Tính năng của S3 bao gồm: Tính ổn định Nó được thiết kế để chịu được các hỏng hóc và phục hồi hệ thống rất nhanh với thời gian tối thiểu. Amazon cung cấp một thỏa thuận cấp dịch vụ (service-level agreement - SLA) để duy tŕ tính sẵn sàng ở mức 99.99 phần trăm. Đơn giản, dễ dùng S3 được xây dụng trên các khái niệm đơn giản và cung cấp tính mềm dẻo cao cho việc phát triển các ứng dụng của bạn. Bạn có thể xây dựng các lược đồ lưu trữ phức tạp hơn, nếu cần, bằng cách thêm các hàm vào các thành phần của S3. Tính mở rộng Thiết kế của S3 cung cấp một cấp độ cao về tính mở rộng và cho phép sự điều chỉnh dễ dàng trong dịch vụ khi lượng truy cập vào ứng dụng web của bạn tăng đột biến với lưu lượng khổng lồ. Rẻ Chi phí sử dụng S3 rất cạnh tranh với các giải pháp của công ty và cá nhân khác trên thị trường. Ba khái niệm nền tảng cho khung làm việc S3 là thùng (buckets), đối tượng (objects), và khóa (keys). Thùng (Buckets) Thùng là các nền tảng cơ bản nhất. Mỗi đối tượng được lưu trữ trong Amazon S3 đều được chứa trong một thùng. Thùng có thể được hiểu như là một thư mục trên hệ thống tệp. Điểm mấu chốt để phân biệt giữa thư mục và thùng là mỗi thùng và các nội dung của nó có thể truy cập được thông qua URL. Ví dụ, nếu bạn có một thùng tên là "prabhakar," nó có thể truy cập được thông qua URL http://prabhakar.s3.amazonaws.com. Mỗi tài khoản S3 có thể có tối đa 100 thùng. Một thùng không thể chứa thùng khác, nên bạn không thể tạo thùng trong thùng được. Bạn có thể thay đổi vị trí địa lư của các thùng của bạn bằng cách chỉ rơ một vị trí khi bạn tạo chúng. Điều này sẽ đảm bảo một cách tự động rằng tất cả các đối tượng mà bạn lưu trữ trong thùng đó sẽ được lưu trữ trong cùng vị trí địa lư. Tại thời điểm này, bạn có thể đặt các thùng của bạn ở Mỹ hoặc liên minh châu Âu. Nếu bạn không chỉ rơ một vị trí khi tạo thùng, thùng đó và nội dung của nó sẽ được lưu trữ tại vị trí gần địa chỉ thanh toán trên tài khoản của bạn nhất. Các tên của thùng cần tuân theo các yêu cầu của S3: Tên phải bắt đầu bằng một số hoặc một chữ cái. Độ dài của tên tối thiểu là 3 và dài nhất là 255. Một tên có hiệu lực có thể chỉ chứa các kư tự viết thường, chữ số, dấu chấm, dấu gạch chân, và gấu gạch ngang. Mặc dù tên có thể có chữ số và dấu chấm, nhưng chúng không được sử dụng định dạng số IP. Bạn không thể có một thùng với tên là 192.168.1.254. Không gian tên thùng được chia sẻ giữa các thùng trong tất cả các tài khoản trong S3. V́ vậy, tên của bạn phải là duy nhất trong S3. Các thùng mà sẽ chứa các đối tượng mà sẽ được truy cập bởi các địa chỉ URLs phải tuân theo các yêu cầu phụ của S3 như sau: Tên của các thùng không được chứa dấu gạch dưới. Độ dài từ 3 đến 63 kư tự. Tên không thể kết thúc với một dấu gạch ngang. Ví dụ, tên myfavorite-.bucket.com là không hợp lệ. Không chứa dấu gạch ngang đứng ngay trước dấu chấm. Tên my-.bucket.com là không hợp lệ. Bạn có thể sử dụng một quy ước đặt tên miền cho các thùng của bạn, như là media.yourdomain.com, và ánh xạ các tên miền và tên miền con web sẵn có của bạn tới Amazon S3. Việc ánh xạ thực sự sẽ được hoàn tất khi bạn thêm DNS CNAME để trỏ tới S3. Lợi ích to lớn với lược đồ này là bạn có thể sử dụng chính tên miền của bạn trong các địa chỉ URL của bạn để tải các tệp. Ánh xạ CNAME sẽ chịu trách nhiệm cho việc chuyển đổi giữa các địa chỉ S3 cho các thùng của bạn. Ví dụ, http://media.yourdomain.com.s3.amazonaws.com trở thành địa chỉ thân thiện hơn http://media.yourdomain.com. Đối tượng (Objects) Các đối tượng chứa dữ liệu được lưu trữ trong các thùng ở S3. Các đối tượng được coi như là các tệp mà bạn muốn lưu trữ. Mỗi đối tượng được lưu trữ được cấu thành bởi hai thực thể: dữ liệu (data) và dữ liệu thông tin (metadata). Dữ liệu là dữ liệu thực mà bạn bạn muốn lưu trữ, như là tệp PDF, tài liệu Word, một tệp video, vân vân. Dữ liệu lưu trữ được gắn với dữ liệu thông tin để mô tả đối tượng. Một vài ví dụ của dữ liệu thông tin như là kiểu của đối tượng được lưu trữ, ngày chỉnh sửa cuối cùng, và bất cứ thông tin cụ thể nào khác. Dữ liệu thông tin cho một đối tượng được chỉ ra bởi người phát triển như là cặp khóa giá trị (key value pairs) khi đối tượng đó được gửi tới S3 để lưu trữ. Không giống như sự giới hạn về số lượng các thùng, số lượng đối tượng không bị hạn chế. Bạn có thể lưu trữ một số lượng vô hạn các đối tượng trong các thùng của bạn, và mỗi đối tượng có thể chứ đến 5GB dữ liệu. Dữ liệu trong các đối tượng S3 công cộng của bạn có thể lấy được qua HTTP, HTTPS, hoặc BitTorrent. Phân tán các tệp nghe nh́n lớn từ tài khoản S3 của bạn sẽ trở lên rất đơn giản khi sử dụng BitTorrent; Amazon không chỉ tạo torrent cho đối tượng của bạn, mà c̣n lưu trữ (seed) nó. Khóa Mỗi đối tượng lưu trữ trong một thùng S3 được định danh bởi một khóa duy nhất. Nó cũng giống như khái niệm tên tệp trong một thư mục trên hệ thống tệp của bạn. Tên tệp trong một thư mục trên đĩa cứng của bạn phải là duy nhất. Mỗi đối tượng trong một thùng chỉ có một khóa. Tên của thùng và khóa được sử dụng cùng nhau để cung cấp định danh duy nhất cho mỗi đối tượng lưu trữ trong S3. Mọi đối tượng trong S3 đều có thể truy cập bằng cách sử dụng một địa chỉ URL kết hợp địa chỉ URL của S3, tên thùng và khóa duy nhất. Nếu bạn lưu trữ một đối tượng với khóa my_favorite_video.mov bên trong một thùng tên là prabhakar, đối tượng đó có thể được truy cập thông qua địa chỉ URL http://prabhakar.s3.amazonaws.com/ my_favorite_video.mov. Mặc dù các khái niệm là đơn giản, như trong h́nh 1, các thùng, các đối tượng, các khóa cùng nhau cung cấp tính mềm dẻo cho việc xây dựng các giải pháp lưu trữ dữ liệu của bạn. Bạn có thể sử dụng những viên gạch móng này để lưu trữ dữ liệu một cách đơn giản trên S3, hoặc sử dụng tính mềm dẻo của chúng để xây dựng kho lưu trữ và các ứng dụng phức hợp trên S3 để cung cấp các tính năng mới. H́nh 1. Khái niệm của S3 Khái niệm của S3 Về đầu trang Nhật kư truy cập Mỗi thùng trong S3 có thể có các bản ghi lịch sử truy cập mà chứa chi tiết về các yêu cầu tới một đối tượng được chứa trong nó. Theo mặc định, bản ghi lịch sử truy cập bị tắt; bạn có thể bật nó lên để ghi lại các truy cập cho mỗi thùng mà bạn muốn theo dơi. Mội bản ghi lịch sử truy cập chứa rất nhiều thông tin chi tiết về yêu cầu, bao gồm kiểu yêu cầu, tài nguyên được yêu cầu, và thời gian mà yêu cầu được xử lư. Các nhật kư truy cập được cung cấp dưới định dạng nhật kư truy cập máy chủ của S3, nhưng có thể được chuyển đổi một cách dễ dàng sang định dạng nhật kư tổ hợp của Apache. Sau đó chúng có thể được phân tích bởi bất cứ công cụ thương mại hay mă mở nào, như là Webalizer, để cho bạn một bản báo cáo mà con người có thể đọc được với các biểu đồ theo yêu cầu. Các báo cáo có thể hữu dụng cho việc t́m hiểu về cơ sở của khách hàng của bạn. T́m các công cụ mà bạn có thể sử dụng để xem các bản ghi lịch sử truy cập S3 trên Tài nguyên. Về đầu trang Bảo mật Mỗi thùng và đối tượng được tạo trong S3 được bảo mật riêng cho tài khoản tạo ra chúng. Bạn phải cấp quyền truy cập cho người dùng khác và các khách hàng để họ có thể xem danh sách các đối tượng trong các thùng S3 của bạn hoặc tải dữ liệu được chứa trong chúng. Amazon S3 cung cấp các tính năng bảo mật sau để bảo vệ các thùng và các đối tượng trong thùng của bạn. Sự chứng thực (Authentication) Đảm bảo rằng yêu cầu đang gửi bởi người dùng mà sở hữu thùng hoặc đối tượng. Mỗi yêu cầu trên S3 phải bao gồm khóa truy cập Amazon Web Services xác định người dùng một cách duy nhất. Sự cấp phép (Authorization) Đảm bảo rằng người dùng đang cố gắng truy cập tới tài nguyên có quyền truy cập tới tài nguyên đó. Mỗi đối tượng S3 có một danh sách quản lư truy cập (access-control list - ACL) gắn với nó mà xác định một cách minh bạch các quyền và giới hạn cho tài nguyên đó. Bạn có thể cấp quyền truy cập tới tất cả các người dùng của Amazon Web Services hoặc tới một người dùng cụ thể được xác định bởi địa chỉ email, hoặc bạn có thể cấp quyền truy cập nặc danh cho mọi người dùng. Tính tích hợp (Integrity) Mỗi yêu cầu E3 phải có chữ kư số của người dùng yêu cầu với một khóa bí mật của Amazon Web Services. Khi nhận được yêu cầu, S3 sẽ kiểm tra chữ kư để đảm bảo rằng yêu cầu đó không bị can thiệp trong quá tŕnh luân chuyển. Mă hóa (Encryption) Bạn có thể truy cập S3 thông qua giao thức HTTPS để đảm bảo rằng dữ liệu được chuyển đi thông qua một kết nối được mă hóa. Không từ chối (Nonrepudiation) Mỗi yêu cầu S3 được dán tem thời gian (time-stamped) và phục vụ như chứng cớ của giao dịch. Mỗi và mọi yêu cầu REST gửi tới S3 phải trải qua các bước cơ bản cần thiết cho việc bảo mật sau: Yêu cầu và các tham số cần thiết phải được gộp lại thành một chuỗi kư tự (string). Khóa truy cập bí mật Amazon Web Services của bạn phải được sử dụng để tạo một chữ kư băm xác thực (keyed-Hash Message Authentication Code - HMAC) của chuỗi yêu cầu. Chữ kư này được thêm vào như là một tham số của yêu cầu. Sau đó yêu cầu được chuyển tiếp đến Amazon S3. Amazon S3 sẽ kiểm tra xem nếu chữ kư được cung cấp có là một chữ kư băm xác thực hợp lệ của yêu cầu không. Nếu (và chỉ nếu) chữ kư là hợp lệ, th́ Amazon S3 mới tiến hành xử lư yêu cầu. Về đầu trang Giá Phí sử dụng cho S3 được tính dựa trên ba tiêu chí, nó khác nhau dựa trên vị trí địa lư của các thùng của bạn: Tổng không gian lưu trữ được sử dụng, cái mà bao gồm kích thước thực của nội dung dữ liệu của bạn và dữ liệu thông tin gắn với nó. Đơn vị được sử dụng bởi S3 để xác định sự sử dụng không gian lưu trữ là GB/tháng. Số lượng byte của kho lưu trữ được sử dụng bởi tài khoản của bạn được cập nhật cho từng giờ, và đến cuối tháng, nó sẽ được chuyển đổi sang cả tháng. Bảng dưới đây cung cấp giá cho việc lưu trữ. Vị trígiá Mỹ $0.15 một tháng cho 1 GB được sử dụng Châu Âu $0.18 một tháng cho 1 GB được sử dụng Lượng dữ liệu hoặc băng thông được chuyển đi và đến S3. Nó bao gồm tất cả dữ liệu được tải lên và tải xuống từ S3. Việc chuyển dữ liệu giữa các thùng S3 và EC2 được đặt ở Mỹ là miễn phí. Truyền dữ liệu giữa EC2 và S3 ở châu Âu được tính theo phí truyền dữ liệu tiêu chuẩn, như sau. Vị tríGiá Mỹ $0.100 cho 1 GB — tất cả dữ liệu truyền đến $0.170 cho 1 GB — 10 TB dữ liệu đầu tiên truyền đi trong tháng $0.130 cho 1 GB — 40 TB dữ liệu tiếp theo truyền đi trong tháng $0.110 cho 1 GB — 100 TB dữ liệu tiếp theo truyền đi trong tháng $0.100 cho 1 GB — dữ liệu truyền đi trong tháng vượt quá 150 TB Châu Âu $0.100 cho 1 GB — tất cả dữ liệu truyền đến $0.170 cho 1 GB — 10 TB dữ liệu đầu tiên truyền đi trong tháng $0.130 cho 1 GB — 40 TB dữ liệu tiếp theo truyền đi trong tháng $0.110 cho 1 GB — 100 TB dữ liệu tiếp theo truyền đi trong tháng $0.100 cho 1 GB — dữ liệu truyền đi trong tháng vượt quá 150 TB Số yêu cầu API được thực hiện. S3 tính phí cho mỗi yêu cầu sử dụng giao diện — để tạo các đối tượng, liệt kê các thùng, liệt kê các đối tượng, vân vân và vân vân. Việc xóa các đối tượng và thùng không bị tính phí. Phí một lần nữa lại khác nhau một chút dựa trên vị trí địa lư của thùng. Bảng sau đưa ra giá cho các yêu cầu API. Vị tríGiá Mỹ $0.01 cho 1,000 yêu cầu PUT, POST, hoặc LIST $0.01 cho 10,000 yêu cầu GET và các yêu cầu khác Miễn phí cho các yêu cầu xóa Châu Âu $0.012 cho 1,000 yêu cầu PUT, POST, hoặc LIST $0.012 cho 10,000 yêu cầu GET và các yêu cầu khác Miễn phí cho các yêu cầu xóa Tham khảo Amazon S3 để biết giá mới nhất. Bạn cũng có thể sử dụng máy tính AWS Simple Monthly Calculator để tính chi phí hàng tháng sử dụng dịch vụ S3 và các dịch vụ Amazon Web Services khác của bạn. Về đầu trang Bắt đầu với Amazon Web Services và S3 Để bắt đầu khám phá S3, bạn cần đăng kư một tài khoản Amazon Web Services. Bạn sẽ được cung cấp một số tài khoản Amazon Web Services và sẽ nhận được các khóa truy cập an toàn cùng với chứng chỉ bảo mật x.509 cái mà sẽ được yêu cầu khi bạn bắt đầu sử dụng các thư viện và công cụ để tương tác với S3. Tất cả các giao tiếp với bất kỳ dịch vụ nào của Amazon Web Services đều thông qua giao diện SOAP hoặc giao diện query/REST. Các thông điệp yêu cầu mà được gửi qua một trong hai giao diện này phải được xác nhận bằng chữ kư số bởi người sử dụng gửi nó để đảm bảo rằng thông điệp đó không bị can thiệp trong quá tŕnh luân chuyển, và rằng chúng thực sự c̣n nguyên vẹn như khi được gửi. Đây là phần cơ bản nhất của việc sử dụng các API của Amazon Web Services. Mỗi yêu cầu phải được xác thực bằng chữ kư số và chữ kư đó được gắn với yêu cầu. Mỗi tài khoản người dùng Amazon Web Services đều được gắn với các chứng thư (credential) an toàn sau: Một ID khóa an toàn định danh bạn như là người tạo ra các yêu cầu thông qua giao diện query/REST. Một khóa truy cập bí mật để tạo ra chữ kư số khi bạn tạo các yêu cầu thông qua giao diện query. Các chứng nhận x.509 riêng và công cộng và sự xác thực khi sử dụng giao diện SOAP. Bạn có thể quản lư các khóa và chứng chỉ của bạn, tái tạo chúng, xem hoạt động và các báo cáo sử dụng của tài khoản, và thay đổi thông tin hồ sơ của bạn từ trang thông tin tài khoản của Amazon Web Services. Sau khi bạn đăng kư tài khoản thành công, bạn cần kích hoạt dịch vụ Amazon S3 cho tài khoản của bạn bằng cách thực hiện các bước sau: Đăng nhập vào tài khoản Amazon Web Services của bạn. T́m đến trang chủ S3. Nhấn vào Sign Up For This Web Service ở bên phải của trang. Cung cấp các thông tin cần thiết và hoàn tất quá tŕnh đăng kư. Các ví dụ trong bài này sử dụng giao diện query/REST để giao tiếp với S3. Bạn sẽ cần các khóa truy cập. Bạn có thể lấy chúng từ trang thông tin tài khoản Amazon Web Services của bạn bằng cách chọn View Access Key Identifiers. Bây giờ bạn đă sẵn sàng để sử dụng dịch vụ Amazon Web Services và đă kích hoạt dịch vụ S3 cho tài khoản của bạn. Về đầu trang Tương tác với S3 Để t́m hiểu về tương tác với S3, bạn có thể sử dụng các thư viện có sẵn của Amazon hoặc của bên thứ 3. Bài viết này không đi sâu vào chi tiết của việc giao tiếp với S3, như là cách kư yêu cầu, cách xây dựng các tài liệu XML được dùng cho việc đóng gói dữ liệu, hay các tham số được gửi đến và đi từ S3. Chúng ta sẽ để các thư viện xử lư những việc đó, và sẽ sử dụng các giao diện mức cao mà chúng cung cấp. Bạn có thể xem hướng dẫn cho nhà phát triển S3 để biết thêm chi tiết. Bạn sẽ sử dụng một thư viện Java™ mă mở tên là JetS3t để khám phá S3, và t́m hiểu về các API của nó bằng cách xem các đoạn mă nhỏ. Ở cuối bài viết này bạn sẽ thu thập và tổ chức những đoạn mă nhỏ này vào một shell S3 đơn giản và tiện lợi mà bạn có thể sử dụng bất cứ khi nào để thư nghiệm và tương tác với S3. |
| Knowledge crawling | |
![]() |
|
| Huynhnb8x | Mar 12 2014, 09:05 PM Post #3 |
|
Th1nk
![]() ![]() ![]() ![]() ![]()
|
JetS3t JetS3t là một công cụ Java mă mở để tương tác với S3. Nó c̣n hơn là một thư viện. Bản phân phối có chứa một vài công cụ liên quan tới S3 rất hữu dụng mà có thể được sử dụng bởi người dùng S3 b́nh thường cũng như những người cung cấp dịch vụ. JetS3t bao gồm: Cockpit Một giao diện đồ họa để quản lư các nội dung của một tài khoản Amazon S3. Synchronize Một ứng dụng ḍng lệnh để đồng bộ hóa các thư mục trên máy tính của bạn với tài khoản S3. Gatekeeper Một servlet mà bạn có thể sử dụng để quản lư truy cập tới tài khoản S3 của bạn. CockpitLite Một phiên bản rút gọn của Cockpit mà điều hướng tất cả các thao tác thông qua dịch vụ gatekeeper. Uploader Một giao diện đồ họa mà điều hướng toàn bộ các thao tác thông qua dịch vụ gatekeeper và có thể được sử dụng bởi người cung cấp dịch vụ để cung cấp truy cập tài khoản S3 cho các khách hàng. Tải bản phát hành mới nhất của JetS3t. Tất nhiên, bạn có thể sử dụng một trong các ứng dụng có giao diện đồ họa để tương tác với S3, nhưng nó sẽ không có ích nếu bạn cần phát triển các ứng dụng để giao tiếp với S3. Bạn có thể tải toàn bộ mă nguồn cho bài viết này như là một tệp nén, bao gồm dự án Netbeans mà bạn có thể nhập vào không gian làm việc (workspace) của bạn. Kết nối tới S3 JetS3t cung cấp một lớp trừu tượng tên là org.jets3t.service.S3Service mà phải được mở rộng bởi các lớp mà cài đặt một giao diện cụ thể, như là REST hoặc SOAP. JetS3t cung cấp hai bản cài đặt mà bạn có thể sử dụng để kết nối và tương tác với S3: org.jets3t.service.impl.rest.httpclient.RestS3Service giao tiếp với S3 thông qua giao diện REST. org.jets3t.service.impl.soap.axis.SoapS3Service giao tiếp với S3 thông qua giao diện SOAP sử dụng Apache Axis 1.4. JetS3t sử dụng một tệp tên là jets3t.properties để cấu h́nh một loạt tham số được sử dụng trong khi giao tiếp với S3. Ví dụ trong bài này sử dụng tệp mặc định jets3t.properties. Hướng dẫn cấu h́nh của JetS3t có giải thích chi tiết về các tham số. Trong bài viết này, bạn sẽ sử dụng RestS3Service để kết nối tới S3. Một đối tượng RestS3Service có thể được tạo ra bằng cách cung cấp các khóa truy cập dịch vụ Amazon Web Services của bạn trong mẫu AWSCredentials. Hăy nhớ rằng các đoạn mă trong bài viết này là để tŕnh diễn các API. Để thực thi mỗi đoạn mă, bạn cần đảm bảo rằng tất cả các lớp cần thiết đă sẵn sàng. Tham khảo tới tới nguồn trong gói tải về để có được các lớp cần thiết. Hoặc, đơn giản hơn, bạn có thể nhập dự án Netbeans vào không gian làm việc của bạn để truy cập tới các mă nguồn dễ dàng. Ví dụ 1. Tạo một RestS3Service String awsAccessKey = ”Your AWS access key”; String awsSecretKey = “Your AWS Secret key”; // use your AWS keys to create a credentials object AWSCredentials awsCredentials = new AWSCredentials(awsAccessKey, awsSecretKey); // create the service object with our AWS credentials S3Service s3Service = new RestS3Service(awsCredentials); Quản lư các thùng của bạn Khái niệm của một thùng được đóng gói bởi org.jets3t.service.model.S3Bucket, cái mà mở rộng lớp org.jets3t.service.model.BaseS3Object. Lớp này là lớp cha của cả thùng và đối tượng trong mô h́nh JetS3t. Mỗi đối tượng S3Bucket cung cấp một phương thức, toString(), bên cạnh các phương thức tiền bối khác, mà có thể được sử dụng để in thông tin cho một thùng (tên và vị trí địa lư của thùng, thời điểm thùng được tạo, tên chủ sở hữu, và bất kỳ dữ liệu thông tin nào được gắn với thùng). Ví dụ 2. Liệt kê các thùng // list all buckets in the AWS account and print info for each bucket. S3Bucket[] buckets = s3Service.listAllBuckets(); for (S3Bucket b : buckets) { System.out.println(b); } Bạn có thể tạo một thùng mới bằng cách cung cấp một tên duy nhất cho nó. Không gian tên của các thùng được chia sẻ bởi toàn bộ tài khoản người dùng, nên đôi khi t́m một tên duy nhất tương đối mệt. Bạn cũng có thể chỉ rơ vị trí địa lư bạn muốn đặt thùng và các đối tượng mà sẽ được chứa trong nó. Ví dụ 3. Tạo các thùng // create a US bucket and print its info S3Bucket bucket = s3Service.createBucket(bucketName); System.out.println("Created bucket - " + bucketName + " - " + bucket); // create a EU bucket and print its info S3Bucket bucket = s3Service.createBucket(bucketName, S3Bucket.LOCATION_EUROPE); System.out.println("Created bucket - " + bucketName + " - " + bucket); Bạn phải xóa toàn bộ các đối tượng chứa trong thùng trước khi xóa thùng đó nếu không sẽ có cảnh báo. Lớp RestS3Service mà bạn đang dùng là ổn cho việc xử lư với các đối tượng đơn lẻ. Khi bạn bắt đầu xử lư với các đối tượng phức hợp, bạn nên sử dụng phương án đa luồng để tăng tốc xử lư. JetS3t cung cấp lớp org.jets3t.service.multithread.S3ServiceSimpleMulti cho mục đích này. Bạn có thể đóng gói đối tượng s3Service có sẵn bằng cách sử dụng lớp này và hưởng lợi ích của các multiprocessors đó. Nó sẽ rất tiện lợi khi bạn làm sạch một thùng bằng cách xóa tất cả các đối tượng mà nó đang chứa. Ví dụ 4. Xóa một thùng // get the bucket S3Bucket bucket = getBucketFromName(s3Service, “my bucket”); // delete a bucket – it must be empty first s3Service.deleteBucket(bucket); // create a multi threaded version of the RestService S3ServiceSimpleMulti s3ServiceMulti = new S3ServiceSimpleMulti(s3Service); // get all the objects from bucket S3Object[] objects = s3Service.listObjects(bucket); // clear the bucket by deleting all its objects s3ServiceMulti.deleteObjects(bucket, objects); Mỗi thùng được gắn với một ACL xác định quyền hạn đối với thùng đó và mức độ truy cập được cung cấp cho người dùng khác. Bạn có thể lấy ACL và in ra quyền hạn được nó cung cấp. Ví dụ 5. Lấy ACL cho thùng // get the bucket S3Bucket bucket = getBucketFromName(s3Service, “my bucket”); // get the ACL and print it AccessControlList acl = s3Service.getBucketAcl(bucket); System.out.println(acl); Quyền hạn mặc định cho thùng mới được khởi tạo và các đối tượng làm cho chúng thuộc về chủ của nó. Bạn có thể điều chỉnh quyền mặc định bằng cách thay đổi ACL cho một thùng và cấp quyền cho một nhóm người dùng để đọc, viết và có toàn quyền điều khiển trên thùng. Ví dụ 6. Làm cho thùng và nội dung trong nó trở thành công cộng // get the bucket S3Bucket bucket = getBucketFromName(s3Service, “my bucket”); // get the ACL AccessControlList acl = s3Service.getBucketAcl(bucket); // give everyone read access acl.grantPermission(GroupGrantee.ALL_USERS, Permission.PERMISSION_READ); // save changes back to S3 bucket.setAcl(acl); s3Service.putBucketAcl(bucket); Bạn có thể kích hoạt một cách dễ dàng việc lưu lại nhật kư truy cập cho một thùng và lấy trạng thái việc lưu nhật kư hiện tại. Sau khi việc lưu nhật kư được kích hoạt, các lịch sử truy cập chi tiết cho từng tệp trong thùng đó được trữ trên S3. Tài khoản S3 của bạn sẽ bị tính phí cho không gian lưu trữ mà nhật kư đó sử dụng. Ví dụ 7. Ghi nhật kư cho các thùng trên S3 // get the bucket S3Bucket bucket = getBucketFromName(s3Service, “my bucket”); // is logging enabled? S3BucketLoggingStatus loggingStatus = s3Service.getBucketLoggingStatus(bucketName); System.out.println(loggingStatus); // enable logging S3BucketLoggingStatus newLoggingStatus = new S3BucketLoggingStatus(); // set a prefix for your log files newLoggingStatus.setLogfilePrefix(logFilePrefix); // set the target bucket name newLoggingStatus.setTargetBucketName(bucketName); // give the log_delivery group permissions to read and write from the bucket AccessControlList acl = s3Service.getBucketAcl(bucket); acl.grantPermission(GroupGrantee.LOG_DELIVERY, Permission.PERMISSION_WRITE); acl.grantPermission(GroupGrantee.LOG_DELIVERY, Permission.PERMISSION_READ_ACP); bucket.setAcl(acl); // save the changed ACL for the bucket to S3 s3Service.putBucketAcl(bucket); // save the changes to the bucket logging s3Service.setBucketLoggingStatus(bucketName, newLoggingStatus, true); System.out.println("The bucket logging status is now enabled."); Quản lư các đối tượng của bạn Mỗi đối tượng chứa trong một thùng được biểu diễn bởi một org.jets3t.service.model.S3Object. Mỗi đối tượng S3Bucket cung cấp một phương thức toString() mà có thể được dùng để in các chi tiết quan trọng cho một đối tượng: Tên của khóa Tên của thùng chứa Ngày chỉnh sửa cuối cùng Bất cứ thông tin nào được gắn với đối tượng Nó cũng cung cấp các phương thức để truy cập hàng loạt thuộc tính của một đối tượng, cùng với dữ liệu thông tin của nó. Ví dụ 8. Liệt kê các đối tượng // list objects in a bucket. S3Object[] objects = s3Service.listObjects(bucket); // print out the object details if (objects.length == 0) { System.out.println("No objects found"); } else { for (S3Object o : objects) { System.out.println(o); } } Bạn có thể lọc danh sách đối tượng nhận được bằng cách cung cấp một tiền tố để lọc. Ví dụ 9. Lọc danh sách các đối tượng // list objects matching a prefix. S3Object[] filteredObjects = s3Service.listObjects(bucket, “myprefix”, null); // print out the object details if (filteredObjects.length == 0) { System.out.println("No objects found"); } else { for (S3Object o : filteredObjects) { System.out.println(o); } } Mỗi đối tượng có thể có dữ liệu thông tin gắn với nó, như là kiểu nội dung, ngày chỉnh sửa, ... Bạn cũng có thể gắn dữ liệu thông tin cụ thể liên quan đến ứng dụng của bạn vào một đối tượng. Ví dụ 10. Lấy dữ liệu thông tiên của đối tượng // get the bucket S3Bucket bucket = getBucketFromName(s3Service, bucketName); // getobjects matching a prefix S3Object[] filteredObjects = s3Service.listObjects(bucket, “myprefix”, null); if (filteredObjects.length == 0) { System.out.println("No matching objects found"); }else { // get the metadata for multiple objects. S3Object[] objectsWithHeadDetails = s3ServiceMulti.getObjectsHeads(bucket, filteredObjects); // print out the metadata for (S3Object o : objectsWithHeadDetails) { System.out.println(o); } } Mỗi đối tượng mới được khởi tạo là riêng tư theo mặc định. Bạn có thể sử dụng JetS3t để tạo một địa chỉ URL được kư mà bất cứ ai cũng có thể sử dụng để tải dữ liệu của đối tượng về. Địa chỉ URL có thể được tạo để có hiệu lực chỉ trong một khoảng thời gian nhất định, nó sẽ hết hiệu lực khi quá hạn thời gian. Đối tượng vẫn là riêng tư, nhưng bạn có thể đưa URL cho bất cứ ai để họ tải nó về trong một khoảng thời gian ngắn. Ví dụ 11. Tạo một địa chỉ URL được kư để tải đối tượng về // get the bucket S3Bucket bucket = getBucketFromName(s3Service, bucketName); // how long should this URL be valid? int duration = Integer.parseInt(tokens.nextToken()); Calendar cal = Calendar.getInstance(); cal.add(Calendar.MINUTE, duration); Date expiryDate = cal.getTime(); // create the signed url String url = S3Service.createSignedGetUrl(bucketName, objectKey, awsCredentials, expiryDate); System.out.println("You can use this public URL to access this file for the next " + duration + " min - " + url); S3 cho phép một đối tượng có dung lượng tối đa là 5 GB. Nếu các đối tượng của bạn có dung lượng lớn hơn thế, bạn sẽ cần chia chúng thành nhiều tệp, mỗi tệp có kích thước 5 GB, sau đó tải tất cả các phần lên S3. Ví dụ 12. Tải đối tượng lên S3 // get the bucket S3Bucket bucket = getBucketFromName(s3Service, bucketName); // create an object with the file data File fileData = new File(“/my_file_to_upload”); S3Object fileObject = new S3Object(bucket, fileData); // put the data on S3 s3Service.putObject(bucket, fileObject); System.out.println("Successfully uploaded object - " + fileObject); JetS3t cung cấp một lớp DownloadPackage để dễ dàng gắn kết dữ liệu từ một đối tượng S3 với một tệp cục bộ và tự động ghi dữ liệu vào nó. Bạn có thể sử dụng tính năng này để tải các đối tượng từ S3 về một cách dễ dàng. Ví dụ 13. Tải về từ S3 // get the bucket S3Bucket bucket = getBucketFromName(s3Service, bucketName); // get the object S3Object fileObject = s3Service.getObject(bucket, fileName); // associate a file with the object data DownloadPackage[] downloadPackages = new DownloadPackage[1]; downloadPackages[0] = new DownloadPackage(fileObject, new File(fileObject.getKey())); // download objects to the associated files s3ServiceMulti.downloadObjects(bucket, downloadPackages); System.out.println("Successfully retrieved object to current directory"); Phần này đă xem xét một số hàm cơ bản cung cấp bởi bộ công cụ JetS3t, và cách sử dụng chúng để tương tác với S3. Xem Tài nguyên để biết thêm về dịch vụ S3 và một bài thảo luận chi tiết về bộ công cụ JetS3t. Shell của S3 Các tương tác với S3, thông qua các đoạn mă nhỏ, có thể được đặt cùng với nhau để sử dụng sau này bằng cách tạo một chương tŕnh Shell của S3 mà bạn có thể thực thi trên cửa sổ ḍng lệnh. Bạn sẽ tạo một chương tŕnh Java đơn giản mà chấp nhận khóa truy cập Amazon Web Services và khóa bí mật như các tham số, và trả lại một dấu nhắc ḍng lệnh. Sau đó, bạn có thể gơ một kư tự hoặc vài kí tự, như là b để liệt kê các thùng hoặc om để liệt kê các đối tượng mà thỏa măn một tiền tố cụ thể. Sử dụng chương tŕnh này để thực nghiệm. Chương tŕnh shell chứa một hàm main() bao gồm các đoạn mă nhỏ mà bạn đang dùng trong bài viết này. Đoạn mă ví dụ cho chương tŕnh shell S3 không được gộp ở đây. Mă nguồn đầy đủ của Shell S3, cùng với các phụ thuộc của nó, có trong phần Tải về. Bạn có thể thực thi shell bằng cách chạy tệp devworks-s3.jar. Ví dụ 14. Thực thi Shell S3 java -jar devworks-s3.jar my_aws_access_key my_aws_secret_key Bạn có thể gơ h tại bất cứ thời điểm nào trong Shell S3 để lấy danh sách các lệnh được hỗ trợ. H́nh 2. Hướng dẫn trong Shell S3 Hướng dẫn trong Shell S3 Một số phương thức hữu dụng hơn đă được thêm vào Shell S3. Bạn có thể mở rộng nó để thêm bất cứ chức năng nào bạn muốn để làm cho shell trở lên hữu dụng hơn nữa. Về đầu trang Tổng kết Trong bài viết này, bạn đă t́m hiểu một số khái niệm cơ bản ẩn sau dịch vụ S3 của Amazon. Bộ công cụ JetS3t là một thư viện mă mở mà bạn có thể sử dụng để tương tác với S3. Bạn cũng đă học cách để tạo một Shell S3 đơn giản bằng cách sử dụng các đoạn mă nhỏ, cho nên bạn có thể tiếp tục thực nghiệm một cách dễ dàng với S3 bằng cách sử dụng cửa sổ ḍng lệnh. Phẩn 3 của loạt bài "Điện toán đám mây với Amazon Web Services" giải thích cách sử dụng đám mây điện toán Amazon Elastic Compute Cloud (EC2) để thực thi các máy chủ ảo trong đám mây. |
| Knowledge crawling | |
![]() |
|
![]() Join the millions that use us for their forum communities. Create your own forum today. Learn More · Sign-up for Free |
|
| « Previous Topic · Tài liệu sưu tầm · Next Topic » |
| Track Topic · E-mail Topic |
9:00 AM Jul 11
|
Theme by James... of the ZBTZ and themeszetaboards.com





![]](http://z5.ifrm.com/static/1/pip_r.png)




9:00 AM Jul 11