Đỉnh NGUYỄN

life's a journey not a destination


Leave a comment

Bắt đầu với Amazon Glacier


Amazon Glacier là gì?

Amazon Glacier là dịch vụ lưu trữ được tối ưu hóa cho dữ liệu được lưu trữ không thường xuyên hay “cold data”.

Amazon Glacier là dịch vụ lưu trữ với chi phí rất thấp cho phép lưu trữ lâu dài với các tính năng bảo mật dành cho lưu trữ và sao lưu dữ liệu. Với Amazon Glacier, khách hàng lưu dữ liệu với chi phí hiệu quả cho từng tháng, năm và thậm chí cả thế kỷ. Chi tiết về tính năng và giá của dịch vụ, xem Amazon Glacier detail page.

Amazon Glacier là sự lựa chọn lưu trữ tuyệt vời khi chi phí lưu trữ thấp là tối quan trọng, dữ liệu được truy xuất không thường xuyên và độ trễ truy xuất vài giờ là có thể chấp nhận. Nếu ứng dụng của bạn yêu cầu truy xuất nhanh đến dữ liệu, độ trễ thấp, xem xét dùng Amazon S3.

Mô hình dữ liệu của Amazon Glacier

Các khái niệm cốt lõi trong mô hình dữ liệu của Amazon Glacier gồm vault và archive. Amazon Glacier là dịch vụ web dựa trên REST. Trong thuật ngữ của REST, vault và archive là các tài nguyên (resource). Ngoài ra, mô hình dữ liệu của Amazon Glacier gồm các tài nguyên job và notification-configuration.

Vault

Vault là thùng chứa để lưu trữ các archive. Khi tạo 1 vault, chỉ định tên và chọn region để lưu trữ.

Mỗi vault có 1 địa chỉ duy nhất.

https://<region-specific endpoint>/<account-id>/vaults/<vaultname>

Ví dụ, tạo vault (examplevault) trong region US East (N. Virginia). Vault này có URI như sau:

https://glacier.us-east-1.amazonaws.com/111122223333/vaults/examplevault

Trong URI này,

·         glacier.us-east-1.amazonaws.com định danh US East (N. Virginia)

·         111122223333 là account ID sở hữu vault

·         vaults ám chỉ tập các vault được sở hữu bởi AWS account

·         examplevault định danh 1 vault cụ thể trong tập các vault

Một AWS account trong bất kỳ region nào hỗ trợ. Danh sách các AWS region hỗ trợ, xem Accessing Amazon Glacier. Trong 1 region, 1 tài khoản phải dùng 1 tên vault duy nhất. AWS account có thể tạo các vault cùng tên trong các region khác nhau.

Bạn có thể lưu trữ không giới hạn số archive trong 1 vault. Phụ thuộc vào nhu cầu kinh doanh hay ứng dụng, bạn có thể lưu các archive trong 1 hoặc nhiều vault.

Amazon Glacier hỗ trợ nhiều hành động trên vault. Chú ý các hành động vault cho từng region cụ thể. Ví dụ, khi tạo 1 vault, bạn tạo nó trong 1 region cụ thể. Khi bạn yêu cầu danh sách vault, bạn phải yêu cầu nó trong 1 region cụ thể, và kết quả chỉ gồm các vault được tạo trong 1 region cụ thể.

Archive

Một archive có thể là bất kỳ dữ liệu nào như photo, video, hoặc documet và là đơn vị cơ bản của lưu trữ trong Amazon Glacier. Mỗi archive có 1 ID duy nhất và thông tin mô tả (tùy chọn). Archive ID là duy nhất trong vault. Chú ý rằng bạn chỉ có thể chỉ định phần mô tả archive khi upload 1 archive. Amazon Glacier sẽ gán cho archive 1 ID, duy nhất trong AWS region mà nó được lưu trữ.

Mỗi archive có 1 địa chỉ duy nhất.

https://<region-specific endpoint>/<account-id>/vaults/<vault-name>/archives/<archive-id>

Sau đây là 1 URI ví dụ của 1 archive được lưu trữ trong examplevault trong US East (N. Virginia)

https://glacier.us-east-1.amazonaws.com/111122223333/vaults/examplevault/archives/NkbByEejwEggmBz2fTHgJrg0XBoDfjP4q6iu87-TjhqG6eGoOY9Z8i1_AUyUsuhPAdTqLHy8pTl5nfCFJmDl2yEZONi5L26Omw12vcs01MNGntHEQL8MBfGlqrEXAMPLEArchiveId

Bạn có thể lưu trữ không giới hạn số archive trong 1 vault.

Ngoài ra, mô hình dữ liệu của Amazon Glacier gồm các tài nguyên job và notification-configuration.

Job

Truy xuất 1 archive và vault inventory (danh sách các archive) là hành động bất đồng bộ trong Amazon Glacier nghĩa là trước tiên bạn khởi tạo 1 job, và sau đó tải về job output sau khi Amazon Glacier hoàn thành job. Với Amazon Glacier, yêu cầu truy xuất dữ liệu của bạn sẽ đưa vào queue và hầu hết các job cần khoảng 1 giờ để hoàn thành.

Ghi chú

Amazon Glacier cung cấp giải pháp lưu trữ dữ liệu lạnh (cold data). Nếu ứng dụng cần giải pháp lưu trữ dữ liệu cần truy xuất real-time, bạn xem xét dùng Amazon S3.

Để khởi tạo vault inventory job, cung cấp vault name. Job truy xuất đến archive yêu cầu cả vault name và archive ID mà bạn muốn tải về. Bạn có thể cung cấp job description khi khởi tạo job nhằm để định danh job.

Cả hai job truy xuất đến archive và vault inventory đều có liên quan đến vault. Vault có thể có nhiều job đồng thời tại 1 thời điểm. Khi bạn gởi 1 job request (khởi tạo 1 job), Amazon Glacier trả về job ID để lưu vết job. Mỗi job được định danh duy nhất bởi 1 URI:

https://<region-specific endpoint>/<account-id>/vaults/<vault-name>/jobs/<job-id>

Sau đây là ví dụ 1 job liên quan đến examplevault vault.

https://glacier.us-east-1.amazonaws.com/111122223333/vaults/examplevault/jobs/HkF9p6o7yjhFx-K3CGl6fuSm6VzW9T7esGQfco8nUXVYwS0jlb5gq1JZ55yHgt5vP54ZShjoQzQVVh7vEXAMPLEjobID

Với mỗi job, Amazon Glacier duy trì thông tin như job type, description, creation date, completion date, và job status. Danh sách các job mà Amazon Glacier trả về sẽ gồm tất cả các job đang chạy và đã hoàn thành gần đây, do vậy cần các thông tin vừa để để định danh.

Sau khi Amazon Glacier hoàn thành 1 job, bạn có thể tải về job output.

Notification Configuration

Bởi vì các jobs mất 1 khoảng thời gian để hoàn thành, Amazon Glacier hỗ trợ cơ chế notification để thông báo đến bạn khi job hoàn tất. Bạn có thể cấu hình 1 vault gởi notification đến Amazon Simple Notification Service (Amazon SNS) topic khi các job hoàn thành. Bạn có thể chỉ định 1 SNS topic cho mỗi vault trong notification configuration.

Amazon Glacier lưu trữ notification configuration trong tài liệu JSON. Sau đây là ví dụ vault notification configuration.

 

{

   "Topic": "arn:aws:sns:us-east-1:111122223333:mytopic",

   "Events": ["ArchiveRetrievalCompleted", "InventoryRetrievalCompleted"]

}

 

Lưu ý là notification configuration liên quan đến các vault; bạn có thể có 1 notification configuration cho mỗi vault. Mỗi notification configuration được định danh duy nhất bởi URI.

https://<region-specific endpoint>/<account-id>/vaults/<vault-name>/notification-configuration

Amazon Glacier hỗ trợ các hành động set, get, và delete 1 notification configuration.

Các hành động được hỗ trợ

Để làm việc với vault và archive, Amazon Glacier hỗ trợ 1 tập các hành động. Trong tất cả các hành động được hỗ trợ, chỉ các hành động sau đây là bất đồng bộ.

·         Truy xuất 1 archive

·         Truy xuất 1 vault inventory (danh sách các archive)

Các hành động trên Vault

Amazon Glacier cung cấp các hành động create và delete các vault. Bạn có thể dựa vào vault description cho 1 vault cụ thể hoặc tất cả các vault trong region. Vault description cung cấp thông tin như creation date, số archive trong vault, total size (byte) được dùng bởi tất cả các archive trong vault và ngày mà Amazon Glacier tạo ra vault inventory. Amazon Glacier cũng cung cấp các hành động để set, retrieve, và delete 1 notification configuration trên vault. Thêm thông tin, xem Working with Vaults in Amazon Glacier.

Các hành động trên Archive

Amazon Glacier cung cấp các hành động để upload và delete các archive. Bạn không thể update 1 archive đã tồn tại; bạn phải delete archive đã tồn tại và upload 1 archive mới. Lưu ý rằng mỗi khi bạn upload 1 archive, Amazon Glacier tạo ra 1 archive ID mới.

Job

Truy xuất 1 archive hoặc 1 vault inventory trong Amazon Glacier là hành động bất đồng bộ. Nó yêu cầu trước hết phải khởi tạo job, đợi job hoàn thành và sau đó tải về job output. Amazon Glacier cung cấp các hành động cho bạn khởi tạo 1 job, lấy job description, và truy xuất 1 danh sách các job có liên quan đến 1 vault. Lưu ý rằng hầu hết các job đều mất khoảng 4 giờ để hoàn thành. Amazon Glacier có thể gởi thông điệp đến Amazon SNS topic  khi job hoàn thành. Thêm thông tin về truy xuất 1 archive hoặc 1 vault inventory, xem Downloading an Archive in Amazon GlacierDownloading a Vault Inventory in Amazon Glacier.

Truy xuất Amazon Glacier

Amazon Glacier là dịch vụ web RESTful dùng HTTP và HTTPS làm giao thức vẫn chuyển và JSON để định dạng dữ liệu. Ứng dụng của bạn có thể truy vấn trực tiếp đến Amazon Glacier web service API. Khi dùng REST API trực tiếp, bạn phải viết mã cần thiết để chứng thực việc gọi API. Thông tin thêm về API, xem API Reference for Amazon Glacier.

Một cách khác là bạn có thể dùng AWS SDKs để gọi đến Amazon Glacier REST API. Bạn cung cấp credential, thư viện sẽ thực hiện chứng thực và đăng ký gọi đến API. Thông tin dùng AWS SDKs, xem Using the AWS SDKs with Amazon Glacier.

Amazon Glacier cũng cung cấp 1 management console. Bạn có thể dùng console để create và delete các vault. Tuy nhiên, tất cả các hành động archive và job yêu cầu bạn phải viết mã và thực hiện request dùng REST API trực tiếp hoặc AWS SDK. Để truy xuất đến Amazon Glacier console, xem Amazon Glacier Console.

Regions & Endpoints

Bạn tạo 1 vault trong 1 AWS region cụ thể. Bạn luôn gởi request đến 1 endpoint của 1 region cụ thể. Danh sách tất cả các AWS region hỗ trợ, xem Regions and Endpoints.

Bắt đầu với Amazon Glacier

Step 1: Trước khi bạn bắt đầu

Trước khi bắt đầu, bạn phải đăng nhập với tài khoản AWS account và tải về AWS Software Development Kit (SDKs). Sau đây là hướng dẫn.

Ghi chú

Amazon Glacier cung cấp management console, bạn có thể dùng để create và delete các vault. Tuy nhiên, tất cả các tương tác khác với Amazon Glacier yêu cầu lập trình. Ví dụ, để upload dữ liệu như photo, video, các document, bạn phải viết code và thực hiện request dùng REST API trực tiếp hoặc AWS SDKs.

Sign Up

Nếu đã có tài khoản AWS account, bỏ qua phần sau và đến phần Tải về AWS SDK phù hợp. Ngược lại, làm theo các bước sau:

Để đăng ký tài khoản AWS account

1. Mở http://aws.amazon.com, và click Sign Up.

2. Làm theo hướng dẫn trên màn hình.

Một phần của quá trình đăng ký là nhận 1 cuộc gọi và nhập số PIN dùng bàn phím điện thoại.

Tải về AWS SDK phù hợp

Tải về AWS SDK cho Java

·         Nếu dùng Eclipse, bạn tải về và cài đặt AWS Toolkit for Eclipse dùng update site http://aws.amazon.com/eclipse/. Thêm thông tin, xem AWS Toolkit for Eclipse.

·         Nếu dùng bất kỳ IDE khác để tạo ứng dụng, tải về AWS SDK for Java.

Tải về AWS SDK cho .NET

·         Nếu dùng Visual Studio, bạn có thể cài đặt cả AWS SDK for .NET và AWS Toolkit for Visual Studio. Toolkit cung cấp AWS Explorer for Visual Studio và các mẫu dự án dùng để phát triển. Vào http://aws.amazon.com/sdkfornet/ và click Download AWS SDK for .NET. Mặc định, việc cài đặt sẽ gồm cả 2 AWS SDK và AWS Toolkit for Visual Studio. Để hiểu thêm về toolkit, xem AWS Toolkit for Visual Studio User Guide.

·         Nếu dùng bất kỳ IDE nào khác để tạo ứng dụng, bạn có thể dùng cùng bộ cài như trên và chỉ cài AWS SDK for .NET.

Step 2: Tạo 1 vault

Vault là thùng chứa để lưu trữ các archive. Bước đầu tiên là tạo 1 vault trong 1 AWS region hỗ trợ, như US West (Oregon).

Bạn có thể tạo vault dùng lập trình hoặc Amazon Glacier console. Phần này dùng console để tạo vault, trong bước sau, bạn sẽ upload 1 archive lên vault.

Tạo 1 vault

1. Đăng nhập vào AWS Management console và mở Amazon Glacier console tại https://console.aws.amazon.com/glacier

2. Chọn 1 region

Dùng US West (Oregon)

clip_image001

3. Chọn Create Vault.

clip_image002

4. Nhập examplevault làm tên vault trong trường Vault Name.

clip_image004

5. Click Create Vault Now.

Nếu muốn có notification gởi đến bạn hoặc ứng dụng khi job hoàn thành, bạn click Continue to Notifications để thiết lập Amazon SNS notifications. Trong phần này, bạn không cấu hình notification cho vault. Trong các bước tiếp sau, bạn upload 1 archive và download nó dùng API hoặc AWS SDK.

clip_image006

Step 3: Upload 1 archive vào vault

Tất cả các hành động trên archive như upload, download, và delete đều yêu cầu lập trình. Console chưa hỗ trợ các hành động trên archive.

Một archive là 1 object như 1 photo, video hoặc document được lưu trong vault. Nó là đơn vị lưu trữ cơ bản trong Amazon Glacier. Bạn có thể upload 1 archive trong 1 request duy nhất. Với các archive lớn, Amazon Glacier cung cấp multipart upload API cho phép upload 1 archive trong nhiều phần. Thông tin thêm, xem Uploading Large Archives in Parts (Multipart Upload).

Upload 1 archive vào vault dùng AWS SDK for Java

Trong đoạn code ví dụ, chú ý 1 số điều:

·         Tạo 1 instance của lớp AmazonGlacierClient.

·         Dùng phương thức upload của lớp ArchiveTransferManager từ high-level API của AWS SDK for Java.

·         Dùng US West (Oregon) region (us-west-2)

Chỉ dẫn từng bước cách chạy đoạn ví dụ, xem Running Java Examples for Amazon Glacier Using Eclipse. Bạn cần sửa đoạn code dưới với tên của archive cần upload.

Ghi chú

Amazon Glacier giữ 1 inventory của tất cả các archive trong vault. Khi bạn upload 1 archive, nó sẽ không xuất hiện trong vault trong management console cho đến khi vault inventory được cập nhật. Quá trình update này chỉ xảy ra 1 lần 1 ngày.

Ví dụ – Upload 1 archive dùng AWS SDK for Java

 

import java.io.File;

import java.io.IOException;

import java.util.Date;

 

import com.amazonaws.auth.profile.ProfileCredentialsProvider;

import com.amazonaws.services.glacier.AmazonGlacierClient;

import com.amazonaws.services.glacier.transfer.ArchiveTransferManager;

import com.amazonaws.services.glacier.transfer.UploadResult;

 

public class AmazonGlacierUploadArchive_GettingStarted {

 

    public static String vaultName = "examplevault2";

    public static String archiveToUpload = "*** provide name of file to upload ***";

   

    public static AmazonGlacierClient client;

   

    public static void main(String[] args) throws IOException {

       

          ProfileCredentialsProvider credentials = new ProfileCredentialsProvider();

        client = new AmazonGlacierClient(credentials);

        client.setEndpoint("https://glacier.us-west-2.amazonaws.com/&quot;);

 

        try {

            ArchiveTransferManager atm = new ArchiveTransferManager(client, credentials);

           

            UploadResult result = atm.upload(vaultName, "my archive " + (new Date()), new File(archiveToUpload));

            System.out.println("Archive ID: " + result.getArchiveId());

           

        } catch (Exception e)

        {

            System.err.println(e);

        }

    }

}

 

Upload 1 archive vào vault dùng AWS SDK for .NET

Code C# dùng high-level API của AWS SDK for .NET để upload 1 archive lên vault.

·         Tạo 1 instance của lớp ArchiveTransferManager để chỉ định region endpoint.

·         Dùng US West (Oregon) region (us-west-2)

·         Dùng phương thức Upload của lớp ArchiveTransferManager để upload 1 archive.

Chỉ dẫn từng bước cách chạy đoạn code, xem Running Code Example. Bạn phải update code với tên vault và tên archive cần upload.

Ghi chú

Amazon Glacier giữ 1 inventory của tất cả các archive trong vault. Khi bạn upload 1 archive, nó sẽ không xuất hiện trong vault trong management console cho đến khi vault inventory được cập nhật. Quá trình update này chỉ xảy ra 1 lần 1 ngày.

Ví dụ – Upload 1 archive dùng AWS SDK for .NET

 

using System;

using Amazon.Glacier;

using Amazon.Glacier.Transfer;

using Amazon.Runtime;

 

namespace glacier.amazon.com.docsamples

{

    class ArchiveUploadHighLevel_GettingStarted

    {

        static string vaultName = "examplevault";

        static string archiveToUpload = "*** Provide file name to upload ***";

 

        public static void Main(string[] args)

        {

            try

            {

                var manager = new ArchiveTransferManager(Amazon.RegionEndpoint.USWest2);

                // Upload an archive.

                string archiveId = manager.Upload(vaultName, "getting started archive test", archiveToUpload).ArchiveId;

                Console.WriteLine("Archive ID: (Copy and save this ID for the next step) : {0}", archiveId);

                Console.ReadKey();

            }

            catch (AmazonGlacierException e) { Console.WriteLine(e.Message); }

            catch (AmazonServiceException e) { Console.WriteLine(e.Message); }

            catch (Exception e) { Console.WriteLine(e.Message); }

            Console.WriteLine("To continue, press Enter");

            Console.ReadKey();

        }

    }

}

 

Step 4: Download 1 archive từ vault

Tất cả các hành động trên archive như upload, download, và delete đều yêu cầu lập trình. Console chưa hỗ trợ các hành động trên archive.

Truy xuất dữ liệu từ Amazon Glacier gồm 2 bước:

1. Khởi tạo 1 job để truy xuất

2. Sau khi job thực thi hoàn thành, download các byte dữ liệu.

 

Job thực thi bất đồng bộ. Khi bạn khởi tạo 1 job, Amazon Glacier tạo 1 job và trả về job ID. Khi Amazon Glacier hoàn thành job, bạn sẽ lấy job output (archive data & inventory data). Đoạn code ví dụ sẽ khởi tạo job, đợi job hoàn thành và download archive data.

Cảnh báo

Lưu ý rằng sẽ mất khoảng 4 giờ để hầu hết các job hoàn thành. Sau khi khởi tạo job truy xuất archive, nó mất khoảng 4 giờ trước khi có thể download archive data.

Phí truy xuất Amazon Glacier

Amazon Glacier được thiết kế để lưu trữ dữ liệu trong thời gian dài và truy xuất không thường xuyên. Bạn có thể truy xuất đến 5% dung lượng lưu trữ trung bình hàng tháng (tính theo tỷ lệ hàng ngày) miễn phí mỗi tháng. Nếu truy xuất nhiều hơn lượng dữ liệu này trong tháng, bạn phải trả 1 khoản phí bắt đầu từ $0.01 cho mỗi gigabyte.

Thông tin về phí truy xuất, xem Amazon Glacier detail page.

Tải về archive từ vault dùng AWS SDK for Java

 

import java.io.File;

import java.io.IOException;

 

import com.amazonaws.auth.profile.ProfileCredentialsProvider;

import com.amazonaws.services.glacier.AmazonGlacierClient;

import com.amazonaws.services.glacier.transfer.ArchiveTransferManager;

import com.amazonaws.services.sns.AmazonSNSClient;

import com.amazonaws.services.sqs.AmazonSQSClient;

 

public class AmazonGlacierDownloadArchive_GettingStarted {

    public static String vaultName = "examplevault";

    public static String archiveId = "*** provide archive ID ***";

    public static String downloadFilePath  = "*** provide location to download archive ***";

   

    public static AmazonGlacierClient glacierClient;

    public static AmazonSQSClient sqsClient;

    public static AmazonSNSClient snsClient;

   

    public static void main(String[] args) throws IOException {

       

       

          ProfileCredentialsProvider credentials = new ProfileCredentialsProvider();

         

        glacierClient = new AmazonGlacierClient(credentials);       

        sqsClient = new AmazonSQSClient(credentials);

        snsClient = new AmazonSNSClient(credentials);

       

        glacierClient.setEndpoint("glacier.us-west-2.amazonaws.com");

        sqsClient.setEndpoint("sqs.us-west-2.amazonaws.com");

        snsClient.setEndpoint("sns.us-west-2.amazonaws.com");

 

        try {

            ArchiveTransferManager atm = new ArchiveTransferManager(glacierClient, sqsClient, snsClient);

           

            atm.download(vaultName, archiveId, new File(downloadFilePath));

           

        } catch (Exception e)

        {

            System.err.println(e);

        }

    }

}

 

Tải về 1 archive từ vault dùng AWS SDK for .NET

 

using System;

using Amazon.Glacier;

using Amazon.Glacier.Transfer;

using Amazon.Runtime;

 

namespace glacier.amazon.com.docsamples

{

    class ArchiveDownloadHighLevel_GettingStarted

    {

        static string vaultName = "examplevault";

        static string archiveId = "*** Provide archive ID ***";

        static string downloadFilePath = "*** Provide file path ***";

 

        public static void Main(string[] args)

        {

            try

            {

                var manager = new ArchiveTransferManager(Amazon.RegionEndpoint.USWest2);

 

                var options = new DownloadOptions();

                options.StreamTransferProgress += ArchiveDownloadHighLevel_GettingStarted.progress;

                // Download an archive.

                manager.Download(vaultName, archiveId, downloadFilePath, options);

 

                Console.ReadKey();

            }

            catch (AmazonGlacierException e) { Console.WriteLine(e.Message); }

            catch (AmazonServiceException e) { Console.WriteLine(e.Message); }

            catch (Exception e) { Console.WriteLine(e.Message); }

            Console.WriteLine("To continue, press Enter");

            Console.ReadKey();

        }

 

        static int currentPercentage = -1;

        static void progress(object sender, StreamTransferProgressArgs args)

        {

            if (args.PercentDone != currentPercentage)

            {

                currentPercentage = args.PercentDone;

                Console.WriteLine("Downloaded {0}%", args.PercentDone);

            }

        }

    }

}

 

Step 5: Delete 1 archive từ vault

Tất cả các hành động trên archive như upload, download, và delete đều yêu cầu lập trình. Console chưa hỗ trợ các hành động trên archive.

Delete 1 archive dùng Java

 

import java.io.IOException;

 

import com.amazonaws.auth.profile.ProfileCredentialsProvider;

import com.amazonaws.services.glacier.AmazonGlacierClient;

import com.amazonaws.services.glacier.model.DeleteArchiveRequest;

 

public class AmazonGlacierDeleteArchive_GettingStarted {

 

    public static String vaultName = "examplevault";

    public static String archiveId = "*** provide archive ID***";

    public static AmazonGlacierClient client;

   

    public static void main(String[] args) throws IOException {

       

         

          ProfileCredentialsProvider credentials = new ProfileCredentialsProvider();

 

        client = new AmazonGlacierClient(credentials);

        client.setEndpoint("https://glacier.us-west-2.amazonaws.com/&quot;);       

 

        try {

 

            // Delete the archive.

            client.deleteArchive(new DeleteArchiveRequest()

                .withVaultName(vaultName)

                .withArchiveId(archiveId));

           

            System.out.println("Deleted archive successfully.");

           

        } catch (Exception e) {

            System.err.println("Archive not deleted.");

            System.err.println(e);

        }

    }

}

 

 

Delete 1 archive dùng .NET

 

using System;

using Amazon.Glacier;

using Amazon.Glacier.Transfer;

using Amazon.Runtime;

 

namespace glacier.amazon.com.docsamples

{

  class ArchiveDeleteHighLevel_GettingStarted

  {

    static string vaultName = "examplevault";

    static string archiveId = "*** Provide archive ID ***";

 

    public static void Main(string[] args)

    {

      try

      {

        var manager = new ArchiveTransferManager(Amazon.RegionEndpoint.USWest2);

        manager.DeleteArchive(vaultName, archiveId);

        Console.ReadKey();

      }

      catch (AmazonGlacierException e) { Console.WriteLine(e.Message); }

      catch (AmazonServiceException e) { Console.WriteLine(e.Message); }

      catch (Exception e) { Console.WriteLine(e.Message); }

      Console.WriteLine("To continue, press Enter");

      Console.ReadKey();

    }

  }

}

 

 

Step 6: Delete 1 vault

Vault là thùng chứa để lưu trữ archive. Bạn có thể delete 1 vault chỉ nếu không có archive nào trong nó. Nghĩa là không còn việc ghi vào vault.

Ghi chú

Amazon Glacier chuẩn bị 1 inventory cho mỗi vault periodically, mỗi 24 giờ. Bởi vậy inventory không phản ảnh được thông tin mới nhất, Amazon Glacier kiểm tra vault rỗng bằng cách kiểm tra nếu có bất kỳ hành động ghi nào từ vault inventory sau cùng.

Bạn có thể delete 1 vault dùng lập trình hoặc console. Phần này dùng console để delete 1 vault. Thông tin về delete 1 vault dùng lập trình, xem Deleting a Vault in Amazon Glacier.

Để delete 1 vault

1. Đăng nhập AWS Management Console và mở Amazon Glacier Console tại https://console.aws.amazon.com/glacier

2. Chọn region mà vault tồn tại

Dùng US West (Oregon)

clip_image001[1]

3. Chọn vault muốn delete

Chọn vault tên examplevault

clip_image007

4. Click Delete Vault

clip_image008

Làm việc với Vault

Vault là thùng chứa để lưu trữ các archive. Khi bạn tạo 1 vault, phải chỉ định tên vault và region. Xem danh sách các region hỗ trợ, xem Accessing Amazon Glacier.

Bạn có thể lưu trữ không giới hạn số lượng archive trong vault.

Ghi chú

Amazon Glacier cung cấp 1 management console. Bạn có thể dùng console để create và delete các vault. Tuy nhiên, tất cả các tương tác khác với Amazon Glacier đều bắt buộc phải dùng lập trình.

Tạo vault

AWS account có thể tạo 1,000 vault trên mỗi region. Muốn tạo nhiều hơn số vault này, xem Amazon Glacier product detail page.

Khi tạo vault, phải cung cấp tên vault. Tên vault phải thỏa các yêu cầu sau:

·         Tên vault phải từ 1-255 ký tự dài

·         Các ký tự cho phép là a-z, A-Z, 0-9, ‘_’ (underscore), ‘-‘ (hyphen), và ‘.’ (period).

Tên vault phải duy nhất cho mỗi account và mỗi region mà vault được tạo. Nghĩa là 1 account có thể tạo các vault cùng tên trong các region khác nhau.

Tạo vault dùng AWS SDK for Java

 

import java.io.IOException;

import java.util.List;

 

import com.amazonaws.auth.profile.ProfileCredentialsProvider;

import com.amazonaws.services.glacier.AmazonGlacierClient;

import com.amazonaws.services.glacier.model.CreateVaultRequest;

import com.amazonaws.services.glacier.model.CreateVaultResult;

import com.amazonaws.services.glacier.model.DeleteVaultRequest;

import com.amazonaws.services.glacier.model.DescribeVaultOutput;

import com.amazonaws.services.glacier.model.DescribeVaultRequest;

import com.amazonaws.services.glacier.model.DescribeVaultResult;

import com.amazonaws.services.glacier.model.ListVaultsRequest;

import com.amazonaws.services.glacier.model.ListVaultsResult;

 

 

public class AmazonGlacierVaultOperations {

 

    public static AmazonGlacierClient client;

 

    public static void main(String[] args) throws IOException {

 

          ProfileCredentialsProvider credentials = new ProfileCredentialsProvider();

         

        client = new AmazonGlacierClient(credentials);

        client.setEndpoint("https://glacier.us-east-1.amazonaws.com/&quot;);

       

        String vaultName = "examplevaultfordelete";

 

        try {           

            createVault(client, vaultName);

            describeVault(client, vaultName);

            listVaults(client);

            deleteVault(client, vaultName);     

 

        } catch (Exception e) {

            System.err.println("Vault operation failed." + e.getMessage());

        }

    }

 

    private static void createVault(AmazonGlacierClient client, String vaultName) {

        CreateVaultRequest createVaultRequest = new CreateVaultRequest()

            .withVaultName(vaultName);

        CreateVaultResult createVaultResult = client.createVault(createVaultRequest);

 

        System.out.println("Created vault successfully: " + createVaultResult.getLocation());

    }

 

    private static void describeVault(AmazonGlacierClient client, String vaultName) {

        DescribeVaultRequest describeVaultRequest = new DescribeVaultRequest()

            .withVaultName(vaultName);

        DescribeVaultResult describeVaultResult  = client.describeVault(describeVaultRequest);

 

        System.out.println("Describing the vault: " + vaultName);

        System.out.print(

                "CreationDate: " + describeVaultResult.getCreationDate() +

                "\nLastInventoryDate: " + describeVaultResult.getLastInventoryDate() +

                "\nNumberOfArchives: " + describeVaultResult.getNumberOfArchives() +

                "\nSizeInBytes: " + describeVaultResult.getSizeInBytes() +

                "\nVaultARN: " + describeVaultResult.getVaultARN() +

                "\nVaultName: " + describeVaultResult.getVaultName());

    }

 

    private static void listVaults(AmazonGlacierClient client) {

        ListVaultsRequest listVaultsRequest = new ListVaultsRequest();

        ListVaultsResult listVaultsResult = client.listVaults(listVaultsRequest);

 

        List<DescribeVaultOutput> vaultList = listVaultsResult.getVaultList();

        System.out.println("\nDescribing all vaults (vault list):");

        for (DescribeVaultOutput vault : vaultList) {

            System.out.println(

                    "\nCreationDate: " + vault.getCreationDate() +

                    "\nLastInventoryDate: " + vault.getLastInventoryDate() +

                    "\nNumberOfArchives: " + vault.getNumberOfArchives() +

                    "\nSizeInBytes: " + vault.getSizeInBytes() +

                    "\nVaultARN: " + vault.getVaultARN() +

                    "\nVaultName: " + vault.getVaultName());

        }

    }

 

    private static void deleteVault(AmazonGlacierClient client, String vaultName) {

        DeleteVaultRequest request = new DeleteVaultRequest()

            .withVaultName(vaultName);

        client.deleteVault(request);

        System.out.println("Deleted vault: " + vaultName);

    }

 

}

 

 

Tạo vault dùng AWS SDK for .NET

Tạo vault dùng high-level API của AWS SDK for .NET

 

using System;

using Amazon.Glacier;

using Amazon.Glacier.Transfer;

using Amazon.Runtime;

 

namespace glacier.amazon.com.docsamples

{

  class VaultCreateDescribeListVaultsDeleteHighLevel

  {

    static string vaultName = "*** Provide vault name ***";

 

    public static void Main(string[] args)

    {

      try

      {

          var manager = new ArchiveTransferManager(Amazon.RegionEndpoint.USEast1);

          manager.CreateVault(vaultName);

          Console.WriteLine("Vault created. To delete the vault, press Enter");

          Console.ReadKey();

          manager.DeleteVault(vaultName);

          Console.WriteLine("\nVault deleted. To continue, press Enter");

      }

      catch (AmazonGlacierException e) { Console.WriteLine(e.Message); }

      catch (AmazonServiceException e) { Console.WriteLine(e.Message); }

      catch (Exception e) { Console.WriteLine(e.Message); }

      Console.WriteLine("To continue, press Enter");

      Console.ReadKey();

    }

  }

}

 

 

Tạo vault dùng low-level API của AWS SDK for .NET

 

using System;

using Amazon.Glacier;

using Amazon.Glacier.Model;

using Amazon.Runtime;

 

namespace glacier.amazon.com.docsamples

{

  class VaultCreateDescribeListVaultsDelete

  {

    static string vaultName = "*** Provide vault name ***";

    static AmazonGlacier client;

 

    public static void Main(string[] args)

    {

       try

      {

        using (client = new AmazonGlacierClient(Amazon.RegionEndpoint.USEast1))

        {

          Console.WriteLine("Creating a vault.");

          CreateAVault();

          DescribeVault();

          GetVaultsList();

          Console.WriteLine("\nVault created. Now press Enter to delete the vault…");

          Console.ReadKey();

          DeleteVault();

        }

      }

      catch (AmazonGlacierException e) { Console.WriteLine(e.Message); }

      catch (AmazonServiceException e) { Console.WriteLine(e.Message); }

      catch (Exception e) { Console.WriteLine(e.Message); }

      Console.WriteLine("To continue, press Enter");

      Console.ReadKey();

    }

 

    static void CreateAVault()

    {

      CreateVaultRequest request = new CreateVaultRequest()

      {

        VaultName = vaultName

      };

      CreateVaultResponse response = client.CreateVault(request);

      Console.WriteLine("Vault created: {0}\n", response.CreateVaultResult.Location);

    }

 

    static void DescribeVault()

    {

      DescribeVaultRequest describeVaultRequest = new DescribeVaultRequest()

      {

        VaultName = vaultName

      };

  

      DescribeVaultResponse describeVaultResponse = client.DescribeVault(describeVaultRequest);

      DescribeVaultResult describeVaultResult = describeVaultResponse.DescribeVaultResult;

      Console.WriteLine("\nVault description…");

      Console.WriteLine(

        "\nVaultName: " + describeVaultResult.VaultName +

        "\nVaultARN: " + describeVaultResult.VaultARN +

        "\nVaultCreationDate: " + describeVaultResult.CreationDate +

        "\nNumberOfArchives: " + describeVaultResult.NumberOfArchives +

        "\nSizeInBytes: " + describeVaultResult.SizeInBytes +

        "\nLastInventoryDate: " + describeVaultResult.LastInventoryDate

        );

    }

 

    static void GetVaultsList()

    {

      string lastMarker = null;

      Console.WriteLine("\n List of vaults in your account in the specific region …");

      do

      {

        ListVaultsRequest request = new ListVaultsRequest()

        {

          Marker = lastMarker

        };

        ListVaultsResponse response = client.ListVaults(request);

 

        ListVaultsResult result = response.ListVaultsResult;

       

        foreach (DescribeVaultOutput output in result.VaultList)

        {

          Console.WriteLine("Vault Name: {0} \tCreation Date: {1} \t #of archives: {2}",

                            output.VaultName, output.CreationDate, output.NumberOfArchives);

        }

        lastMarker = result.Marker;

      } while (lastMarker != null);

    }

 

    static void DeleteVault()

    {

      DeleteVaultRequest request = new DeleteVaultRequest()

      {

        VaultName = vaultName

      };

      DeleteVaultResponse response = client.DeleteVault(request);

    }

  }

}

 

 

Tạo vault dùng REST API

Để tạo vault dùng REST API, xem Create Vault (PUT vault).

Truy xuất vault metadata

Bạn có thể truy xuất thông tin vault như creation date, số archive trong vault, và tổng kích thước tất cả các archive trong vault. Amazon Glacier cung cấp API cho phép truy xuất thông tin 1 vault cụ thể hoặc tất cả các vault trong 1 region thuộc 1 account.

Nếu muốn truy xuất danh sách vault, tên vault theo giá trị ASCII được trả về. Danh sách này tối đa lên đến 1,000 vault. Bạn có thể giới hạn số lượng bản ghi được trả về, kết quả được phân trang. Cần gửi thêm request để lấy kết quả tiếp theo.

Truy xuất vault metadata dùng AWS SDK for Java

Truy xuất vault metadata của 1 vault cụ thể

 

DescribeVaultRequest request = new DescribeVaultRequest()

          .withVaultName("*** provide vault name***");

 

DescribeVaultResult result = client.describeVault(request);

 

System.out.print(

        "\nCreationDate: " + result.getCreationDate() +

        "\nLastInventoryDate: " + result.getLastInventoryDate() +

        "\nNumberOfArchives: " + result.getNumberOfArchives() +

        "\nSizeInBytes: " + result.getSizeInBytes() +

        "\nVaultARN: " + result.getVaultARN() +

        "\nVaultName: " + result.getVaultName());

 

 

Truy xuất vault metadata của tất cả các vault trong 1 region

 

AmazonGlacierClient client;

client.setEndpoint("https://glacier.us-east-1.amazonaws.com/&quot;);

 

String marker = null;

do {           

    ListVaultsRequest request = new ListVaultsRequest()

        .withLimit("5")

        .withMarker(marker);

    ListVaultsResult listVaultsResult = client.listVaults(request);

   

    List<DescribeVaultOutput> vaultList = listVaultsResult.getVaultList();

    marker = listVaultsResult.getMarker();

    for (DescribeVaultOutput vault : vaultList) {

        System.out.println(

                "\nCreationDate: " + vault.getCreationDate() +

                "\nLastInventoryDate: " + vault.getLastInventoryDate() +

                "\nNumberOfArchives: " + vault.getNumberOfArchives() +

                "\nSizeInBytes: " + vault.getSizeInBytes() +

                "\nVaultARN: " + vault.getVaultARN() +

                "\nVaultName: " + vault.getVaultName());

    }

} while (marker != null);

 

 

Truy xuất vault metadata dùng AWS SDK for .NET

Truy xuất vault metadata của 1 vault cụ thể

 

AmazonGlacier client;

client = new AmazonGlacierClient(Amazon.RegionEndpoint.USEast1);

 

DescribeVaultRequest describeVaultRequest = new DescribeVaultRequest()

{

  VaultName = "*** Provide vault name ***"

}; 

DescribeVaultResponse describeVaultResponse = client.DescribeVault(describeVaultRequest);

DescribeVaultResult describeVaultResult = describeVaultResponse.DescribeVaultResult;

Console.WriteLine("\nVault description…");

Console.WriteLine(

   "\nVaultName: " + describeVaultResult.VaultName +

   "\nVaultARN: " + describeVaultResult.VaultARN +

   "\nVaultCreationDate: " + describeVaultResult.CreationDate +

   "\nNumberOfArchives: " + describeVaultResult.NumberOfArchives +

   "\nSizeInBytes: " + describeVaultResult.SizeInBytes +

   "\nLastInventoryDate: " + describeVaultResult.LastInventoryDate

   );

 

 

Truy xuất vault metadata tất cả các vault trong 1 region

 

AmazonGlacier client;

client = new AmazonGlacierClient(Amazon.RegionEndpoint.USEast1);

string lastMarker = null;

do

{

  ListVaultsRequest request = new ListVaultsRequest()

  {

    Limit = 5,

    Marker = lastMarker

  };

  ListVaultsResponse response = client.ListVaults(request);

 

  ListVaultsResult result = response.ListVaultsResult;

  Console.WriteLine("\n List of vaults in your account in the specific region …");

  foreach (DescribeVaultOutput output in result.VaultList)

  {

    Console.WriteLine("Vault Name: {0} \tCreation Date: {1} \t #of archives: {2}",

                      output.VaultName, output.CreationDate, output.NumberOfArchives);

  }

  lastMarker = result.Marker;

} while (lastMarker != null);

 

 

Truy xuất vault metadata dùng REST API

Để liệt kê các vault, xem List Vaults (Get vaults). Để mô tả 1 vault, xem Describe Vault (GET vault).

Tải về 1 vault inventory

Sau khi bạn upload archive đầu tiên vào vault, Amazon Glacier tự động tạo 1 vault inventory và sau đó cập nhật nó 1 lần 1 ngày. Sau khi Amazon Glacier tạo inventory đầu tiên, thường mất khoảng nữa ngày đến 1 ngày trước khi inventory sẵn sàng để sử dụng. Có thể truy xuất vault inventory bằng 2 cách:

1. Khởi tạo 1 retrieval job

2. Sau khi job hoàn thành, tải về các bytes

Ví dụ, truy xuất archive hoặc vault inventory bắt buộc phải khởi tạo job. Job được thực thi bất đồng bộ. Khi bạn tạo job, Amazon Glacier tạo job và trả về job ID. Khi job hoàn thành, có thể truy xuất job output, archive bytes hoặc vault inventory data.

Job phải hòan thành trước khi bạn lấy output. Để xác định trạng thái của job, bạn có các tùy chọn:

·         Đợi thông báo job hoàn thành – Có thể dùng Amazon SNS topic để nhận notification khi job hoàn thành

·         Yêu cầu thông tin job một cách tường minh – Amazon Glacier cũng cung cấp hành động mô tả job (Describe Job (GET JobID)). Bạn có thể định kỳ gửi yêu cầu lấy thông tin job. Tuy nhiên dùng Amazon SNS là tùy chọn nên dùng.

Nói về Inventory

Amazon Glacier cập nhật vault inventory 1 lần một ngày, bắt đầu từ ngày bạn upload archive đầu tiên vào vault. Nếu không có thêm mới hay xóa archive kể từ inventory sau cùng, inventory date không được cập nhật. Khi bạn khởi tạo 1 job cho vault inventory, Amazon Glacier trả về inventory gần nhất được tạo ra, đây là snapshot tại một thời điểm chứ không phải dữ liệu real-time. Lưu ý rằng sau khi Amazon Glacier tạo inventory đầu tiên cho vault, mất khoảng nữa ngày đến 1 ngày trước khi có thể truy xuất inventory.

Bạn không thấy có ích khi truy xuất vault inventory mỗi khi upload archive. Tuy nhiên, trường hợp bạn duy trì 1 database phía client liên quan đến metadata về các archive đã upload lên Amazon Glacier. Lúc này mới thấy được sự hữu ích, database của bạn là vault inventory thực sự.

Inventory có thể được trả về theo 2 định dạng, CSV hoặc JSON. Bạn có thể chỉ định định dạng khi khởi tạo job. Định dạng mặc định là JSON.

Tải về vault inventory dùng AWS SDK for Java

Xem http://docs.aws.amazon.com/amazonglacier/latest/dev/retrieving-vault-inventory-java.html

Tải về vault inventory dùng AWS SDK for .NET

Xem http://docs.aws.amazon.com/amazonglacier/latest/dev/retrieving-vault-inventory-sdk-dotnet.html

Tải về vault inventory dùng REST API

Xem http://docs.aws.amazon.com/amazonglacier/latest/dev/retrieving-vault-inventory-rest-api.html

Cấu hình vault notification

Cấu hình vault notification dùng AWS SDK for Java

Xem http://docs.aws.amazon.com/amazonglacier/latest/dev/configuring-notifications-sdk-java.html

Cấu hình vault notification dùng AWS SDK for .NET

Xem http://docs.aws.amazon.com/amazonglacier/latest/dev/configuring-notifications-sdk-dotnet.html

Cấu hình vault notification dùng REST API

Xem http://docs.aws.amazon.com/amazonglacier/latest/dev/configuring-notifications-rest-api.html

Cấu hình vault notification dùng console

Khi cấu hình notification, chỉ định cụ thể 1 job event mà sẽ tạo ra notification đến Amazon SNS topic. Ngoài việc cấu hình notification cho vault, bạn cũng có thể chỉ định topic để public notification khi bạn khởi tạo job.

Để cấu hình vault notification

1. Đăng nhập AWS Management Console và mở Amazon Glacier Console tại https://console.aws.amazon.com/glacier

2. Chọn 1 vault trong danh sách

clip_image010

3. Chọn Notification tab

4. Chọn enable trong Notification field.

clip_image012

5. Trong Notifications tab, làm 1 trong các điều sau:

To…

Do this…

Specify an existing Amazon SNS topic

Enter the Amazon SNS topic in the Amazon SNS Topic ARN text box.

The topic is an Amazon Resource Name (ARN) that has the form shown below.

arn:aws:sns:region:accountId:topicname

You can find the an Amazon SNS topic ARN from the Amazon Simple Notification Service (Amazon SNS) console.

Create a new Amazon SNS topic

a.    Click create a new SNS topic.

A Create Notifications SNS Topic dialog box appears.

b.    In the Topic Name field, specify the name of the new topic.

If you will subscribe to the topic using SMS subscriptions, put a name in the Display Namefield.

clip_image013

c.     Click Create Topic.

The Amazon SNS Topic ARN text box is populated with the ARN of the new topic.

 

6. Chọn các events sẽ trigger notificaiton

Ví dụ, trigger notification khi job hoàn thành, chỉ chọn Get Archive Job Complete.

clip_image015

7. Click Save.

Quan trọng

Mặc định, 1 topic mới không có subscriptions liên quan đến nó. Để nhận notification được gửi đến topic, bạn phải subscribe topic, xem Subscribe to a Topc.

Xóa 1 vault

Chỉ có thể xóa 1 vault nếu không còn archive nào trong vault được ghi nhận bởi last inventory và không còn hành động ghi nào vào vault kể từ last inventory.

Ghi chú

Amazon Glacier chuẩn bị 1 inventory cho mỗi chu kỳ vault, mỗi 24 giờ. Bởi vì inventory không phản ánh thông tin mới nhất, Amazon Glacier đảm bảo vault thật sự empty bằng cách kiểm tra nếu có bất kỳ hành động ghi nào kể từ last vault inventory.

Xóa 1 vault dùng AWS SDK for Java

Xem http://docs.aws.amazon.com/amazonglacier/latest/dev/deleting-vaults-sdk-java.html

Xóa 1 vault dùng AWS SDK for .NET

Xem http://docs.aws.amazon.com/amazonglacier/latest/dev/deleting-vaults-sdk-dotnet.html

Xóa 1 vault dùng REST API

Xem http://docs.aws.amazon.com/amazonglacier/latest/dev/deleting-vault-rest-api.html

Xóa vault dùng console

1. Đăng nhập Amazon Glacier console

2. Chọn AWS region chứa vault

3. Chọn vault

4. Click Delete Vault.

Làm việc với archive

Xem thêm http://docs.aws.amazon.com/amazonglacier/latest/dev/working-with-archives.html

Dùng AWS SDKs

Amazon Web Services cung cấp SDK giúp bạn phát triển ứng dụng. SDK libraries đóng gói các Amazon Glacier API, đơn giản hóa các tác vụ lập trình. Ví dụ, với mỗi request được gửi tới Amazon Glacier, bạn phải thêm 1 signature để chứng thực request. Khi bạn dùng libraries, chỉ cần cung cấp AWS security credentials trong code và libraries sẽ làm phần còn lại.

Ghi chú

Amazon Glacier được hỗ trợ bởi AWS SDK for Java, .NET, PHP, và Python.

AWS SDK for Java và .NET gồm high-level và low-level wrapper libraries.

Low-level API là gì?

Low-level API là tầng thấp nhất, gần với REST API nhất. Với mỗi hành động REST, low-level API cung cấp phương thức tương ứng.

High-level API là gì?

Các API ở mức trừu tượng cao hơn của các hành động REST API. Ví dụ

·         Tải lên 1 archive – Để tải lên archive dùng low-level API ngoài chỉ định file name và vault name. Bạn cần cung cấp checksum (SHA-256 tree hash) của payload. Tuy nhiên, high-level API sẽ tính toán checksum cho bạn.

·         Tải về archive hoặc vault inventory – Để tải về archive dùng low-level API, bạn phải khởi tạo job, đợi job hòan thành và lấy output. Bạn cần viết thêm code cho Amazon SNS topic để notify khi job hoàn thành. Bạn cũn cần có cơ chế polling để kiểm tra nếu job hoàn thành và message được post lên topic. High-level API cung cấp phương thức giúp tải về 1 archive và takes care of tất cả các bước. Bạn chỉ cần chỉ định archive ID và chỉ định folder path nơi cần lưu dữ liệu tải về.

Xem thêm http://docs.aws.amazon.com/amazonglacier/latest/dev/using-aws-sdk.html

Advertisements


2 Comments

Bắt đầu với Amazon Simple Storage Service (Amazon S3)


Bắt đầu với Amazon Simple Storage Service

Amazon Simple Storage Service (Amazon S3) là vùng lưu trữ trên Internet. Dùng Amazon S3 để lưu trữ và truy xuất bất kỳ dữ liệu tại bất kỳ thời điểm nào, từ bất cứ nơi đâu trên web. Bạn có thể tương tác với Amazon S3 dùng AWS Management Console, giao diện web đơn giản nhưng trực quan. Tài liệu này hướng dẫn dùng AWS Management Console để tương tác với Amazon S3

clip_image002[4]

Thông tin về các tính năng, giá của Amazon S3 và xem FAQ tại Amazon S3 product page.

Cơ bản về Amazon S3

Để hiểu về Amazon S3, bạn cần nắm 1 số khái niệm cơ bản. Amazon S3 lưu trữ dữ liệu như các object trong các bucket. Một object gồm 1 filemetadata mô tả cho file (tùy chọn).

Để lưu 1 object trong Amazon S3, bạn tải file lên 1 bucket. Khi đã tải file, bạn có thể gán quyền cho đối tượng cũng như bổ sung metadata.

Bucket là các thùng chứa cho các object. Bạn có thể tạo 1 hay nhiều bucket. Với mỗi bucket, bạn có thể điều khiển việc truy xuất đến nó (ai có thể tạo, xóa và xem các object trong bucket), xem nhật ký truy xuất đến bucket và đến các object bên trong, cũng như chọn region mà Amazon S3 sẽ lưu bucket và nội dung trong nó.

Khi dùng AWS Management Console, có thể tạo folder để nhóm các object, và có thể tạo folder lồng bên trong nhiều cấp.

Đăng ký dùng Amazon S3

clip_image004[4]

Để dùng Amazon S3, cần 1 tài khoản AWS. Nếu chưa có, bạn sẽ được nhắc tạo 1 tài khoản. Bạn sẽ không bị tính phí Amazon S3 đến khi nào thật sự sử dụng nó.

Để đăng ký dùng Amazon S3

1. Vào trang http://aws.amazon.com/s3 và nhấn Sign Up.

2. Làm theo các chỉ dẫn trên màn hình.

AWS sẽ thông báo đến bạn qua e-mail khi tài khoản đã được kích hoạt và sẵn sàng sử dụng.

Tạo 1 bucket

clip_image006[4]

Bạn đã đăng ký dùng Amazon S3, như vậy đã sẵn sàng tạo bucket dùng AWS Management Console. Mỗi object trong Amazon S3 phải được lưu trong 1 bucket. Do vậy trước khi lưu trữ dữ liệu, phải tạo bucket.

Ghi chú

Bạn không bị tính phí tạo bucket; chỉ bị tính phí khi lưu trữ các object trong bucket và chuyển đổi các object vào/ra khỏi bucket. Trong hướng dẫn này, mức phí mà bạn bị tính sẽ rất nhỏ (ít hơn $1). Thêm thông tin, xem Amazon S3 Pricing.

Để tạo bucket

1. Đăng nhập AWS Management Console và mở Amazon S3 console tại http://console.aws.amazon.com/s3

2. Chọn Create Bucket.

clip_image007[4]

3. Trong hộp thoại Create a Bucket, trong Bucket Name, nhập tên của bucket.

Tên bucket phải không trùng với tất cả các tên đã tồn tại trong Amazon S3. Một cách để chắc chắn tên bucket không dễ trùng là đặt tên tổ chức làm prefix trước tên bucket. Tên bucket cũng phải thỏa một số quy luật. Thêm thông tin, xem Bucket Restrictions and Limiations.

Ghi chú

Sau khi tạo bucket, bạn không thể thay đổi tên. Ngoài ra, tên bucket sẽ xuất hiện trong URL trỏ đến đối tượng lưu trong bucket. Nên hãy đảm bảo rằng tên bucket bạn chọn là phù hợp.

4. Trong hộp thoại Region, chọn 1 region. Tôi để mặc định (default).

Bạn có thể chọn 1 region gần nhất để tối ưu hóa latency, chi phí,… Các đối tượng được lưu trong 1 region sẽ vẫn ở đó mãi mãi đến khi nào bạn di chuyển nó sang region khác. Thông tin về region, xem Buckets and Regions.

5. Chọn Create.

Khi Amazon S3 tạo bucket thành công, một bucket rỗng sẽ hiện ra trong Buckets panel.

clip_image009[4]

Thêm 1 object vào bucket

clip_image011[4]

Bạn đã tạo 1 bucket và sẵn sàng để thêm object vào. Một object có thể là bất kỳ tập tin nào: text file, photo, video,… Khi thêm tập tin vào Amazon S3, có thể tùy chọn thêm metadata và gán quyền điều khiển việc truy cập vào tập tin.

Quan trọng

Thêm thông tin về chi phí lưu trữ, xem Amazon S3 Pricing page.

Tải lên 1 object

1. Trong Amazon S3 console, chọn tên của bucket muốn tải lên object và chọn Upload.

clip_image012[4]

2. Trong Upload – Select Files wizard, nếu muốn tải lên cả 1 folder, bạn phải click Enable Enhanced Uploader để cài đặt Java applet cần thiết. Chỉ cần làm điều này 1 lần.

clip_image014[4]

3. Chọn Add Files.

Một hộp thoại chọn tập tin mở ra:

·         Nếu bạn bận tính năng Advanced Uploader trong bước 2, bạn sẽ thấy hộp thoại Java với tiêu đề Select files and folders to upload, như hình.

·         Nếu không, bạn sẽ thấy hộp thoại File Upload tùy thuộc vào từng hệ điều hành.

clip_image015[4]

4. Chọn tập tin cần tải lên và click Open.

5. Click Start Upload.

Bạn có thể xem quá trình tải lên tập tin thông qua Transfers panel.

Tip

Để ẩn hộp thoại Transfer, click nút Close ở góc trên bên phải của Transfers panel. Để mở nó, click Transfers.

Xem 1 object

clip_image017[4]

Bạn đã biết cách thêm object vào bucket, bây giờ bạn có thể mở và xem nó trong trình duyệt. Bạn cũng có thể tải đối tượng về máy tính.

Để mở hoặc tải 1 object

1. Trong Amazon S3 console, trong danh sách Objects and Folders, click phải lên các object muốn mở hoặc tải về, sau đó chọn Open hoặc Download.

clip_image018[4]

2. Nếu tải về object, phải chỉ định nơi sẽ lưu nó. Các bước lưu object tùy thuộc vào trình duyệt và hệ điều hành bạn sử dụng.

Ghi chú

Mặc định, các bucket và object là private. Để cho phép xem các đối tượng thông qua URL, ví dụ, https://s3.amazon.com/bucket/object, bạn phải làm cho object trở thành public. Nếu không thì bạn cần tạo 1 URL với chữ ký gồm thông tin chứng thực. Thêm thông tin về cách làm cho object trở thành public, xem Editing Object Permissions. Thêm thông tin về URL với chữ ký, xem Share an Object with Others

Di chuyển 1 object

clip_image020[4]

Bạn đã thêm object vào bucket và xem nó, bây giờ bạn có thể di chuyển object đến folder khác hoặc bucket khác.

Ghi chú

Phần sau đây bạn chỉ làm việc với 1 object, tuy nhiên bạn có thể làm tương tự cho 1 folder.

Di chuyển 1 object

1. Trong Amazon S3 console, click phải lên object cần di chuyển và chọn Cut.

Tip

Bạn có thể dùng Shift và Ctrl để chọn nhiều objects và thực hiện cùng 1 hành động.

clip_image021[4]

2. Di chuyển đến bucket hoặc folder muốn đặt object. Click phải lên folder hoặc bucket và click Paste Into.

clip_image022[4]

Tip

Theo dõi quá trình di chuyển dùng hộp thoại Transfers. Để mở nó, chọn nút Transfers. Để ẩn nó, chọn nút Close ở góc trên bên trái của hộp thoại Transfers.

Xóa 1 object và bucket

clip_image024[4]

Xóa 1 object

1. Trong Amazon S3 console, trong Objects and Folders panel, click phải lên object muốn xóa và click Delete.

Tip

Bạn có thể dùng Shift và Ctrl để chọn nhiều đối tượng cần xóa.

clip_image025[4]

2. Khi hộp thoại xác nhận xóa xuất hiện, click Ok.

Để xóa 1 bucket, trước hết phải xóa tất cả các object trong nó.

Xóa 1 bucket

1. Click phải lên bucket muốn xóa và chọn Delete.

clip_image026[4]

2. Khi hộp thoại xác nhận xóa xuất hiện, click Ok.

Amazon S3 – Các tình huống sử dụng

·         Backup and Storage – lưu trữ dự phòng dữ liệu và dịch vụ lưu trữ khác

·         Application Hosting – dịch vụ triển khai, cài đặt và quản lý ứng dụng web

·         Media Hosting – xây dựng hạ tầng dự phòng, khả năng mở rộng, tính sẵn sàng cao để lưu video, photo, hoặc music cho phép upload/download.

·         Software Delivery – lưu phần mềm ứng dụng để khách hàng có thể tải về.

(Theo Amazon S3 Documetation)


Leave a comment

AWS Essentials – Cloud Computing là gì?


"Cloud Computing", theo định nghĩa, đề cập đến việc cung cấp các nguồn lực (resources) và các ứng dụng (applications) công nghệ thông tin (IT) theo nhu cầu (on-demand) thông qua Internet với chi phí chỉ phải trả cho nhu cầu sử dụng (pay-as-you-go).

Sáu ưu điểm và lợi ích của điện toán đám mây

Cloud Benefits - Trade capital for variable expense icon

Trade capital expense for variable expense

Thay vì đầu tư mạnh cho trung tâm dữ liệu và máy chủ trước khi biết mình phải dùng chúng như thế nào. Bạn có thể chỉ cần phải trả cho những tài nguyên tính toàn nào mình sử dụng, và chỉ phải trả cho tầng suất sử dụng chúng.

 

 

Benefits of the cloud - Benefit from massive economies of scale icon

Benefit from massive economies of scale

Dùng điện toán đám mây, bạn có thể đạt được chi phí biến đổi thấp hơn việc sử dụng tài nguyên của chính bạn. Bởi vì lượng sử dụng từ hàng trăm ngàn khách hàng trong đám mây giúp đạt được một quy mô kinh tế cao hơn, và bạn sẽ phải trả giá trị sử dụng thấp hơn.

 

 

Cloud computing benefits - Stop guessing capacity icon

Stop guessing capacity

Loại bỏ việc đánh giá, ước lượng nhu cầu năng lực cơ sở hạ tầng. Khi bạn thực hiện một quyết định về khả năng trước khi triển khai một ứng dụng, bạn thường tạo ra nguồn lực nhàn rỗi đắc tiền hoặc phải đi đối phó với sự hạn chế của năng lực tính toán. Với điện toán đám mây, những vấn đề này sẽ bị loại bỏ. Bạn có thể sử dụng nhiều hay ít tài nguyên như nhu cầu bạn cần chỉ trong vài phút.

 

Benefits of cloud computing - Increase speed and agility icon

 

Increase speed and agility

Trong môi trường điện toán đám mây, việc tạo ra các tài nguyên IT mới chỉ bằng 1 cú nhấp cuột (thế giới IT trong tầm tay), nghĩa là bạn giảm đáng kể thời gian để tạo ra các nguồn lực có sẵn cho các nhà phát triển, từ vài tuần xuống còn vài phút. Điều này mang đến sự nhanh nhẹn, linh hoạt cho tổ chức, chi phí và thời giản để thử nghiệm và phát triển sản phẩm sẽ thấp hơn.

Cloud benefits - Stop spending money on running and maintaining data centers icon

 

Stop spending money on running and maintaining data centers

Tập trung vào các dự án mang lại khác biệt cho việc kinh doanh của bạn, không phải cơ sở hạ tầng. Điện toán đám mây cho phép tập trung vào khách hàng của bạn, hơn là hạ tầng tủ rack, máy chủ, năng lượng.

 

Benefits of the cloud - Go global in minutes icon

Go global in minutes

Dễ dàng triển khai ứng dụng ở nhiều khu vực (regions) trên thế giới với chỉ vài cái click chuột. Nghĩa là bạn có thể cung cấp độ trễ thấp, trải nghiệm tốt hơn cho khách hàng trên toàn thế giới với chi phí tối thiểu.

 

 

(Theo Amazon Web Services)


Leave a comment

AWS #2 – Giới thiệu về Amazon Elastic Compute Cloud (Amazon EC2)


Amazon EC2 là gì?

Amazon Elastic Compute Cloud (Amazon EC2) cung cấp khả năng tính toán có thể mở rộng trong Amazon Web Services (AWS) cloud. Dùng Amazon EC2 giúp loại bỏ nhu cầu đầu tư vào phần cứng trước tiên, vì vậy bạn có thể tập trung phát triển và triển khai ứng dụng nhanh hơn. Bạn có thể dùng Amazon EC2 để nhiều hoặc vài máy chủ ảo như bạn cần, cấu hình bảo mật và kết nối mạng, và quản lý lưu trữ. Amazon EC2 cho phép tăng/giảm nhu cầu tính toán, xử lý tùy theo nhu cầu bạn cần.

Đặc điểm của Amazon EC2

Amazon EC2 cung cấp các đặc điểm sau:

  • Môi trường tính toán ảo hóa, được biết như instances
  • Các mẫu được định nghĩa trước cho instances, được biết như Amazon Machine Images (AMIs), cung cấp các gói phần mềm cần thiết cho máy chủ (gồm hệ điều hành và các phần mềm)
  • Các cấu hình khác nhau của CPU, memory, storage, và networking cho instances, được biết như instance types
  • Bảo mật thông tin đăng nhập đến isntances dùng key pairs (AWS lưu public key, bạn sẽ lưu private key ở nơi an toàn)
  • Lưu trữ dữ liệu tạm thời, sẽ bị xóa khi dừng hoặc hủy instance, được biết như instance type volumes
  • Lưu trữ dữ liệu lâu dài dùng Amazon Elastic Block Store (EBS), được biết như Amazon EBS volumes
  • Tách biệt tài nguyên như instances và Amazon EBS volumes trên các vùng lưu trữ vật lý ở nhiều vị trí, được biết như regions và Availability Zones
  • Firewall cho phép chỉ định protocols, ports, và source IP ranges được phép truy xuất đến instances dùng security groups
  • Địa chỉ Static IP được biết như Elastic IP addresses
  • Metadata, được biết như tags, mà bạn có thể tạo và gán cho Amazon EC2 resources
  • Các mạng ảo mà bạn có thể tạo để cô lập với phần còn lại của AWS cloud, và bạn có thể tùy chọn kết nối đến mạng của riêng mình, được biết như virtual private clouds (VPCs)

Các dịch vụ liên quan

Bạn có thể sử dụng các tài nguyên Amazon EC2 như instances và volumes trực tiếp dùng Amazon EC2. Bạn cũng có thể dùng các tài nguyên Amazon EC2 dùng các dịch vụ khác trong AWS.

  • Auto Scaling
  • CloudFormation
  • Elastic Beanstalk
  • Elastic Load Balancing – tự động phân phối lưu lượng đến ứng dụng trên nhiều instances
  • CloudWatch – giám sát trạng thái instances và Amazon EBS volumes
  • CloudTrail – giám sát các cuộc gọi hàm đến Amazon EC2 API từ tài khoản của bạn, bao gồm cả các cuộc gọi hàm được thực hiện bởi AWS Management Console, command line tools, và các dịch vụ khác

Truy xuất đến Amazon EC2

Amazon EC2 cung cấp giao diện người dùng dựa trên web, Amazon EC2 console. Nếu bạn đã đăng nhập với tài khoản AWS, bạn có thể truy xuất Amazon EC2 console bằng cách vào AWS Management Console và chọn EC2.

Nếu bạn dùng giao diện command line, có 1 số tùy chọn:

AWS Command Line Interface (CLI)

Cung cấp các lệnh cho hầu hết các sản phẩm của AWS, được hỗ trợ trên Windows, Mac và Linux.

Amazon EC2 Command Line Interface (CLI) Tools

Cung cấp các lệnh cho Amazon EC2, Amazon EBS, và Amazon VPC, được hỗ trợ trên Windows, Mac và Linux.

AWS Tools for Windows PowerShell

Cung cấp các lệnh cho hầu hết các sản phẩm của AWS cho môi trường Windows PowerShell.

Amazon EC2 cung cấp Query API. Các yêu cầu gọi hàm thuộc dạng HTTP và HTTPS dùng HTTP verbs GET và POST và Query parameter tên Action.

Nếu bạn muốn xây dựng ứng dụng dùng 1 ngôn ngữ cụ thể thay vì gọi các yêu cầu thông qua HTTP hoặc HTTPS, AWS cung cấp các thư viện, mã nguồn, các bài tự học, và các tài nguyên khác cho người phát triển phần mềm. Đây chính là AWS SDKs and Tools.


Leave a comment

AWS #1: AWS Certified Solutions Architect – Associate Level (Exam Blueprint)


Giới thiệu

AWS Certified Solutions Architect – Associate Level dành cho cá nhân đang hoặc muốn làm việc như 1 Solution Architect. Chứng chỉ này xác nhận khả năng của thí sinh để:

  • Xác định và thu thập các yêu cầu để đề ra giải pháp dựa trên hiểu biết và các kỹ năng tốt nhất̀ về kiến trúc.
  • Có khả năng cung cấp các hướng dẫn tốt nhất về kiến trúc cho người phát triển và người quản trị hệ thống trong suốt vòng đời của dự án.

Các kiến thức và kỹ năng cần thiết ở cấp độ này bao gồm các lĩnh vực dưới đây. Mức độ kiến thức được định nghĩa phải có các thành phần chính sau đây:

Kiến thức về AWS

  • Kinh nghiệm thực tiễn với dịch vụ compute, networking, storage, và database AWS.
  • Kinh nghiệm chuyên môn về kiến trúc các hệ thống phân tán quy mô lớn.
  • Hiểu biết về các khái niệm Elasticity và Scalability.
  • Hiểu biết về các công nghệ mạng có liên quan đến AWS.
  • Hiểu biết tốt về tất cả các tính năng và công cụ bảo mật mà AWS cung cấp và mối quan hệ với các dịch vụ truyền thống.
  • Hiệu biết rất vững về cách tương tác với AWS (AWS SDK, AWS API, Command Line Interface, AWS CloudFormation).
  • Kinh nghiệm thực tiễn với các dịch vụ triển khai và quản lý của AWS.

Kiến thức về IT

  • Hiểu biết rất tốt về kiến trúc nhiều tầng (multi-tier): web servers (Apache, Nginx, IIS), caching, application servers, load balancers.
  • RDBMS (MySQL, Oracle, SQL Server), NoSQL
  • Kiến thức về hàng đợi thông điệp (message queuing) và Enterprise Service Bus (EBS).
  • Quen thuộc với loose coupling và stateless systems.
  • Hiểu biết về các mô hình nhất quán (consistency model) khác nhau trong các hệ thống phân tán.
  • Có kinh nghiệm với CDN và các khái niệm về hiệu suất (performance).
  • Kinh nghiệm về mạng với route tables, access control lists, firewalls, NAT, HTTP, DNS, IP và mạng OSI.
  • Kiến thức về RESTful Web Service, XML, JSON.
  • Quen thuộc với vòng đời phát triển phần mềm.
  • Kinh nghiệm làm việc với bảo mật thông tin và ứng dụng bao gồm mã hóa với khóa công khai, SSH, access credentials, và X.509 certificates.

Các khóa đào tạo hoặc các phương pháp tương đương khác sẽ hỗ trợ nhiều cho việc chuẩn bị kỳ thi:

  • Architecting on AWS (aws.amazon.com/training/architect)
  • Kiến thức hoặc đào tạo chuyên sâu về ít nhất 1 ngôn ngữ lập trình cấp cao.
  • AWS Cloud Computing Whitepapers (aws.amazon.com/whitepapers)
    • Tổng quan về Amazon Web Services
    • Tổng quan về Security Processes
    • AWS Risk & Compliance Whitepaper
    • Storage Options in the Cloud
    • Architecting for the AWS Cloud: Best Practices
  • Kinh nghiệm triển khai các hệ thống lai (hybrid) với on-premise và các thành phần AWS.
  • Dùng website của AWS Architecture Center (aws.amazon.com/architecture)
    Chú ý: Bảng kế hoạch này bao gồm các phần nội dung quan trọng, mục tiêu thử nghiệm, và các nội dung ví dụ. Các chủ đề và khái niệm ví dụ chỉ nhằm để làm rõ các mục tiêu thử nghiệm; chúng không nên được hiểu như là 1 danh sách toàn diện của tất cả các nội dung trong kỳ thi này.
    Bảng dưới đây liệt kê tỷ lệ của từng lĩnh vực kiến thức trong kỳ thi.
    Domain % of Examination
    1.0 Designing highly available, cost effective, fault tolerant, scalable systems 60%
    2.0 Implementation/Deployment 10%
    3.0 Data Security 20%
    4.0 Troubleshooting 10%
    TOTAL 100%

Các giới hạn trả lời

Thí sinh lựa chọn từ bốn (4) hoặc nhiều hơn các tùy chọn trả lời mà cho là tốt nhất để hoàn thành câu hỏi. Bỏ qua hoặc trả lời sai xem như là chưa hoàn thành kiến thức hoặc kỹ năng cần thiết.

Dạng thức thi được sử dùng là:

  • Multiple-choice: thí sinh chọn 1 lựa chọn tốt nhất để trả lời cho câu hỏi hoặc câu khẳng định. Các tùy chọn có thể được nhúng vào hình đồ họa để thí sinh có thể "points and clicks".
  • Multiple-response: thí sinh chọn nhiều hơn 1 lựa chọn để trả lời cho cẩu hỏi hoặc câu khẳng định.
  • Sample Directions: đọc câu hỏi hoặc câu khẳng định và từ các tùy chọn trả lời, chỉ chọn 1 đáp án đại diện cho câu trả lời tốt nhất.

Các giới hạn nội dung

1.     Domain 1.0: Designing highly available, cost efficient, fault tolerant, scalable systems

1.1   Xác định và nhận xét kiến trúc điện toán đám mây, như các thành phần cơ bản và các thiết kế hiệu quả.

Nội dung bao gồm:

  • Cách thiết kế các dịch vụ cloud
  • Lập kế hoạch và thiết kế
  • Giám sát
  • Quen thuộc với:
  • Best practices
  • Phát triển Client Specifications gồm pricing/cost (e.g. on Demand vs. Reserved vs. Spot, RTO and RPO DR Design)
  • Các quyết định kiến trúc (high availability vs. cost, Amazon Relational Databas Service (RDS) vs. cài đặt CSDL của riêng bạn trên Amazon Elastic Compute Cloud (EC2)).
  • Tích hợp với các môi trường phát triển hiện có và xây dựng kiến trúc có khả năng mở rộng.
  • Elasticity và scalability.

2.     Domain 2.0: Implementation/Deployment

2.1   Xác định các kỹ thuật và phương pháp thích hợp dùng Amazon EC2, Amazon S3, Elastic Beanstalk, CloudFormation, Amazon Virtual Private Cloud (VPC), và AWS Identity and Access Management (IAM) để viết mã và cài đặt 1 giải pháp cloud.

Nội dung bao gồm:

  • Cấu hình Amazon Machine Image (AMI)
  • Vận hành và mở rộng dịch vụ quản lý trong private cloud
  • Cấu hình hợp lý trong private và public cloud
  • Khởi chạy các instances trong nhiều geographical regions.

3.     Domain 3.0: Data Security

3.1   Nhận diện và cài đặt các thủ tục bảo vệ cho việc triển khai và duy trì cloud được tối ưu

Nội dung bao gồm:

  • Cloud Security Best Practices
    • Cách xây dựng và dùng threat model
    • Cách xây dựng và dùng data flow diagram để quản lý rủi ro (risk management)
      • Use cases
      • Abuse Cases (Negative use cases)
  • Security Architecture with AWS
    • Shared Security Responsibility Model
    • AWS Platform Compliance
    • AWS security attributes (customer workloads down to physical layer)
    • Security Services
    • AWS Identity and Access Management (IAM)
    • Amazon Virtual Private Cloud (VPC)
    • CIA và AAA models, ingress vs. egress filtering, and which AWS services and features fit
    • "Core" Amazon EC2 and S3 security feature sets
    • Incorporating common conventional security products (Firewall, IDS:HIDS/NIDS, SIEM, VPN)
    • Design Pattern
    • DDOS mitigation
    • Encryption solutions
    • Complex access controls (building sophisticated security groups, ACLs, etc.)
    • Amazon CloudWatch for the security architect

3.2   Nhận diện các kỹ thuật khắc phục thảm họa nguy hiểm và cách cài đặt chúng

Nội dung bao gồm:

  • Disaster Recovery
    • Recovery time objective
    • Recovery point objective
    • Amazon Elastic Block Store
  • AWS Import/Export
  • AWS Storage Gateway
  • Amazon Route53
  • Testing the recovered data

4.     Domain 4.0: Troubleshooting

Nội dung bao gồm:

  • Xử lý sự cố về các thông tin và câu hỏi nói chung