

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 여러에서 공유 Amazon Machine Image 사용 모니터링 AWS 계정
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts"></a>

*Naveen Suthar와 Sandeep Gawande, Amazon Web Services*

## 요약
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-summary"></a>

Amazon Machine Image(AMI)는 Amazon Web Services(AWS) 환경에서 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 만드는 데 사용됩니다. 이 패턴에서는 *생성자 계정*이라고 하는 별도의 중앙 집중식 AWS 계정에서 AMI를 생성할 수 있습니다. 그런 다음이 패턴에서 *소비자 계정*이라고 AWS 리전하는 동일한에 AWS 계정 있는 여러에 걸쳐 AMI를 공유할 수 있습니다. 단일 계정에서 AMI를 관리하면 확장성이 제공되고 거버넌스가 간소화됩니다. 소비자 계정에서는 Amazon EC2 Auto Scaling [시작 템플릿](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg-launch-template.html)과 Amazon Elastic Kubernetes Service(Amazon EKS) [노드 그룹](https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html)의 공유 AMI를 참조할 수 있습니다.

공유 AMI가 더 이상 사용되지 않거나, 등록 취소되거나, 공유되지 않는 경우, 소비자 계정에서 AMI를 참조하는 AWS 서비스는 이 AMI를 사용하여 새 인스턴스를 시작할 수 없습니다. 동일한 인스턴스의 모든 Auto Scaling 이벤트 또는 재시작이 실패합니다. 이로 인해 프로덕션 환경에서 애플리케이션 가동 중지나 성능 저하와 같은 문제가 발생할 수 있습니다. AMI 공유 및 사용 이벤트 AWS 계정가 여러 개 발생할 경우이 활동을 모니터링하기 어려울 수 있습니다.

이 패턴을 사용하면 동일한 리전의 계정 간에 공유된 AMI 사용 및 상태를 모니터링할 수 있습니다. Amazon EventBridge AWS 서비스, Amazon DynamoDB AWS Lambda, Amazon Simple Email Service(Amazon SES)와 같은 서버리스를 사용합니다. HashiCorp Terraform을 사용하여 코드형 인프라(IaC)로 프로비저닝합니다. 이 솔루션은 소비자 계정의 서비스가 등록 취소되거나 공유되지 않은 AMI를 참조할 때 알림을 제공합니다.

## 사전 조건 및 제한 사항
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-prereqs"></a>

**사전 조건 **
+ 둘 이상의 활성 AWS 계정: 생성자 계정 하나와 소비자 계정 하나 이상
+ 생성자 계정에서 소비자 계정으로 공유되는 하나 이상의 AMI
+ Terraform CLI, [설치됨](https://developer.hashicorp.com/terraform/cli)(Terraform 설명서)
+ Terraform AWS Provider, [구성](https://hashicorp.github.io/terraform-provider-aws/)됨(Terraform 설명서)
+ (선택 사항이지만 권장됨)Terraform 백엔드, [구성됨](https://developer.hashicorp.com/terraform/language/backend)(Terraform 설명서)
+ Git, [설치됨](https://github.com/git-guides/install-git)

**제한 사항 **
+ 이 패턴은 계정 ID를 사용하여 특정 계정에 공유된 AMI를 모니터링합니다. 이 패턴은 조직 ID를 사용하여 조직에 공유된 AMI를 모니터링하지 않습니다.
+ AMI는 동일한 AWS 리전 내에 있는 계정에만 공유할 수 있습니다. 이 패턴은 단일 대상 리전 내의 AMI를 모니터링합니다. 여러 리전의 AMI 사용을 모니터링하려면 이 솔루션을 각 리전에 배포하세요.
+ 이 패턴은 이 솔루션이 배포되기 전에 공유된 AMI를 모니터링하지 않습니다. 이전에 공유한 AMI를 모니터링하려면 AMI를 공유 해제한 다음 소비자 계정에 다시 공유하면 됩니다.

**제품 버전**
+ Terraform 버전 1.2.0 이상
+ Terraform AWS Provider 버전 4.20 이상

## 아키텍처
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-architecture"></a>

**대상 기술 스택**

Terraform을 통해 IaC로 프로비저닝되는 리소스는 다음과 같습니다.
+ Amazon DynamoDB 테이블
+ Amazon EventBridge 규칙
+ AWS Identity and Access Management (IAM) 역할
+ AWS Lambda 함수
+ Amazon SES

**대상 아키텍처**

![공유 AMI 사용을 모니터링하고 AMI가 공유되지 않거나 등록 취소된 경우 사용자에게 경고하는 아키텍처](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/images/pattern-img/2d709249-0c68-47d7-be5d-46e8a73071ed/images/8c48c4dd-d681-4c32-9ba8-8f5ad2d66f64.png)


이 다이어그램은 다음 워크플로를 보여줍니다.

1. 생성자 계정의 AMI는 동일한 AWS 리전의 소비자 계정과 공유됩니다.

1. AMI가 공유되면 생성자 계정의 Amazon EventBridge 규칙이 `ModifyImageAttribute` 이벤트를 캡처하고 생성자 계정에서 Lambda 함수를 시작합니다.

1. Lambda 함수는 AMI와 관련된 데이터를 생성자 계정의 DynamoDB 테이블에 저장합니다.

1. 소비자 계정의 AWS 서비스 가 공유 AMI를 사용하여 Amazon EC2 인스턴스를 시작하거나 공유 AMI가 시작 템플릿과 연결된 경우 소비자 계정의 EventBridge 규칙은 공유 AMI의 사용을 캡처합니다.

1. EventBridge 규칙이 소비자 계정에서 Lambda 함수를 시작합니다. Lambda 함수는 다음 작업을 수행합니다.

   1. Lambda 함수는 소비자 계정의 DynamoDB 테이블에 있는 AMI 관련 데이터를 업데이트합니다.

   1. Lambda 함수는 생성자 계정에서 IAM 역할을 맡고 생성자 계정의 DynamoDB 테이블을 업데이트합니다. `Mapping` 테이블에서 인스턴스 ID 또는 시작 템플릿 ID를 해당 AMI ID에 매핑하는 항목을 생성합니다.

1. 생성자 계정의 중앙에서 관리되는 AMI는 더 이상 사용되지 않거나, 등록 취소되거나, 공유되지 않습니다.

1. 생성자 계정의 EventBridge 규칙은 `remove` 작업과 함께 `ModifyImageAttribute` 또는 `DeregisterImage` 이벤트를 캡처하고 Lambda 함수를 시작합니다.

1. Lambda 함수는 DynamoDB 테이블을 확인하여 AMI가 소비자 계정에서 사용되는지 확인합니다. `Mapping` 테이블에 AMI와 연결된 인스턴스 ID 또는 시작 템플릿 ID가 없는 경우 프로세스가 완료됩니다.

1. 인스턴스 ID 또는 시작 템플릿 ID가 `Mapping` 테이블의 AMI와 연결되어 있는 경우 Lambda 함수는 Amazon SES를 사용하여 구성된 구독자에게 이메일 알림을 보냅니다.

## 도구
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-tools"></a>

**AWS 서비스**
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html)는 빠르고 예측 가능하고 확장 가능한 성능을 제공하는 완전 관리형 NoSQL 데이터베이스 서비스입니다.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)는 애플리케이션을 다양한 소스의 실시간 데이터와 연결할 수 있는 서버리스 이벤트 버스 서비스입니다. 예를 들어 AWS Lambda 함수, API 대상을 사용하는 HTTP 호출 엔드포인트 또는 다른의 이벤트 버스 등이 있습니다 AWS 계정.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)를 사용하면 AWS 리소스에 대한 액세스 권한을 인증하고 사용할 수 있는 사용자를 제어하여 AWS 리소스에 대한 액세스를 안전하게 관리할 수 있습니다.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)는 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행하는 데 도움이 되는 컴퓨팅 서비스입니다. 필요할 때만 코드를 실행하며 자동으로 확장이 가능하므로 사용한 컴퓨팅 시간만큼만 비용을 지불합니다.
+ [Amazon Simple Email Service(Amazon SES)](https://docs.aws.amazon.com/ses/latest/dg/Welcome.html)를 사용하면 자신의 이메일 주소와 도메인을 사용하여 이메일을 보내고 받을 수 있습니다.

**기타 도구**
+ [HashiCorp Terraform](https://www.terraform.io/docs)은 코드를 사용하여 클라우드 인프라 및 리소스를 프로비저닝하고 관리하는 데 도움이 되는 코드형 인프라(IaC) 도구입니다.
+ [Python](https://www.python.org/)은 범용 컴퓨터 프로그래밍 언어입니다.

**코드 리포지토리**

이 패턴의 코드는 GitHub [cross-account-ami-monitoring-terraform-samples](https://github.com/aws-samples/cross-account-ami-monitoring-terraform-samples) 리포지토리에서 사용할 수 있습니다.

## 모범 사례
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-best-practices"></a>
+ [AWS Lambda 함수 작업 모범 사례를](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html) 따릅니다.
+ [AMI 구축 모범 사례](https://docs.aws.amazon.com/marketplace/latest/userguide/best-practices-for-building-your-amis.html)를 따르세요.
+ IAM 역할을 생성할 때는 최소 권한 원칙에 따라 작업을 수행하는 데 필요한 최소 권한을 부여하세요. 자세한 내용은 IAM 설명서의 [최소 권한 부여](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) 및 [보안 모범 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPracticesAndUseCases.html)를 참조하세요.
+  AWS Lambda 함수에 대한 모니터링 및 알림을 설정합니다. 자세한 내용은 [Lambda 함수 모니터링 및 문제 해결](https://docs.aws.amazon.com/lambda/latest/dg/lambda-monitoring.html)을 참조하세요.

## 에픽
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-epics"></a>

### Terraform 구성 파일을 사용자 지정
<a name="customize-the-terraform-configuration-files"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
|  AWS CLI 명명된 프로파일을 생성합니다. | 생성자 계정과 각 소비자 계정에 대해 AWS Command Line Interface (AWS CLI) 명명된 프로필을 생성합니다. 지침은 AWS 시작하기 리소스 센터의 [설정을 AWS CLI](https://aws.amazon.com/getting-started/guides/setup-environment/module-three/) 참조하세요. | DevOps 엔지니어 | 
| 리포지토리를 복제합니다. | 다음 명령을 입력합니다. 이렇게 하면 GitHub에서 SSH를 사용하여 [cross-account-ami-monitoring-terraform-samples](https://github.com/aws-samples/cross-account-ami-monitoring-terraform-samples) 리포지토리가 복제됩니다.<pre>git clone git@github.com:aws-samples/cross-account-ami-monitoring-terraform-samples.git</pre> | DevOps 엔지니어 | 
| provider.tf 파일을 업데이트합니다. | 1. 다음 명령을 입력하여 복제된 리포지토리의 `terraform` 폴더로 이동합니다.<pre>cd cross-account-ami-monitoring/terraform</pre><br />2. `provider.tf` 파일을 엽니다.<br />3. 다음과 같이 생성자 계정 및 소비자 계정에 대한 Terraform AWS 공급자 구성을 업데이트합니다.`alias`에 공급자 구성의 이름을 입력합니다.에이 솔루션을 배포할 대상 AWS 리전 을 `region`입력합니다.에 계정에 액세스하기 위한 AWS CLI 명명된 프로필을 `profile`입력합니다.<br />4. 두 개 이상의 소비자 계정을 구성하는 경우 각 추가 소비자 계정에 대한 프로파일을 생성하세요.<br />5. `provider.tf` 파일을 저장하고 닫습니다.공급자 구성에 대한 자세한 내용은 Terraform 설명서의 [다중 공급자 구성](https://developer.hashicorp.com/terraform/language/providers/configuration#alias-multiple-provider-configurations)을 참조하세요. | DevOps 엔지니어 | 
| terraform.tfvars 파일을 업데이트합니다. | 1. `terraform.tfvars` 파일을 엽니다.<br />2. `account_email_mapping` 파라미터에서 다음과 같이 생성자 계정 및 소비자 계정에 대한 알림을 구성합니다.`account`에 계정 ID를 입력합니다.`email`에 알림을 보낼 이메일 주소를 입력합니다. 계정 당 하나의 이메일 주소만 입력할 수 있습니다.<br />3. 두 개 이상의 소비자 계정을 구성하는 경우 각 추가 소비자 계정에 대한 계정 및 이메일 주소를 입력합니다.<br />4. `terraform.tfvars` 파일을 저장하고 닫습니다. | DevOps 엔지니어 | 
| main.tf 파일을 업데이트합니다. | 이 솔루션을 두 개 이상의 소비자 계정에 배포하는 경우에만 이 단계를 완료하세요. 이 솔루션을 한 소비자 계정에만 배포하는 경우 이 파일을 수정할 필요가 없습니다.1. `main.tf` 파일을 엽니다.<br />2. 각 추가 소비자 계정에 대해 템플릿의 `consumer_account_A` 모듈을 기반으로 새 모듈을 생성하세요. 각 소비자 계정 `provider`의 값은 `provider.tf` 파일에 입력한 별칭과 일치해야 합니다.<br />3. `main.tf` 파일을 저장하고 닫습니다. | DevOps 엔지니어 | 

### Terraform을 사용하여 솔루션을 배포
<a name="deploy-the-solution-by-using-terraform"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| 솔루션을 배포합니다. | Terraform CLI에 다음 명령을 입력하여 생성자 및 소비자 계정에 AWS 리소스를 배포합니다.1. 다음 명령을 입력하여 Terraform을 초기화합니다.<pre>terraform init</pre><br />2. Terraform 구성을 검증하려면 다음 명령을 입력합니다.<pre>terraform validate</pre><br />3. Terraform 실행 계획을 생성하려면 다음 명령을 입력합니다.<pre>terraform plan</pre><br />4. Terraform 계획의 구성 변경 사항을 검토하고 이러한 변경 사항을 구현할지 확인합니다.<br />5. 다음 명령을 입력하여 리소스를 배포합니다.<pre>terraform apply</pre> | DevOps 엔지니어 | 
| 이메일 주소 ID를 확인합니다. | Terraform 계획을 배포했을 때 Terraform은 Amazon SES의 각 소비자 계정에 대한 이메일 주소 ID를 생성했습니다. 해당 이메일 주소로 알림을 보내려면 먼저 이메일 주소를 확인해야 합니다. 지침은 Amazon SES 설명서의 [이메일 주소 ID 확인](https://docs.aws.amazon.com/ses/latest/dg/creating-identities.html#just-verify-email-proc)을 참조하세요. | 일반 AWS | 

### 리소스 배포 검증
<a name="validate-resource-deployment"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| 생성자 계정에서 배포를 검증하세요. | 1. 작성자 계정에 로그인합니다.<br />2. 탐색 모음에서 대상 리전이 표시되는지 확인합니다. 다른 리전에 있는 경우 현재 표시된 리전의 이름을 선택한 다음 대상 리전을 선택합니다.<br />3. [DynamoDB 콘솔](https://console.aws.amazon.com/dynamodb/)을 엽니다.<br />4. 탐색 창에서 **테이블**을 선택합니다.<br />5. 테이블 목록에서 `AmiShare` 테이블이 있는지 확인합니다.<br />6. [Lambda 콘솔](https://console.aws.amazon.com/lambda)을 엽니다.<br />7. 탐색 창에서 **함수**를 선택합니다.<br />8. 함수 목록에서 `ami-share` 함수가 존재하는지 확인합니다.<br />9. [IAM 콘솔(IAM console)](https://console.aws.amazon.com/iamv2/)을 엽니다.<br />10. 탐색 창에서 **역할**를 선택합니다.<br />11. 역할 목록에 `external-ddb-role` 역할이 있는지 확인합니다.<br />12. [EventBridge 콘솔](https://console.aws.amazon.com/events/)을 엽니다.<br />13. 탐색 창에서 **규칙**을 선택합니다.<br />14. 규칙 목록에서 `modify_image_attribute_event` 규칙이 있는지 확인합니다.<br />15. [Amazon EFS 콘솔](https://console.aws.amazon.com/ses/)을 엽니다.<br />16. 왼쪽 탐색 창에서 **확인된 ID**를 선택합니다.<br />17. ID 목록에서 각 소비자 계정에 대해 이메일 주소 자격 증명이 등록 및 확인되었는지 확인합니다. | DevOps 엔지니어 | 
| 소비자 계정에서 배포를 검증하세요. | 1. 소비자 계정에 로그인합니다.<br />2. 탐색 모음에서 대상 리전이 표시되는지 확인합니다. 다른 리전에 있는 경우 현재 표시된 리전의 이름을 선택한 다음 대상 리전을 선택합니다.<br />3. [DynamoDB 콘솔](https://console.aws.amazon.com/dynamodb/)을 엽니다.<br />4. 탐색 창에서 **테이블**을 선택합니다.<br />5. 테이블 목록에서 `Mapping` 테이블이 있는지 확인합니다.<br />6. [Lambda 콘솔](https://console.aws.amazon.com/lambda)을 엽니다.<br />7. 탐색 창에서 **함수**를 선택합니다.<br />8. 함수 목록에 `ami-usage-function` 및 `ami-deregister-function` 함수가 있는지 확인합니다.<br />9. [EventBridge 콘솔](https://console.aws.amazon.com/events/)을 엽니다.<br />10. 탐색 창에서 **규칙**을 선택합니다.<br />11. 규칙 목록에 `ami_usage_events` 및 `ami_deregister_events` 규칙이 있는지 확인합니다. | DevOps 엔지니어 | 

### 모니터링 검증
<a name="validate-monitoring"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| 생성자 계정에 AMI를 생성합니다. | 1. 생성자 계정에 프라이빗 AMI를 생성합니다. 자세한 내용은 [Amazon EC2 인스턴스에서 AMI 생성](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/tkv-create-ami-from-instance.html)을 참조하세요.<br />2. 새 AMI를 소비자 계정 중 하나와 공유합니다. 지침은 [특정와 AMI 공유를 AWS 계정](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sharingamis-explicit.html) 참조하세요. | DevOps 엔지니어 | 
| 소비자 계정에서 AMI 사용. | 소비자 계정에서 공유 AMI를 사용하여 EC2 인스턴스 또는 시작 템플릿을 생성합니다. 지침은 사용자 [지정 AMI(re:Post 지식 센터)에서 Amazon EC2 인스턴스를 시작하는 방법](https://repost.aws/knowledge-center/launch-instance-custom-ami) 또는 [ Auto Scaling 그룹에 대한 시작 템플릿 생성](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html)(Amazon EC2 Auto Scaling 설명서)을 참조하세요.AWS  | DevOps 엔지니어 | 
| 모니터링 및 경고를 검증합니다. | 1. 작성자 계정에 로그인합니다.<br />2. [Amazon EC2 콘솔](https://console.aws.amazon.com/ec2/)을 엽니다.<br />3. 탐색 창에서 **AMI**를 선택합니다.<br />4. 목록에서 AMI를 선택한 후 **작업**, **AMI 권한 수정**을 선택합니다.<br />5. **공유 계정** 섹션에서 소비자 계정을 선택한 다음 **선택한 항목 제거**를 선택합니다.<br />6. **변경 사항 저장**을 선택합니다.<br />7. 소비자 계정에 정의한 대상 이메일 주소에 AMI에 대한 공유가 취소되었다는 알림이 수신되는지 확인합니다. | DevOps 엔지니어 | 

### (선택 사항)공유 AMI 모니터링 중지
<a name="optional-stop-monitoring-shared-amis"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| 리소스를 삭제합니다. | 1. 다음 명령을 입력하여 이 패턴으로 배포된 리소스를 제거하고 공유 AMI의 모니터링을 중단합니다.<pre>terraform destroy</pre><br />2. `yes`를 입력하여 `destroy` 명령을 확인합니다. | DevOps 엔지니어 | 

## 문제 해결
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-troubleshooting"></a>


| 문제 | Solution | 
| --- | --- | 
| 이메일 알림을 받지 못했습니다. | Amazon SES 이메일이 전송되지 않은 데에는 여러 가지 이유가 있을 수 있습니다. 다음을 확인하세요.1. [에픽](#monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-epics) 섹션에서 *리소스 배포 검증* 에픽을 사용하여 인프라가 모두 제대로 프로비저닝되었는지 확인합니다 AWS 계정.<br />2. Amazon CloudWatch Logs에서 Lambda 함수 이벤트를 검증하세요. 지침은 Lambda 설명서의 [CloudWatch 콘솔 사용](https://docs.aws.amazon.com/lambda/latest/dg/python-logging.html#python-logging-cwconsole)을 참조하세요. ID 기반 또는 리소스 기반 정책에 포함된 명시적 거부와 같은 권한 문제가 없는지 확인하세요. 자세한 내용은 IAM 설명서의 [정책 평가 로직](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html)을 참조하세요.<br />3. Amazon SES에서 이메일 주소 ID의 상태가 **확인되었는지** 확인합니다. 자세한 내용은 [이메일 주소 ID 확인](https://docs.aws.amazon.com/ses/latest/dg/creating-identities.html#just-verify-email-proc)을 참조하세요. | 

## 관련 리소스
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-resources"></a>

**AWS 설명서**
+ [Python을 사용한 Lambda 함수 구축](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html)(Lambda 설명서)
+ [AMI 생성](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-ami.html)(Amazon EC2 설명서)
+ [특정 AWS 계정과 AMI 공유 AWS 계정](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sharingamis-explicit.html)(Amazon EC2 설명서)
+ [AMI 등록 취소](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/deregister-ami.html)(Amazon EC2 설명서)

**Terraform 설명서**
+ [Terraform 설치](https://learn.hashicorp.com/tutorials/terraform/install-cli)
+ [Terraform 백엔드 구성](https://www.terraform.io/language/settings/backends/configuration)
+ [Terraform AWS Provider](https://registry.terraform.io/providers/hashicorp/aws/latest/docs)
+ [Terraform 바이너리 다운로드](https://developer.hashicorp.com/terraform/install)