15
ĐẠI HC BÁCH KHOA HÀ NI VIN CÔNG NGHTHÔNG TIN VÀ TRUYN THÔNG LP HTTT-2014B MÔN ĐIỆN TOÁN ĐÁM MÂY TIU LUN TÌM HIU VAMAZON EC2 API Hc viên thc hin: Nguyn Quý Dương Mã hc viên: CB140133 Giảng viên hướng dn : TS.Nguyn Bình Minh Hà Ni, tháng 04/2015

Essay amazon ec2 api

Embed Size (px)

Citation preview

Page 1: Essay amazon ec2 api

ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

LỚP HTTT-2014B

MÔN ĐIỆN TOÁN ĐÁM MÂY

TIỂU LUẬN

TÌM HIỂU VỀ AMAZON EC2 API

Học viên thực hiện: Nguyễn Quý Dương

Mã học viên: CB140133

Giảng viên hướng dẫn : TS.Nguyễn Bình Minh

Hà Nội, tháng 04/2015

Page 2: Essay amazon ec2 api

1. Giới thiệu về Amazon EC2

Amazon EC2 (viết tắt của từ Elastic Compute Cloud) là một dịch vụ web cung cấp máy chủ ảo thông qua hình thức điện toán đám mây (cloud computing).

Điểm nổi bật của Amazon EC2 là khả năng "co giãn" (elastic) của tài nguyên hệ

thống. Nói cho dễ hiểu tức là mình có thể điều chỉnh cấu hình của máy chủ trên thời gian thực tùy theo nhu cầu sử dụng. Điều này khiến cho việc scaling hết

sức dễ dàng tiện lợi. Ngoài ra, Amazon còn tối thiểu hóa chi phí thuê máy chủ cho người thuê bằng hình thức thu phí theo nhu cầu sử dụng, cụ thể là chỉ khi

nào sử dụng máy chủ mới tính tiền. Một điểm khác cũng nên nói đến đó là máy chủ của Amazon EC2 chạy trên cơ sở hạ tầng mà ngay chính Amazon đang sử

dụng nên độ tin cậy rất cao.

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

Môi trường tính toán ảo hóa, được biết như instances

Các mâu được định nghia 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 se lưu private key ở nơi an toàn)

Lưu trư dư liệu tạm thời, se 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 ly ở nhiều vị trí, được biết như regions và Availability

Zones

Firewall cho phep chỉ định protocols, ports, và source IP ranges được

phep 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 chon kết nối đến mạng của riêng mình, được biết như

virtual private clouds (VPCs)

Page 3: Essay amazon ec2 api

2. Amazon EC2 API là gì

Amazon EC2 API là bộ danh sách các hàm cho phép nhà phát triển có thể

tương tác với Amazon EC2 hoăc máy chủ Amazon Virtual Private Cloud

(Amazon VPC).

Để sử dụng EC2 API ta có một số công cụ như sau:

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 goi 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ì goi 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ự hoc, 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.

Để có thể sử dụng được các API với EC2 cần có kiến thức về

XML

Web services

HTTP Request

do đây chính là cách thức để goi các hàm hay kiểu dư liệu se trả về sau lời

goi.

Các công cụ sử dụng EC2 API

Amazon API Tool

Là công cụ trên client cho phép sử dụng các hàm API để tác động tới

EC2 qua webservice. Các công cụ này được sử dụng để đăng ky, thao tác

bảo mật, khởi động ứng dụng …

Query Requests

Là các truy vấn qua HTTP hoăc HTTPS thông qua việc sử dụng phương

thức GET hoăc POST và một danh sách các tham số đi kèm.

Amazon Command Line Interface tool

Page 4: Essay amazon ec2 api

Các công cụ giao diện dòng lệnh Amazon EC2 (còn goi là các công cụ

CLI) bao gôm tất cả các hàm EC2 API. Nhưng công cụ này được viết bằng

Java và bao gôm các kịch bản shell cho cả Windows và Linux / Unix / Mac

OSX

3. Tìm hiểu về các API trong Amazon EC2 API

Cấu trúc của một API trong EC2 gôm các thành phần đáng chú y như

sau:

Lời goi hàm (tên hàm): Tương ứng với các thao tác mà người sử dụng

muốn tác động hoăc lấy thông tin trả về từ EC2

Parameters: Danh sách các đối số của lời goi hàm. Để thực hiện một API

cần cung cấp cho nó các tham số đầu vào.

Response Elements: Các đối tượng trả về khi thực hiện một hàm. Thường

được đóng gói trong một file XML

Errors: Khi lời goi hàm không thực hiện được hoăc phát sinh ra lôi thì nó

trả về mã lôi.

Ví dụ về API:

Hàm AllocateAddress

Mô tả:

Được sử dụng để thiết lập một địa chỉ IP cho EC2 hoặc VPC

Các tham số truyền vào: Domain

Địa chỉ được thiết lập tới VPC

Kiểu dữ liệu: String

Dư liệu trả về

Dữ liệu trả về là một cấu trúc gồm nhiều thực thể có tên là

AllocateAddressResponse. Dạng XML và nó bao gồm các thành phần sau:

requestId

The ID of the request.

Type: xsd:string

publicIp

The Elastic IP address.

Type: xsd:string

domain

Indicates whether this Elastic IP address is for use with instances in EC2-Classic

(standard) or instances in a VPC (vpc).

Type: xsd:string

Page 5: Essay amazon ec2 api

Valid values: standard | vpc

allocationId

[EC2-VPC] The ID that AWS assigns to represent the allocation of the Elastic IP

address for use with

a VPC.

Type: xsd:string

Các lôi có thể xây ra

Mã lỗi khi trả về có thể tra trong bảng danh sách lỗi của EC2 API. Một

trong những lỗi thường gặp là AddressLimitExceeded

Ví dụ ta có lời goi hàm như sau: https://ec2.amazonaws.com/?Action=AllocateAddress

&AUTHPARAMS

Lời goi trên yêu cầu một địa chỉ IP để sử dụng cho instances trong EC2

Dư liệu trả về: <AllocateAddressResponse xmlns="http://ec2.amazonaws.com/doc/2014-10-01/">

<requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>

<publicIp>192.0.2.1</publicIp>

<domain>standard</domain>

</AllocateAddressResponse>

Danh sách các API được liệt kê trong phần phụ lục hoăc tham khảo trong tài

liệu eBook của Amazon EC2 API.

4. Cài đặt và tìm hiểu về các API cho nhà phát triển

Amazon cung cấp công cụ giúp cho nhà phát triển, các lập trình viên sử

dụng công cụ lập trình để goi các hàm API từ các ngôn ngư lập trình.

Trên môi trường Windows ta sử dụng bộ SDKs For .Net

Sau khi tải bộ SDK từ http://aws.amazon.com/sdkfornet ta tiến hành cài

đăt như sau:

Bước 1: Nháy đúp vào bộ setup đã tải về để tiến hành cài đăt

Page 6: Essay amazon ec2 api

Bước 2:

Page 7: Essay amazon ec2 api

Bước 3: Lựa chon các tùy chon và hoàn tất quá trình cài đăt

Sau khi cài đăt ta có thể dụng Visual Studio tạo một dự án và sử dụng bộ

SDK để lập trình tương tác với các ứng dụng AWS và EC2

Để sử dụng VS mở một project với EC2 ta thực hiện như sau:

Vào menu view chon AWS Explorer

Page 8: Essay amazon ec2 api

Nhập các thông số cấu hình để kết nối tới AWS

Sau khi kết nối thông số se hiển thị trong VS với thông tin như sau:

Page 9: Essay amazon ec2 api

Ngoài SDK kể trên thì một công cụ phổ phiến được sử dụng để thao tác

trên Windows là công cụ CLI tools (Command Line Interface tools). Bộ

công cụ này được viết bằng Java và cần cài môi trường Java để sử dụng.

5. Tài liệu tham khảo

[1] http://aws.amazon.com/developertools/Amazon-EC2/351 Amazon API

Tool

[2] Ebook: Amazon Elastic Compute Cloud API Reference

Page 10: Essay amazon ec2 api

Phụ lục: Danh sách các hàm trong ebook của Amazon (phiên bản

1/10/2014)

Account Attributes

• DescribeAccountAttributes (p. 181)

Amazon DevPay

• ConfirmProductInstance (p. 57)

AMIs

• CopyImage (p. 59)

• CreateImage (p. 69)

• DeregisterImage (p. 179)

• DescribeImageAttribute (p. 206)

• DescribeImages (p. 209)

• ModifyImageAttribute (p. 393)

• RegisterImage (p. 423)

• ResetImageAttribute (p. 453)

Bundle Tasks

• BundleInstance (p. 42)

• CancelBundleTask (p. 45)

• DescribeBundleTasks (p. 191)

Customer Gateways (Amazon VPC)

• CreateCustomerGateway (p. 64)

• DeleteCustomerGateway (p. 138)

• DescribeCustomerGateways (p. 196)

Amazon Elastic Compute Cloud API Reference

DHCP Options (Amazon VPC)

• AssociateDhcpOptions (p. 22)

• CreateDhcpOptions (p. 66)

• DeleteDhcpOptions (p. 140)

• DescribeDhcpOptions (p. 200)

Elastic Block Store

• AttachVolume (p. 30)

• CopySnapshot (p. 61)

• CreateSnapshot (p. 110)

• CreateVolume (p. 121)

• DeleteSnapshot (p. 160)

Page 11: Essay amazon ec2 api

• DeleteVolume (p. 168)

• DescribeSnapshotAttribute (p. 297)

• DescribeSnapshots (p. 300)

• DescribeVolumeAttribute (p. 329)

• DescribeVolumes (p. 331)

• DescribeVolumeStatus (p. 337)

• DetachVolume (p. 364)

• EnableVolumeIO (p. 377)

• ModifySnapshotAttribute (p. 405)

• ModifyVolumeAttribute (p. 409)

• ResetSnapshotAttribute (p. 459)

Elastic IP Addresses

• AllocateAddress (p. 13)

• AssociateAddress (p. 19)

• DescribeAddresses (p. 184)

• DisassociateAddress (p. 371)

• ReleaseAddress (p. 430)

Elastic Network Interfaces (Amazon VPC)

• AssignPrivateIpAddresses (p. 16)

• AttachNetworkInterface (p. 28)

• CreateNetworkInterface (p. 86)

• DeleteNetworkInterface (p. 150)

• DescribeNetworkInterfaceAttribute (p. 252)

• DescribeNetworkInterfaces (p. 254)

Amazon Elastic Compute Cloud API Reference

• DetachNetworkInterface (p. 362)

• ModifyNetworkInterfaceAttribute (p. 400)

• ResetNetworkInterfaceAttribute (p. 457)

• UnassignPrivateIpAddresses (p. 483)

Instances

• DescribeInstanceAttribute (p. 217)

• DescribeInstances (p. 221)

• DescribeInstanceStatus (p. 233)

• GetConsoleOutput (p. 379)

• GetPasswordData (p. 381)

• ModifyInstanceAttribute (p. 396)

Page 12: Essay amazon ec2 api

• MonitorInstances (p. 413)

• RebootInstances (p. 421)

• ReportInstanceStatus (p. 442)

• ResetInstanceAttribute (p. 455)

• RunInstances (p. 467)

• StartInstances (p. 477)

• StopInstances (p. 479)

• TerminateInstances (p. 481)

• UnmonitorInstances (p. 485)

Internet Gateways (Amazon VPC)

• AttachInternetGateway (p. 26)

• CreateInternetGateway (p. 76)

• DeleteInternetGateway (p. 142)

• DescribeInternetGateways (p. 240)

• DetachInternetGateway (p. 360)

Key Pairs

• CreateKeyPair (p. 78)

• DeleteKeyPair (p. 144)

• DescribeKeyPairs (p. 243)

• ImportKeyPair (p. 387)

Network ACLs (Amazon VPC)

• CreateNetworkAcl (p. 81)

• CreateNetworkAclEntry (p. 83)

Amazon Elastic Compute Cloud API Reference

• DeleteNetworkAcl (p. 146)

• DeleteNetworkAclEntry (p. 148)

• DescribeNetworkAcls (p. 246)

• ReplaceNetworkAclAssociation (p. 432)

• ReplaceNetworkAclEntry (p. 434)

Placement Groups

• CreatePlacementGroup (p. 91)

• DeletePlacementGroup (p. 152)

• DescribePlacementGroups (p. 260)

Regions and Availability Zones

• DescribeAvailabilityZones (p. 188)

• DescribeRegions (p. 263)

Page 13: Essay amazon ec2 api

Reserved Instances

• CancelReservedInstancesListing (p. 51)

• CreateReservedInstancesListing (p. 93)

• DescribeReservedInstances (p. 266)

• DescribeReservedInstancesListings (p. 270)

• DescribeReservedInstancesModifications (p. 274)

• DescribeReservedInstancesOfferings (p. 278)

• ModifyReservedInstances (p. 403)

• PurchaseReservedInstancesOffering (p. 415)

Route Tables (Amazon VPC)

• AssociateRouteTable (p. 24)

• CreateRoute (p. 102)

• CreateRouteTable (p. 105)

• DeleteRoute (p. 154)

• DeleteRouteTable (p. 156)

• DescribeRouteTables (p. 287)

• DisableVgwRoutePropagation (p. 369)

• DisassociateRouteTable (p. 373)

• EnableVgwRoutePropagation (p. 375)

• ReplaceRoute (p. 437)

• ReplaceRouteTableAssociation (p. 440)

Amazon Elastic Compute Cloud API Reference

Security Groups

• AuthorizeSecurityGroupEgress (p. 35) (EC2-VPC only)

• AuthorizeSecurityGroupIngress (p. 38)

• CreateSecurityGroup (p. 107)

• DeleteSecurityGroup (p. 158)

• DescribeSecurityGroups (p. 292)

• RevokeSecurityGroupEgress (p. 461) (EC2-VPC only)

• RevokeSecurityGroupIngress (p. 464)

Spot Instances

• CancelSpotInstanceRequests (p. 54)

• CreateSpotDatafeedSubscription (p. 113)

• DeleteSpotDatafeedSubscription (p. 162)

• DescribeSpotDatafeedSubscription (p. 305)

• DescribeSpotInstanceRequests (p. 307)

Page 14: Essay amazon ec2 api

• DescribeSpotPriceHistory (p. 315)

• RequestSpotInstances (p. 445)

Subnets (Amazon VPC)

• CreateSubnet (p. 115)

• DeleteSubnet (p. 163)

• DescribeSubnets (p. 319)

• ModifySubnetAttribute (p. 407)

Tags

• CreateTags (p. 118)

• DeleteTags (p. 165)

• DescribeTags (p. 323)

VM Import

• CancelConversionTask (p. 47)

• DescribeConversionTasks (p. 194)

• ImportInstance (p. 383)

• ImportVolume (p. 390)

VM Export

• CancelExportTask (p. 49)

• CreateInstanceExportTask (p. 73)

Amazon Elastic Compute Cloud API Reference

• DescribeExportTasks (p. 204)

VPCs (Amazon VPC)

• CreateVpc (p. 126)

• DeleteVpc (p. 170)

• DescribeVpcAttribute (p. 342)

• DescribeVpcs (p. 348)

• ModifyVpcAttribute (p. 411)

VPC Peering Connections (Amazon VPC)

• AcceptVpcPeeringConnection (p. 12)

• CreateVpcPeeringConnection (p. 128)

• DeleteVpcPeeringConnection (p. 171)

• DescribeVpcPeeringConnections (p. 344)

• RejectVpcPeeringConnection (p. 428)

VPN Connections (Amazon VPC)

• CreateVpnConnection (p. 131)

• CreateVpnConnectionRoute (p. 134)

Page 15: Essay amazon ec2 api

• DeleteVpnConnection (p. 173)

• DeleteVpnConnectionRoute (p. 175)

• DescribeVpnConnections (p. 352)

Virtual Private Gateways (Amazon VPC)

• AttachVpnGateway (p. 33)

• CreateVpnGateway (p. 136)

• DeleteVpnGateway (p. 177)

• DescribeVpnGateways (p. 356)

• DetachVpnGateway (p. 367)