

# AWS CLI에서 bash 스크립트로 Amazon EC2 인스턴스 유형 변경
<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) 및 [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 코드 예제 리포지토리*의 [Amazon EC2 인스턴스 유형 변경](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`을 설정하면 인스턴스를 다시 시작하고 인스턴스가 실행 중인지 확인합니다.
*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/)를 참조하세요.