

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 AWS CLI 中使用 Amazon EC2
<a name="cli-services-ec2"></a>


| Amazon Elastic Compute Cloud 簡介 | 
| --- | 
|  [![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/TsRBftzZsQo/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/TsRBftzZsQo)  | 

Amazon Elastic Compute Cloud (Amazon EC2) 提供高度可擴展且靈活的虛擬運算環境。Amazon EC2 可讓您佈建和管理稱為 Amazon EC2 執行個體的虛擬伺服器，以滿足各種運算需求。

Amazon EC2 執行個體是虛擬機器，可透過 CPU、記憶體、儲存和聯網功能的各種組態進行自訂。從輕量型、具成本效益的選項，到功能強大的高效能執行個體，您可以選擇各種執行個體類型，視您的應用程式需求而定。此彈性可讓您符合運算需求，以最佳化效能和成本效益。

此外，Amazon EC2 提供一組功能，讓您能夠有效管理運算資源。這些功能包括快速啟動新執行個體、建立自訂機器映像 (AMI) 以進行快速部署，及視需要擴展或縮減運算容量。

您可以使用 AWS Command Line Interface (AWS CLI) 來存取 Amazon EC2 的功能。若要列出 Amazon EC2 的 AWS CLI 命令，請使用下列命令。

```
aws ec2 help
```

在執行任何命令前，請先設定您的預設憑證。如需詳細資訊，請參閱 [設定 AWS CLI 的設定。](cli-chap-configure.md)。

本主題顯示執行 Amazon EC2 常見任務的 AWS CLI 命令短期範例。

對於長格式的 AWS CLI 命令範例，請參閱 *GitHub* 上的[AWS CLI 程式碼範例儲存庫](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/aws-cli)。

**Topics**
+ [在 中建立、顯示和刪除 Amazon EC2 金鑰對 AWS CLI](cli-services-ec2-keypairs.md)
+ [在 中建立、設定和刪除 Amazon EC2 安全群組 AWS CLI](cli-services-ec2-sg.md)
+ [在 中啟動、列出和刪除 Amazon EC2 執行個體 AWS CLI](cli-services-ec2-instances.md)
+ [在 中使用 bash 指令碼變更 Amazon EC2 執行個體類型 AWS CLI](cli-services-ec2-instance-type-script.md)

# 在 中建立、顯示和刪除 Amazon EC2 金鑰對 AWS CLI
<a name="cli-services-ec2-keypairs"></a>

您可以使用 AWS Command Line Interface (AWS CLI) 來建立、顯示和刪除 Amazon Elastic Compute Cloud (Amazon EC2) 的金鑰對。使用金鑰對來連線到 Amazon EC2 執行個體。您可以在建立執行個體時提供金鑰對給 Amazon EC2，然後在連線到執行個體時使用該金鑰對來驗證。

**注意**  
如需其他命令範例，請參閱 [AWS CLI 。](https://docs.aws.amazon.com/cli/latest/reference/index.html)

**Topics**
+ [先決條件](#cli-services-ec2-keypairs-prereqs)
+ [建立金鑰對](#creating-a-key-pair)
+ [顯示您的金鑰對](#displaying-a-key-pair)
+ [刪除您的金鑰對](#deleting-a-key-pair)
+ [參考](#cli-services-ec2-keypairs-references)

## 先決條件
<a name="cli-services-ec2-keypairs-prereqs"></a>

若要執行 `ec2` 命令，您需要：
+ 安裝及設定 AWS CLI。如需詳細資訊，請參閱[安裝或更新至最新版本的 AWS CLI](getting-started-install.md)及[的身分驗證和存取憑證 AWS CLI](cli-chap-authentication.md)。
+ 設定 IAM 許可，以允許 Amazon EC2 存取。如需有關 Amazon EC2 IAM 許可的詳細資訊，請參閱《Amazon EC2 使用者指南》**中的 [Amazon EC2 IAM 政策](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html)。

## 建立金鑰對
<a name="creating-a-key-pair"></a>

若要建立金鑰對，請使用 `[aws ec2 create-key-pair](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-key-pair.html)` 命令搭配 `--query` 選項和 `--output text` 選項，將您的私有金鑰直接輸送到檔案中。

```
$ aws ec2 create-key-pair --key-name MyKeyPair --query 'KeyMaterial' --output text > MyKeyPair.pem
```

對於 PowerShell，`> file` 重新導向預設為 UTF-8 編碼，不適用於某些 SSH 用戶端。因此，您必須將輸出輸送到 `out-file` 命令並明確設定編碼為 `ascii`，以轉換輸出。

```
PS C:\>aws ec2 create-key-pair --key-name MyKeyPair --query 'KeyMaterial' --output text | out-file -encoding ascii -filepath MyKeyPair.pem
```

產生的 `MyKeyPair.pem` 檔案看起來類似下列。

```
-----BEGIN RSA PRIVATE KEY-----
EXAMPLEKEYKCAQEAy7WZhaDsrA1W3mRlQtvhwyORRX8gnxgDAfRt/gx42kWXsT4rXE/b5CpSgie/
vBoU7jLxx92pNHoFnByP+Dc21eyyz6CvjTmWA0JwfWiW5/akH7iO5dSrvC7dQkW2duV5QuUdE0QW
Z/aNxMniGQE6XAgfwlnXVBwrerrQo+ZWQeqiUwwMkuEbLeJFLhMCvYURpUMSC1oehm449ilx9X1F
G50TCFeOzfl8dqqCP6GzbPaIjiU19xX/azOR9V+tpUOzEL+wmXnZt3/nHPQ5xvD2OJH67km6SuPW
oPzev/D8V+x4+bHthfSjR9Y7DvQFjfBVwHXigBdtZcU2/wei8D/HYwIDAQABAoIBAGZ1kaEvnrqu
/uler7vgIn5m7lN5LKw4hJLAIW6tUT/fzvtcHK0SkbQCQXuriHmQ2MQyJX/0kn2NfjLV/ufGxbL1
mb5qwMGUnEpJaZD6QSSs3kICLwWUYUiGfc0uiSbmJoap/GTLU0W5Mfcv36PaBUNy5p53V6G7hXb2
bahyWyJNfjLe4M86yd2YK3V2CmK+X/BOsShnJ36+hjrXPPWmV3N9zEmCdJjA+K15DYmhm/tJWSD9
81oGk9TopEp7CkIfatEATyyZiVqoRq6k64iuM9JkA3OzdXzMQexXVJ1TLZVEH0E7bhlY9d8O1ozR
oQs/FiZNAx2iijCWyv0lpjE73+kCgYEA9mZtyhkHkFDpwrSM1APaL8oNAbbjwEy7Z5Mqfql+lIp1
YkriL0DbLXlvRAH+yHPRit2hHOjtUNZh4Axv+cpg09qbUI3+43eEy24B7G/Uh+GTfbjsXsOxQx/x
p9otyVwc7hsQ5TA5PZb+mvkJ5OBEKzet9XcKwONBYELGhnEPe7cCgYEA06Vgov6YHleHui9kHuws
ayav0elc5zkxjF9nfHFJRry21R1trw2Vdpn+9g481URrpzWVOEihvm+xTtmaZlSp//lkq75XDwnU
WA8gkn6O3QE3fq2yN98BURsAKdJfJ5RL1HvGQvTe10HLYYXpJnEkHv+Unl2ajLivWUt5pbBrKbUC
gYBjbO+OZk0sCcpZ29sbzjYjpIddErySIyRX5gV2uNQwAjLdp9PfN295yQ+BxMBXiIycWVQiw0bH
oMo7yykABY7Ozd5wQewBQ4AdSlWSX4nGDtsiFxWiI5sKuAAeOCbTosy1s8w8fxoJ5Tz1sdoxNeGs
Arq6Wv/G16zQuAE9zK9vvwKBgF+09VI/1wJBirsDGz9whVWfFPrTkJNvJZzYt69qezxlsjgFKshy
WBhd4xHZtmCqpBPlAymEjr/TOlbxyARmXMnIOWIAnNXMGB4KGSyl1mzSVAoQ+fqR+cJ3d0dyPl1j
jjb0Ed/NY8frlNDxAVHE8BSkdsx2f6ELEyBKJSRr9snRAoGAMrTwYneXzvTskF/S5Fyu0iOegLDa
NWUH38v/nDCgEpIXD5Hn3qAEcju1IjmbwlvtW+nY2jVhv7UGd8MjwUTNGItdb6nsYqM2asrnF3qS
VRkAKKKYeGjkpUfVTrW0YFjXkfcrR/V+QFL5OndHAKJXjW7a4ejJLncTzmZSpYzwApc=
-----END RSA PRIVATE KEY-----
```

您的私有金鑰不會存放在 中，***而且只能在***建立時 AWS 擷取。您稍後無法進行復原。如果您遺失私有金鑰，則必須建立新的金鑰對。

如果您是從 Linux 電腦連接到執行個體，建議您使用下列命令來設定私有金鑰檔案的許可，即可確保只有您能夠讀取該檔案。

```
$ chmod 400 MyKeyPair.pem
```

## 顯示您的金鑰對
<a name="displaying-a-key-pair"></a>

「指紋」是由您的金鑰對產生，您可以將其用於驗證本機擁有的私有金鑰與儲存在 AWS的公有金鑰相符。

指紋為取自私有金鑰的 DER 編碼副本的 SHA1 雜湊。此值會在建立金鑰對時擷取，並使用公 AWS 有金鑰存放在 中。您可以在 Amazon EC2 主控台或執行 AWS CLI 命令 來檢視指紋`[aws ec2 describe-key-pairs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html)`。

以下範例顯示 `MyKeyPair` 的指紋。

```
$ aws ec2 describe-key-pairs --key-name MyKeyPair
{
    "KeyPairs": [
        {
            "KeyName": "MyKeyPair",
            "KeyFingerprint": "1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f"
        }
    ]
}
```

如需有關存取金鑰和指紋的詳細資訊，請參閱《Amazon EC2 使用者指南》**中的 [Amazon EC2 金鑰對](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)。

## 刪除您的金鑰對
<a name="deleting-a-key-pair"></a>

若要刪除金鑰對，請執行 `[aws ec2 delete-key-pair](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-key-pair.html)` 命令，以您要刪除的金鑰對名稱來取代 *`MyKeyPair`*。

```
$ aws ec2 delete-key-pair --key-name MyKeyPair
```

## 參考
<a name="cli-services-ec2-keypairs-references"></a>

**AWS CLI 參考：**
+ `[aws ec2](https://docs.aws.amazon.com/cli/latest/reference/ec2/index.html)`
+ `[aws ec2 create-key-pair](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-key-pair.html)`
+ `[aws ec2 delete-key-pair](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-key-pair.html)`
+ `[aws ec2 describe-key-pairs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html)`

**其他參考：**
+ [Amazon Elastic Compute Cloud 文件](https://docs.aws.amazon.com/ec2/)
+ 若要檢視和貢獻 AWS SDK 和 AWS CLI 程式碼範例，請參閱 *GitHub* 上的[AWS 程式碼範例儲存庫](https://github.com/awsdocs/aws-doc-sdk-examples/)。

# 在 中建立、設定和刪除 Amazon EC2 安全群組 AWS CLI
<a name="cli-services-ec2-sg"></a>

您可以為您的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體建立基本上作為防火牆執行的安全群組，並使用規則來判斷哪些網路流量可以進入和離開。

使用 AWS Command Line Interface (AWS CLI) 建立安全群組、將規則新增至現有安全群組，以及刪除安全群組。

**注意**  
如需其他命令範例，請參閱[AWS CLI 參考指南](https://docs.aws.amazon.com/cli/latest/reference/index.html)。

**Topics**
+ [先決條件](#cli-services-ec2-sg-prereqs)
+ [建立安全群組](#creating-a-security-group)
+ [新增規則至安全群組](#configuring-a-security-group)
+ [刪除您的安全群組](#deleting-a-security-group)
+ [參考](#cli-services-ec2-sg-references)

## 先決條件
<a name="cli-services-ec2-sg-prereqs"></a>

若要執行 `ec2` 命令，您需要：
+ 安裝及設定 AWS CLI。如需詳細資訊，請參閱[安裝或更新至最新版本的 AWS CLI](getting-started-install.md)及[的身分驗證和存取憑證 AWS CLI](cli-chap-authentication.md)。
+ 設定 IAM 許可，以允許 Amazon EC2 存取。如需有關 Amazon EC2 IAM 許可的詳細資訊，請參閱《Amazon EC2 使用者指南》**中的 [Amazon EC2 IAM 政策](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html)。

## 建立安全群組
<a name="creating-a-security-group"></a>

您可以建立與虛擬私有雲端 (VPC) 相關聯的安全性群組。

下列 `[aws ec2 create-security-group](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-security-group.html)` 範例顯示如何為指定的 VPC 建立安全群組。

```
$ aws ec2 create-security-group --group-name my-sg --description "My security group" --vpc-id vpc-1a2b3c4d
{
    "GroupId": "sg-903004f8"
}
```

若要檢視安全群組的初始資訊，請執行 `[aws ec2 describe-security-groups](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-security-groups.html)` 命令。您只能依 `vpc-id` 參考 EC2-VPC 安全群組，不能使用其名稱。

```
$ aws ec2 describe-security-groups --group-ids sg-903004f8
{
    "SecurityGroups": [
        {
            "IpPermissionsEgress": [
                {
                    "IpProtocol": "-1",
                    "IpRanges": [
                        {
                            "CidrIp": "0.0.0.0/0"
                        }
                    ],
                    "UserIdGroupPairs": []
                }
            ],
            "Description": "My security group"
            "IpPermissions": [],
            "GroupName": "my-sg",
            "VpcId": "vpc-1a2b3c4d",
            "OwnerId": "123456789012",
            "GroupId": "sg-903004f8"
        }
    ]
}
```

## 新增規則至安全群組
<a name="configuring-a-security-group"></a>

當您執行 Amazon EC2 執行個體，您必須啟用安全群組中的規則，以允許傳入網路流量來連線到映像。

例如，如果您正在啟動 Windows 執行個體，則通常需新增規則以允許 TCP 連接埠 3389 上的對內流量來支援遠端桌面通訊協定 (RDP)。如果您正在啟動 Linux 執行個體，則通常必須新增規則以允許 TCP 連接埠 22 上的對內流量來支援 SSH 連線。

使用 `[aws ec2 authorize-security-group-ingress](https://docs.aws.amazon.com/cli/latest/reference/ec2/authorize-security-group-ingress.html)` 命令以新增規則至安全群組。此命令的一項必要參數為您電腦的公有 IP 地址或您電腦連接的網路 (採用地址範圍的形式)，使用 [CIDR](https://wikipedia.org/wiki/Classless_Inter-Domain_Routing) 符號。

**注意**  
我們提供下列服務：https：//[https://checkip.global.api.aws/](https://checkip.global.api.aws/)。若要尋找可協助您識別 IP 地址的其他服務，請使用瀏覽器來搜尋「*我的 IP 地址是什麼*」。如果您透過 ISP 或從防火牆後方使用動態 IP 地址來連線 (透過私有網路的 NAT 閘道)，則您的地址可能會定期變更。在這種情況下，您必須找出用戶端電腦所用 IP 地址的範圍。

以下範例顯示如何新增 RDP 的規則 (TCP 連接埠 3389) 到使用您的 IP 地址、ID 為 `sg-903004f8` 的 EC2-VPC 安全群組。

若要開始，請找出 IP 地址。

```
$ curl https://checkip.amazonaws.com
x.x.x.x
```

然後您就可以透過執行 `[aws ec2 authorize-security-group-ingress](https://docs.aws.amazon.com/cli/latest/reference/ec2/authorize-security-group-ingress.html)` 命令來將 IP 地址新增至安全群組。

```
$ aws ec2 authorize-security-group-ingress --group-id sg-903004f8 --protocol tcp --port 3389 --cidr x.x.x.x/x
```

以下命令會新增另一個規則，以啟用 SSH 連線到相同安全群組中的執行個體。

```
$ aws ec2 authorize-security-group-ingress --group-id sg-903004f8 --protocol tcp --port 22 --cidr x.x.x.x/x
```

若要檢視安全群組的任何變更，請執行 `[aws ec2 describe-security-groups](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-security-groups.html)` 命令。

```
$ aws ec2 describe-security-groups --group-ids sg-903004f8
{
    "SecurityGroups": [
        {
            "IpPermissionsEgress": [
                {
                    "IpProtocol": "-1",
                    "IpRanges": [
                        {
                            "CidrIp": "0.0.0.0/0"
                        }
                    ],
                    "UserIdGroupPairs": []
                }
            ],
            "Description": "My security group"
            "IpPermissions": [
                {
                    "ToPort": 22,
                    "IpProtocol": "tcp",
                    "IpRanges": [
                        {
                            "CidrIp": "x.x.x.x/x"
                        }
                    ]
                    "UserIdGroupPairs": [],
                    "FromPort": 22
                }
            ],
            "GroupName": "my-sg",
            "OwnerId": "123456789012",
            "GroupId": "sg-903004f8"
        }
    ]
}
```

## 刪除您的安全群組
<a name="deleting-a-security-group"></a>

若要刪除安全群組，請執行 `[aws ec2 delete-security-group](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-security-group.html)` 命令。

**注意**  
您不能刪除目前已經連接到環境的安全群組。

下列命令範例會刪除 EC2-VPC 安全群組。

```
$ aws ec2 delete-security-group --group-id sg-903004f8
```

## 參考
<a name="cli-services-ec2-sg-references"></a>

**AWS CLI 參考：**
+ `[aws ec2](https://docs.aws.amazon.com/cli/latest/reference/ec2/index.html)`
+ `[aws ec2 authorize-security-group-ingress](https://docs.aws.amazon.com/cli/latest/reference/ec2/authorize-security-group-ingress.html)`
+ `[aws ec2 create-security-group](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-security-group.html)`
+ `[aws ec2 delete-security-group](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-security-group.html)`
+ `[aws ec2 describe-security-groups](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-security-groups.html)`

**其他參考：**
+ [Amazon Elastic Compute Cloud 文件](https://docs.aws.amazon.com/ec2/)
+ 若要檢視和貢獻 AWS SDK 和 AWS CLI 程式碼範例，請參閱 *GitHub* 上的[AWS 程式碼範例儲存庫](https://github.com/awsdocs/aws-doc-sdk-examples/)。

# 在 中啟動、列出和刪除 Amazon EC2 執行個體 AWS CLI
<a name="cli-services-ec2-instances"></a>

您可以使用 AWS Command Line Interface (AWS CLI) 來啟動、列出和刪除 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。如果您啟動不在 AWS 免費方案中的執行個體，則會在您啟動執行個體之後向您收費，並按執行個體執行的時間收費，即使執行個體保持閒置。

**注意**  
如需其他命令範例，請參閱 [AWS CLI 。](https://docs.aws.amazon.com/cli/latest/reference/index.html)

**Topics**
+ [先決條件](#cli-services-ec2-instances-prereqs)
+ [啟動您的執行個體](#launching-instances)
+ [新增區塊型儲存設備至您的執行個體](#block-device-mapping)
+ [新增標籤至您的執行個體](#tagging-instances)
+ [連線到您的執行個體](#connecting-to-instances)
+ [列出您的執行個體](#listing-instances)
+ [刪除您的執行個體](#terminating-instances)
+ [參考](#cli-services-ec2-instances-references)

## 先決條件
<a name="cli-services-ec2-instances-prereqs"></a>

若要在此主題中執行 `ec2` 命令，您需要：
+ 安裝及設定 AWS CLI。如需詳細資訊，請參閱[安裝或更新至最新版本的 AWS CLI](getting-started-install.md)及[的身分驗證和存取憑證 AWS CLI](cli-chap-authentication.md)。
+ 設定 IAM 許可，以允許 Amazon EC2 存取。如需有關 Amazon EC2 IAM 許可的詳細資訊，請參閱《Amazon EC2 使用者指南》**中的 [Amazon EC2 IAM 政策](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html)。
+ 建立[金鑰對](cli-services-ec2-keypairs.md)和[安全群組](cli-services-ec2-sg.md)。
+ 選取 Amazon Machine Image (AMI) 並記下 AMI ID。如需詳細資訊，請參閱《Amazon EC2 使用者指南》**中的[尋找合適的 AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html)。

## 啟動您的執行個體
<a name="launching-instances"></a>

若要使用所選的 AMI 來啟動 Amazon EC2 執行個體，請使用 `[aws ec2 run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html)` 命令。您可於虛擬私有雲端 (VPC) 中啟動執行個體。

一開始您的執行個體會處於 `pending` 狀態，但幾分鐘後就會變更為 `running` 狀態。

以下範例說明如何在 VPC 的指定子網路中啟動 `t2.micro` 執行個體。以自訂值取代*斜體*參數值。

```
$ aws ec2 run-instances --image-id ami-xxxxxxxx --count 1 --instance-type t2.micro --key-name MyKeyPair --security-group-ids sg-903004f8 --subnet-id subnet-6e7f829e
{
    "OwnerId": "123456789012",
    "ReservationId": "r-5875ca20",
    "Groups": [
        {
            "GroupName": "my-sg",
            "GroupId": "sg-903004f8"
        }
    ],
    "Instances": [
        {
            "Monitoring": {
                "State": "disabled"
            },
            "PublicDnsName": null,
            "Platform": "windows",
            "State": {
                "Code": 0,
                "Name": "pending"
            },
            "EbsOptimized": false,
            "LaunchTime": "2013-07-19T02:42:39.000Z",
            "PrivateIpAddress": "10.0.1.114",
            "ProductCodes": [],
            "VpcId": "vpc-1a2b3c4d",
            "InstanceId": "i-5203422c",
            "ImageId": "ami-173d747e",
            "PrivateDnsName": "ip-10-0-1-114.ec2.internal",
            "KeyName": "MyKeyPair",
            "SecurityGroups": [
                {
                    "GroupName": "my-sg",
                    "GroupId": "sg-903004f8"
                }
            ],
            "ClientToken": null,
            "SubnetId": "subnet-6e7f829e",
            "InstanceType": "t2.micro",
            "NetworkInterfaces": [
                {
                    "Status": "in-use",
                    "SourceDestCheck": true,
                    "VpcId": "vpc-1a2b3c4d",
                    "Description": "Primary network interface",
                    "NetworkInterfaceId": "eni-a7edb1c9",
                    "PrivateIpAddresses": [
                        {
                            "PrivateDnsName": "ip-10-0-1-114.ec2.internal",
                            "Primary": true,
                            "PrivateIpAddress": "10.0.1.114"
                        }
                    ],
                    "PrivateDnsName": "ip-10-0-1-114.ec2.internal",
                    "Attachment": {
                        "Status": "attached",
                        "DeviceIndex": 0,
                        "DeleteOnTermination": true,
                        "AttachmentId": "eni-attach-52193138",
                        "AttachTime": "2013-07-19T02:42:39.000Z"
                    },
                    "Groups": [
                        {
                            "GroupName": "my-sg",
                            "GroupId": "sg-903004f8"
                        }
                    ],
                    "SubnetId": "subnet-6e7f829e",
                    "OwnerId": "123456789012",
                    "PrivateIpAddress": "10.0.1.114"
                }              
            ],
            "SourceDestCheck": true,
            "Placement": {
                "Tenancy": "default",
                "GroupName": null,
                "AvailabilityZone": "us-west-2b"
            },
            "Hypervisor": "xen",
            "BlockDeviceMappings": [
                {
                    "DeviceName": "/dev/sda1",
                    "Ebs": {
                        "Status": "attached",
                        "DeleteOnTermination": true,
                        "VolumeId": "vol-877166c8",
                        "AttachTime": "2013-07-19T02:42:39.000Z"
                    }
                }              
            ],
            "Architecture": "x86_64",
            "StateReason": {
                "Message": "pending",
                "Code": "pending"
            },
            "RootDeviceName": "/dev/sda1",
            "VirtualizationType": "hvm",
            "RootDeviceType": "ebs",
            "Tags": [
                {
                    "Value": "MyInstance",
                    "Key": "Name"
                }
            ],
            "AmiLaunchIndex": 0
        }
    ]
}
```

## 新增區塊型儲存設備至您的執行個體
<a name="block-device-mapping"></a>

您啟動的每個執行個體均有一個相關聯的根設備磁碟區。您可以使用區塊型設備映射，來指定執行個體啟動時要連接的其他 Amazon Elastic Block Store (Amazon EBS) 磁碟區或執行個體存放磁碟區。

若要新增區塊型儲存設備至執行個體，請在使用 `run-instances` 時指定 `--block-device-mappings` 選項。

以下範例參數佈建 20 GB 大小的標準 Amazon EBS 磁碟區，並使用識別符 `/dev/sdf` 將其映射到您的執行個體。

```
--block-device-mappings "[{\"DeviceName\":\"/dev/sdf\",\"Ebs\":{\"VolumeSize\":20,\"DeleteOnTermination\":false}}]"
```

下列範例根據現有快照，新增映射到 `/dev/sdf` 的 Amazon EBS 磁碟區。快照代表載入到磁碟區的映像。當您指定快照時，不必指定磁碟區大小，它夠大到可以保存你的映像。不過，如果您指定大小，則必須等於或大於快照的大小。

```
--block-device-mappings "[{\"DeviceName\":\"/dev/sdf\",\"Ebs\":{\"SnapshotId\":\"snap-a1b2c3d4\"}}]"
```

下列範例新增兩個磁碟區到執行個體。可供執行個體使用的磁碟區數量，根據其執行個體類型而定。

```
--block-device-mappings "[{\"DeviceName\":\"/dev/sdf\",\"VirtualName\":\"ephemeral0\"},{\"DeviceName\":\"/dev/sdg\",\"VirtualName\":\"ephemeral1\"}]"
```

以下範例會建立對應 (`/dev/sdj`)，但不會為執行個體佈建磁碟區。

```
--block-device-mappings "[{\"DeviceName\":\"/dev/sdj\",\"NoDevice\":\"\"}]"
```

如需詳細資訊，請參閱《Amazon EC2 使用者指南》**中的[區塊型儲存設備映射](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html)。

## 新增標籤至您的執行個體
<a name="tagging-instances"></a>

標籤是您指派給 AWS 資源的標籤。它可讓您新增中繼資料到您的資源，以供您用於各種用途。如需詳細資訊，請參閱《Amazon EC2 使用者指南》**中的[標記您的資源](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)。

以下範例顯示說明如何使用 `[aws ec2 create-tags](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html)` 命令，將金鑰名稱為「`Name`」和金鑰值為「`MyInstance`」的標籤新增至指定的執行個體。

```
$ aws ec2 create-tags --resources i-5203422c --tags Key=Name,Value=MyInstance
```

## 連線到您的執行個體
<a name="connecting-to-instances"></a>

執行個體正在執行時，您可以與其連結並加以使用，如同操作面前的電腦一般。如需詳細資訊，請參閱《Amazon EC2 使用者指南》**中的[連線至您的執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html)。

## 列出您的執行個體
<a name="listing-instances"></a>

您可以使用 AWS CLI 列出您的執行個體，並檢視其相關資訊。您可以列出所有執行個體，或根據感興趣的執行個體來篩選條件結果。

下列範例顯示如何使用 `[aws ec2 describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html)` 命令。

下列命令能列出您所有的執行個體。

```
$ aws ec2 describe-instances
```

以下命令會將清單篩選為僅限您的 `t2.micro` 執行個體，並僅輸出每個相符項目的 `InstanceId` 值。

```
$ aws ec2 describe-instances --filters "Name=instance-type,Values=t2.micro" --query "Reservations[].Instances[].InstanceId"
[
    "i-05e998023d9c69f9a"
]
```

以下命令會列出具有標籤 `Name=MyInstance` 的任何執行個體。

```
$ aws ec2 describe-instances --filters "Name=tag:Name,Values=MyInstance"
```

下列命令列出使用下列任何 AMI 啟動的執行個體：`ami-x0123456`、`ami-y0123456` 和 `ami-z0123456`。

```
$ aws ec2 describe-instances --filters "Name=image-id,Values=ami-x0123456,ami-y0123456,ami-z0123456"
```

## 刪除您的執行個體
<a name="terminating-instances"></a>

當您不再需要 Amazon EC2 執行個體時，您可以使用 AWS CLI 來終止 （刪除） 該執行個體。

**重要**  
**終止執行個體的操作為永久性且無法復原。**  
終止執行個體後，您將無法再連線至該執行個體，且無法復原該執行個體。所有設定為終止時刪除的已連接 Amazon EBS 磁碟區，也會被永久刪除且無法復原。儲存在執行個體儲存體磁碟區的所有資料將永久遺失。如需詳細資訊，請參閱[執行個體終止的運作方式](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/how-ec2-instance-termination-works.html)。  
在終止執行個體之前，確認您已將終止使用後需要保留的全部資料備份至持久性儲存體。

執行個體的狀態變更為 `shutting-down` 或 `terminated` 時刻起，該執行個體便停止收取費用。如果您希望稍後重新連接執行個體，請使用 [stop-instances](https://docs.aws.amazon.com/cli/v1/reference/ec2/stop-instances.html) 而不是 `terminate-instances`。如需詳細資訊，請參閱*《Amazon EC2 使用者指南》*中的[終止您的執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html)。

下列範例示範如何使用 `[aws ec2 terminate-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/terminate-instances.html)`命令刪除執行個體。

```
$ aws ec2 terminate-instances --instance-ids i-5203422c
{
    "TerminatingInstances": [
        {
            "InstanceId": "i-5203422c",
            "CurrentState": {
                "Code": 32,
                "Name": "shutting-down"
            },
            "PreviousState": {
                "Code": 16,
                "Name": "running"
            }
        }
    ]
}
```

## 參考
<a name="cli-services-ec2-instances-references"></a>

**AWS CLI 參考：**
+ `[aws ec2](https://docs.aws.amazon.com/cli/latest/reference/ec2/index.html)`
+ `[aws ec2 create-tags](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html)`
+ `[aws ec2 describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html)`
+ `[aws ec2 run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html)`
+ `[aws ec2 terminate-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/terminate-instances.html)`

**其他參考：**
+ [Amazon Elastic Compute Cloud 文件](https://docs.aws.amazon.com/ec2/)
+ 若要檢視和貢獻 AWS SDK 和 AWS CLI 程式碼範例，請參閱 *GitHub* 上的[AWS 程式碼範例儲存庫](https://github.com/awsdocs/aws-doc-sdk-examples/)。

# 在 中使用 bash 指令碼變更 Amazon EC2 執行個體類型 AWS CLI
<a name="cli-services-ec2-instance-type-script"></a>

此 Amazon EC2 的 bash 指令碼範例會使用 AWS Command Line Interface () 變更 Amazon EC2 執行個體的執行個體類型AWS CLI。如果執行個體正在執行，它會停止執行個體，變更執行個體類型，然後在要求時重新啟動執行個體。Shell 指令碼是專為在命令列界面中執行而設計的程式。

**注意**  
如需其他命令範例，請參閱[AWS CLI 參考指南](https://docs.aws.amazon.com/cli/latest/reference/index.html)。

**Topics**
+ [開始之前](#cli-services-ec2-instance-type-script-prereqs)
+ [關於此範例](#cli-services-ec2-instance-type-script-about)
+ [Parameters](#cli-services-ec2-instance-type-script-params)
+ [檔案](#cli-services-ec2-instance-type-script-files.title)
+ [參考](#cli-services-ec2-instance-type-script-references)

## 開始之前
<a name="cli-services-ec2-instance-type-script-prereqs"></a>

在可以執行下列任何範例之前，您必須先完成下列事項。
+ 安裝及設定 AWS CLI。如需詳細資訊，請參閱[安裝或更新至最新版本的 AWS CLI](getting-started-install.md)及[的身分驗證和存取憑證 AWS CLI](cli-chap-authentication.md)。
+ 您使用的設定檔必須具有許可，以允許範例執行 AWS 的操作。
+ 您有許可能夠停止和修改帳戶中正在執行的 Amazon EC2 執行個體。如果您執行測試指令碼，它會為您啟動執行個體，測試變更類型，然後終止執行個體。
+  AWS 最佳實務是授予此程式碼的最低權限，或僅授予執行任務所需的許可。如需詳細資訊，請參閱《AWS Identity and Access Management (IAM) 使用者指南》**中的[授予最低權限](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)。
+ 此程式碼尚未在所有 AWS 區域中進行測試。某些 AWS 服務僅適用於特定 區域。如需詳細資訊，請參閱《AWS 一般參考指南》**中的[服務端點和配額](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)。
+ 執行此程式碼可能會導致 AWS 您的帳戶產生費用。您有責任確保在使用完該指令碼建立的所有資源後將這些資源移除。

## 關於此範例
<a name="cli-services-ec2-instance-type-script-about"></a>

這個範例被寫成 Shell 指令碼檔案 `change_ec2_instance_type.sh` 中的一個函數，您可以從另一個指令碼或從命令列中 `source`。每個指令碼檔案包含描述每個函數的註釋。待函數儲存到記憶體中，您就可以從命令列呼叫它。例如，下列命令會將指定執行個體的類型變更為 `t2.nano`：

```
$ source ./change_ec2_instance_type.sh
$ ./change_ec2_instance_type -i *instance-id* -t new-type
```

如需完整範例和可下載的指令碼檔案，請參閱 *GitHub* 上 *AWS 程式碼範例儲存庫*中的[變更 Amazon EC2 執行個體類型](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/aws-cli/bash-linux/ec2/change-ec2-instance-type)。

## Parameters
<a name="cli-services-ec2-instance-type-script-params"></a>

**-i** – *(字串)* 指定要修改的執行個體 ID。

**-t** – *(字串)* 指定要切換的 Amazon EC2 執行個體類型。

**-r** – *(切換)* 依預設，此為取消設定。如果設定為 `-r`，則在類型切換之後重新啟動執行個體。

**-f** – *(切換)* 依預設，指令碼會在進行切換之前提示使用者確認關閉執行個體。如果設定為 `-f`，函數不會在關閉執行個體進行類型切換之前提示使用者

**-v** – *(切換)* 依預設，指令碼會以無提示的方式操作，只會在發生錯誤時顯示輸出。如果設定為 `-v`，函數會在整個操作期間顯示狀態。

## 檔案
<a name="cli-services-ec2-instance-type-script-files.title"></a>

**`change_ec2_instance_type.sh`**  
主指令碼檔案包含執行下列任務的 `change_ec2_instance_type()` 函數：  
+ 驗證指定的 Amazon EC2 執行個體是否存在。
+ 除非選取 `-f`，否則會在停止執行個體之前警告使用者。
+ 變更執行個體類型
+ 如果設定了 `-r`，重新啟動執行個體並確認執行個體正在執行
檢視 *GitHub* 上的 `[change\$1ec2\$1instance\$1type.sh](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/aws-cli/bash-linux/ec2/change-ec2-instance-type/change_ec2_instance_type.sh)`。

**`test_change_ec2_instance_type.sh`**  
檔案 `test_change_ec2_instance_type.sh` 指令碼會為 `change_ec2_instance_type` 函數測試各種程式碼路徑。如果測試指令碼中的所有步驟都能正常運作，測試指令碼會移除它所建立的所有資源。  
您可以使用下列參數來執行測試指令碼：  
+ **-v** – *(切換)* 每個測試都會在執行時顯示通過/失敗狀態。依預設，測試會以無提示的方式執行，且輸出只包含最終的整體通過/失敗狀態。
+ **-i** – *(切換)* 指令碼會在每次測試後暫停，讓您能夠瀏覽每個步驟的中繼結果。可讓您使用 Amazon EC2 主控台檢查執行個體目前的狀態。在出現提示時按下 *ENTER* 後，指令碼繼續執行下一個步驟。
檢視 *GitHub* 上的 `[test\$1change\$1ec2\$1instance\$1type.sh](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/aws-cli/bash-linux/ec2/change-ec2-instance-type/test_change_ec2_instance_type.sh)`。

**`awsdocs_general.sh`**  
指令碼檔案 `awsdocs_general.sh` 會保存在各個 AWS CLI進階範例中使用的一般用途函數。  
檢視 *GitHub* 上的 `[awsdocs\$1general.sh](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/aws-cli/bash-linux/ec2/change-ec2-instance-type/awsdocs_general.sh)`。

## 參考
<a name="cli-services-ec2-instance-type-script-references"></a>

**AWS CLI 參考：**
+ `[aws ec2](https://docs.aws.amazon.com/cli/v1/reference/ec2/index.html)`
+ `[aws ec2 describe-instances](https://docs.aws.amazon.com/cli/v1/reference/ec2/describe-instances.html)`
+ `[aws ec2 modify-instance-attribute](https://docs.aws.amazon.com/cli/v1/reference/ec2/modify-instance-attribute.html)`
+ `[aws ec2 start-instances](https://docs.aws.amazon.com/cli/v1/reference/ec2/start-instances.html)`
+ `[aws ec2 stop-instances](https://docs.aws.amazon.com/cli/v1/reference/ec2/stop-instances.html)`
+ `[aws ec2 wait instance-running](https://docs.aws.amazon.com/cli/v1/reference/ec2/wait/instance-running.html)`
+ `[aws ec2 wait instance-stopped](https://docs.aws.amazon.com/cli/v1/reference/ec2/wait/instance-stopped.html)`

**其他參考：**
+ [Amazon Elastic Compute Cloud 文件](https://docs.aws.amazon.com/ec2/)
+ 若要檢視和貢獻 AWS SDK 和 AWS CLI 程式碼範例，請參閱 *GitHub* 上的[AWS 程式碼範例儲存庫](https://github.com/awsdocs/aws-doc-sdk-examples/)。