

# Change an Amazon EC2 instance type with a bash script in the AWS CLI
<a name="cli-services-ec2-instance-type-script"></a>

この Amazon EC2 用の bash スクリプト例は、AWS Command Line Interface (AWS CLI) を使用して Amazon EC2 インスタンスのインスタンスタイプを変更します。実行中の場合はインスタンスを停止し、インスタンスタイプを変更してから、リクエストに応じてインスタンスを再起動します。シェルスクリプトは、コマンドラインインターフェイスで実行するように設計されたプログラムです。

**注記**  
その他のコマンドの例については、「[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)
+ [パラメータ](#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)」および「」を参照してください。[Authentication and access credentials for the 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>

この例は、シェルスクリプトファイル `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 コード例のリポジトリ*の「[Change Amazon EC2 Instance Type](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/aws-cli/bash-linux/ec2/change-ec2-instance-type)」を参照してください。

## パラメータ
<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` を設定した場合、インスタンスを再起動し、インスタンスが実行中であることを確認します。
`[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)` のコードを *GitHub* で表示します。

**`test_change_ec2_instance_type.sh`**  
ファイル `test_change_ec2_instance_type.sh` のスクリプトは、`change_ec2_instance_type` 関数のさまざまなコードパスをテストします。テストスクリプトのすべてのステップが正しく動作する場合、テストスクリプトは作成したすべてのリソースを削除します。  
テストスクリプトは、次のパラメータを使用して実行できます。  
+ **-v** - *(スイッチ)* 各テストは、実行時に合格/失敗ステータスを示します。デフォルトでは、テストはサイレントに実行され、出力には最終的な合格/失敗ステータスのみが含まれます。
+ **-i** - *(スイッチ)* 各テストの後にスクリプトが一時停止し、各ステップの中間結果を参照できるようにします。Amazon EC2 コンソールを使用して、インスタンスの現在のステータスを調べることができます。プロンプトで *Enter* キーを押すと、スクリプトは次のステップに進みます。
`[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)` のコードを *GitHub* で表示します。

**`awsdocs_general.sh`**  
スクリプトファイル `awsdocs_general.sh` には、AWS CLI の高度な例全体で使用される汎用関数が格納されています。  
`[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)` のコードを *GitHub* で表示します。

## リファレンス
<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/)を参照してください。