Amazon EC2示例(1)

原文鏈接:《AWS SDK for Java(Developer Guide)》


譯文部分↓↓↓


這部分提供了使用Java的AWS開發工具包對Amazon EC2進行編程的示例。

Topics:

·教程:啓動EC2實例

·使用IAM角色授予對Amazon EC2上的資源的訪問權

·教程:Amazon EC2競價型實例

·教程:高級Amazon EC2競價請求管理

·管理Amazon EC2實例

·在Amazon EC2中使用彈性IP地址

·使用地域和可用區域

·使用Amazon EC2的密鑰對

·在Amazon EC2中使用安全組


教程:啓動EC2實例

本教程演示如何利用SDK編程來啓動EC2實例。

在開始之前,請確保已經創建AWS賬戶並設置AWS憑證。


創建Amazon EC2安全組

創建一個安全組,作爲虛擬防火牆來控制一個或多個EC2實例。默認情況下,Amazon EC2將您的實例與不允許入站流量(inbound traffic)的安全組關聯。您可以創建允許EC2實例接收特定流量的安全組。例如,如果需要連接到Linux實例,就必須將安全組配置爲允許SSH流量。可以通過Amazon EC2控制檯或者Java的AWS SDK來創建安全組。


您可以創建在EC2-Classic或者EC2-VPC中使用的安全組。更多信息請參閱支持的平臺(在Amazon EC2用戶指南(用於Linux實例)中)。


更多關於使用Amazon EC2控制檯創建安全組的信息,請參閱Amazon EC2安全組(在Amazon EC2用戶指南(用於Linux實例)中)。


創建安全組

1.創建並初始化CreateSecurityGroupRequest實例。使用withGroupName方法設置安全組名稱,使用withDescription方法設置安全組的描述,如下所示:
CreateSecurityGroupRequest csgr = new CreateSecurityGroupRequest();
csgr.withGroupName("JavaSecurityGroup").withDescription("My security group");

在初始化Amazon EC2客戶端時,必須確保安全組名稱在您的AWS區域是唯一的。安全組名稱和描述需要使用US-ASCII字符。


2.將請求對象(request object)作爲參數傳遞給createSecurityGroup方法。該方法返回一個CreateSecurityResult對象,如下所示:
CreateSecurityGroupResult createSecurityGroupResult = amazonEC2Client.createSecurityGroup(csgr);

如果您創建的安全組與已存在的安全組重名,createSecurityGroup會拋出異常。


默認情況下,新安全組不允許Amazon EC2實例的任何入站流量。要允許入站流量,必須對安全組傳入明確授權。您可以對單個IP地址、系列IP地址、特定協議以及TCP/UDP端口的傳入進行授權。


對安全組傳入進行授權

1.創建並初始化IpPermission實例。使用withIpv4Ranges方法設置傳入授權的IP地址範圍,withIpProtocol方法設置IP協議。使用withFromPortwithToPort方法可以指定授權傳入的端口範圍。如下所示:

IpPermission ipPermission = new IpPermission();
IpRange ipRange1 = new IpRange().withCidrIp("111.111.111.111/32");
IpRange ipRange2 = new IpRange().withCidrIp("150.150.150.150/32");
ipPermission.withIpv4Ranges(Arrays.asList(new IpRange[] {ipRange1, ipRange2}))
 .withIpProtocol("tcp")
 .withFromPort(22)
 .withToPort(22);

必須滿足IpPermission對象指定的所有條件,才能允許傳入。

使用CIDR表示法指定IP地址。如果指定TCP/UDP協議,必須提供源端口和目標端口。只有當指定TCP或UDP時才能授權端口。


2.創建並初始化一個AuthorizeSecurityGroupIngressRequest實例。使用withGroupName方法指定安全組名稱,並將之前初始化的IpPermission對象傳給withIpPermission方法,如下所示:

AuthorizeSecurityGroupIngressRequest authorizeSecurityGroupIngressRequest =
 new AuthorizeSecurityGroupIngressRequest();
authorizeSecurityGroupIngressRequest.withGroupName("JavaSecurityGroup")
 .withIpPermissions(ipPermission);


3.將請求對象傳遞給authorizeSecurityGroupIngress方法,如下所示:

amazonEC2Client.authorizeSecurityGroupIngress(authorizeSecurityGroupIngressRequest);

如果使用已授權傳入的IP地址調用authorizeSecurityGroupIngress,該方法會拋出異常。在調用AuthorizeSecurityGroupIngress之前,創建並初始化新的IpPermission對象,對不同的IP、端口和協議進行傳入授權。


創建密鑰對

啓動EC2時必須指定密鑰對,然後在連接實例時指定密鑰對的私有密鑰。您可以創建密鑰對,也可以使用在啓動其他實例時使用的現有的密鑰對。更多信息,請參閱Amazon EC2密鑰對在Amazon EC2用戶指南(用於Linux實例)中)。

創建密鑰對和保存私有密鑰

1.創建並初始化CreateKeyPairRequest實例。使用withKeyName方法設置密鑰對名稱,如下所示:

CreateKeyPairRequest createKeyPairRequest = new CreateKeyPairRequest();
createKeyPairRequest.withKeyName(keyName);

·提示

密鑰對名稱必須唯一。如果嘗試創建的密鑰對與現有密鑰對相同,將會引發異常。


2.向createKeyPair方法傳遞請求對象。該方法將返回一個CreateKeyPairResult實例。如下所示:

CreateKeyPairResult createKeyPairResult = amazonEC2Client.createKeyPair(createKeyPairRequest);


3.調用結果對象的getKeyPair方法來獲得KeyPair對象。調用KeyPair對象的getKeyMaterial方法,以獲取未加密的PEM編碼私有密鑰,如下所示:

KeyPair keyPair = new KeyPair();
keyPair = createKeyPairResult.getKeyPair();
String privateKey = keyPair.getKeyMaterial();


運行Amazon EC2實例

使用以下過程從同一個系統映像(AMI)啓動一個或多個具有相同配置的EC2實例。在創建EC2實例後,可以檢查其狀態。在您的EC2實例運行後,可以連接到它們。

啓動EC2實例

1.創建並初始化RunInstanceRequest實例。確保您指定的AMI、密鑰對以及安全組在您創建客戶端對象時指定的區域中存在。

RunInstancesRequest runInstancesRequest = new RunInstancesRequest();
runInstancesRequest.withImageId("ami-4b814f22")
 .withInstanceType("m1.small")
 .withMinCount(1)
 .withMaxCount(1)
 .withKeyName("my-key-pair")
 .withSecurityGroups("my-security-group");

說明:

·withImageId

 AMI的ID。有關Amazon提供的公用AMI列表,請參閱Amazon系統映像(Amazon Machine Images)。

·withInstanceType

 與指定的AMI兼容的實例類型。更多信息,請參閱實例類型在Amazon EC2用戶指南(用於Linux實例)中)。

·withMinCount

 待啓動的EC2實例的最小數量。如果此數量大於目標可用區中可以啓動的實例數,則EC2不會啓動任何實例。

·withMaxCount

 待啓動的EC2實例的最大數量。如果此數量大於目標可用區中可以啓動的實例數,則EC2會啓動MinCount之上最大數量的實例。您可以啓動的實例數介於1和您允許爲該實例類型啓動的最大實例數之間。更多信息,請參閱Amazon EC2常見問題的“我可以在Amazon EC2中運行多少實例”。

·withKeyName

 EC2密鑰對的名稱。如果在未指定密鑰對的情況下啓動實例,將無法連接到該實例。更多信息,請參閱創建密鑰對(上一小節)。

·withSecurityGroups

 一個或多個安全組。更多信息,請參考創建Amazon EC2安全組(第一小節)。


2.通過將請求對象傳遞給runInstances方法來啓動實例。該方法返回一個RunInstancesResult對象,如下所示:

RunInstancesResult result = amazonEC2Client.runInstances(runInstancesRequest);

在實例運行後,可以使用密鑰對進行連接。更多信息,請參閱連接Linux實例(在Amazon EC2用戶指南(用於Linux實例)中)。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章