

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

# 在 中使用 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/)。