

 AWS Cloud9 는 더 이상 신규 고객이 사용할 수 없습니다. AWS Cloud9 의 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. [자세히 알아보기](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

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

# 에서 환경 작업 AWS Cloud9
<a name="environments"></a>

*개발 환경*은 프로젝트의 파일을 AWS Cloud9 저장하고 도구를 실행하여 애플리케이션을 개발하는 곳입니다.

AWS Cloud9 는 *EC2 환경*과 *SSH* 환경이라는 두 가지 유형의 개발 환경을 제공합니다. 이들 개발 환경 간의 주요 유사성과 차이를 이해하려면 [의 SSH 환경과 비교한 EC2 환경 AWS Cloud9](ec2-env-versus-ssh-env.md) 섹션을 참조하세요.

이러한 주제 중 하나 이상을 AWS Cloud9 읽어에서 환경으로 작업하는 방법을 알아봅니다.

**Topics**
+ [환경 생성](create-environment.md)
+ [Systems Manager를 사용하여 수신하지 않는 EC2 인스턴스에 액세스](ec2-ssm.md)
+ [환경 열기](open-environment.md)
+ [AWS 서비스 환경에서 호출](credentials.md)
+ [환경 설정 변경](change-environment.md)
+ [공유 환경 사용](share-environment.md)
+ [환경 Amazon EBS 볼륨 옮기기](move-environment.md)
+ [환경 삭제](delete-environment.md)

# 에서 환경 생성 AWS Cloud9
<a name="create-environment"></a>

 AWS Cloud9 개발 환경을 생성하려면 사용 계획에 따라 제공된 절차 중 하나를 따릅니다 AWS Cloud9.


****  

|  | 
| --- |
|  무엇을 선택해야 할지 확실하지 않으면 [EC2 환경 생성](create-environment-main.md)하는 것이 좋습니다. 빠른 설정을 위해 EC2 환경을 생성합니다. AWS Cloud9 는 자동으로에서 새 Amazon EC2 인스턴스를 생성하고 설정합니다 AWS 계정. AWS Cloud9 또한는 자동으로 해당 새 인스턴스를 환경에 연결합니다. 개발 환경 간의 주요 유사성과 차이를 이해하려면 [의 SSH 환경과 비교한 EC2 환경 AWS Cloud9](ec2-env-versus-ssh-env.md) 섹션을 참조하세요.  | 


****  

|  **소스 코드 제공자**  |  **개발 환경 호스트 제공자**  |  **관련 절차**  | 
| --- | --- | --- | 
|  사용자  |  AWS Cloud9  |  [EC2 환경 생성](create-environment-main.md)  | 
|  사용자  |  사용자  |  [SSH 환경 생성](create-environment-ssh.md)  | 
|   [Amazon Lightsail](https://aws.amazon.com/lightsail) 또는 사용자  |  사용자(Lightsail 사용)  |   [AWS Cloud9 IDE의 Amazon Lightsail 인스턴스 작업](lightsail-instances.md)   | 
|  사용자([AWS CodePipeline](https://aws.amazon.com/codepipeline) 사용)  |  AWS Cloud9 또는 사용자  |  [EC2](create-environment-main.md) 또는 [SSH](create-environment-ssh.md) 환경 및 [AWS Cloud9 IDE AWS CodePipeline 에서 작업](codepipeline-repos.md) 생성   | 
|  사용자([AWS CodeCommit](https://aws.amazon.com/codecommit) 사용)  |  AWS Cloud9 또는 사용자  |   [AWS CodeCommit 에 대한 자습서 AWS Cloud9](sample-codecommit.md)   | 
|  사용자([GitHub](https://github.com/) 사용)  |  AWS Cloud9 또는 사용자  |  [EC2](create-environment-main.md) 또는 [SSH](create-environment-ssh.md) 환경을 생성하고 [Git 패널 인터페이스](source-control-gitpanel.md) 사용   | 

**Topics**
+ [EC2 환경 생성](create-environment-main.md)
+ [SSH 환경 생성](create-environment-ssh.md)

# EC2 환경 생성
<a name="create-environment-main"></a>

이 절차에서는 EC2 환경과 새 Amazon EC2 인스턴스를 AWS Cloud9 생성하고 환경을이 인스턴스에 연결합니다.는 필요에 따라 인스턴스 시작, 중지 및 재시작을 포함하여이 인스턴스의 수명 주기를 AWS Cloud9 관리합니다. 이 환경을 삭제하면 AWS Cloud9 은 이 인스턴스를 자동으로 종료합니다.

[AWS Cloud9 콘솔](#create-environment-console)에서 또는 [코드를](#create-environment-code) 사용하여 AWS Cloud9 EC2 개발 환경을 생성할 수 있습니다.

**참고**  
이 절차를 완료하면 요금이 발생할 수 있습니다 AWS 계정. 여기에는 Amazon EC2 요금이 포함됩니다. 자세한 내용은 [Amazon EC2 요금](https://aws.amazon.com/ec2/pricing/)을 참조하세요.

**주의**  
 AWS Cloud9 및 AWS Control Tower 선제적 제어 [CT.EC2.PR.8](https://docs.aws.amazon.com/controltower/latest/userguide/ec2-rules.html#ct-ec2-pr-8-description)과 호환성 문제가 있습니다. 이 컨트롤이 활성화되면 AWS Cloud9에서 EC2 환경을 만들 수 없습니다. 이 문제에 대한 자세한 내용은 [문제 해결을 참조하세요 AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/troubleshooting.html#control-tower-rule).

## 사전 조건
<a name="create-env-ec2-prereq"></a>

 AWS Cloud9 콘솔에 로그인하고 환경을 생성할 수 [설 AWS Cloud9정](setting-up.md) 있도록의 단계를 완료합니다.

## 콘솔을 사용한 EC2 환경 생성
<a name="create-environment-console"></a>

1.  AWS Cloud9 콘솔에 로그인합니다.
   + 를 사용하는 유일한 사용자 AWS 계정 이거나 단일에서 IAM 사용자인 경우 [https://console.aws.amazon.com/cloud9/](https://console.aws.amazon.com/cloud9/)://https://https://https://https://https://https://https://https://https://https://https://https://https://https://https://https://https://https AWS 계정://https://https.
   + 조직에서를 사용하는 경우 AWS 계정 관리자에게 로그인 지침을 AWS IAM Identity Center요청합니다.
   + 교실의 학생인 경우 로그인 지침은 강사에게 문의하세요.

1.  AWS Cloud9 콘솔에 로그인한 후 상단 탐색 모음에서 환경을 생성할 AWS 리전 를 선택합니다. 사용 가능한 목록은의 섹션을 AWS 리전참조[AWS Cloud9](https://docs.aws.amazon.com/general/latest/gr/rande.html#cloud9_region)하세요*AWS 일반 참조*.  
![\[AWS AWS Cloud9 콘솔의 리전 선택기\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/consolas_region_new_UX.png)

1. 여기에 나와 있는 위치 중 한 곳에서 큰 [**환경 생성(Create environment)**] 버튼을 선택합니다.

   아직 AWS Cloud9 환경이 없는 경우 시작 페이지에 버튼이 표시됩니다.  
![\[AWS Cloud9 콘솔의 시작 페이지\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/create_welcome_env_new_UX.png)

   이미 AWS Cloud9 환경이 있는 경우 버튼이 다음과 같이 표시됩니다.  
![\[AWS Cloud9 콘솔에서 환경 생성 버튼\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/console_create_env_new_UX.png)

1. **Create environment**(환경 생성) 페이지의 **Name**(이름)에 환경의 이름을 입력합니다.

1. 환경에 설명을 추가하려면 **Description**(설명) 필드에 내용을 입력합니다.

1. **Environment type**(환경 유형)에서 **New EC2 instance**(새 EC2 인스턴스)를 선택하여 Amazon EC2 환경을 만듭니다.
   + **New EC2 instance새 (EC2 인스턴스)** - AWS Cloud9 이 SSH를 통해 직접 연결할 수 있는 새 Amazon EC2 인스턴스를 시작합니다. Systems Manager를 사용하여 새 Amazon EC2 인스턴스와 상호 작용할 수 있습니다. 자세한 내용은 [를 사용하여 수신하지 않는 EC2 인스턴스에 액세스 AWS Systems Manager](ec2-ssm.md) 섹션을 참조하세요.
   + **Existing compute**(기존 컴퓨팅) - SSH 로그인 세부 정보가 필요한 기존 Amazon EC2 인스턴스를 시작합니다. 이 경우 Amazon EC2 인스턴스에 인바운드 보안 그룹 규칙이 있어야 합니다.
     + **Existing compute**(기존 컴퓨팅) 옵션을 선택하면 서비스 역할이 자동으로 생성됩니다. 설정 화면 하단에 표시되는 메모에서 서비스 역할의 이름을 확인할 수 있습니다.
**참고**  
기존 컴퓨팅을 사용하여 Amazon EC2 인스턴스를 사용하여 생성된 AWS Cloud9 환경에서는 자동 종료를 사용할 수 없습니다.
**주의**  
환경의 Amazon EC2 인스턴스를 생성하면 AWS 계정 에 Amazon EC2 요금이 발생할 수 있습니다. Systems Manager를 사용하여 EC2 인스턴스에 대한 연결을 관리하는 데 따른 추가 비용은 없습니다.

1. **Instance type**(인스턴스 유형)에는 수행하려는 작업 유형에 필요하다고 생각되는 양의 RAM 및 vCPU가 있는 인스턴스 유형을 선택합니다.
**주의**  
RAM 및 vCPUs가 더 많은 인스턴스 유형을 선택하면 Amazon EC2에 AWS 계정 대한 추가 요금이 발생할 수 있습니다. 워크로드에 적합한 인스턴스 유형에 대한 자세한 내용은 [Amazon EC2 인스턴스 유형](https://aws.amazon.com/ec2/instance-types/) 페이지를 참조하세요.

1. **플랫폼에서** 원하는 Amazon EC2 인스턴스 유형을 선택합니다. **Amazon Linux 2023**, **Amazon Linux 2** 또는 **Ubuntu 22.04 LTS**. AWS Cloud9 creates the instance를 선택한 다음 환경을 여기에 연결합니다.
**중요**  
EC2 환경에 대해 **Amazon Linux 2023** 옵션을 선택하는 것이 좋습니다. Amazon Linux 2023 AMI는 안전하고 안정적인 고성능 런타임 환경을 제공할 뿐만 아니라 2024년까지 장기적인 지원을 제공합니다.  
자세한 내용은 [AL2023 페이지](https://aws.amazon.com/linux/amazon-linux-2023/)를 참조하십시오.

1. **Timeout**(제한 시간)을 선택합니다. 이 옵션은 AWS Cloud9 이 자동 최대 절전 모드로 전환되기 전까지 비활성 상태를 유지하는 시간을 결정합니다. 환경의 IDE에 연결된 모든 웹 브라우저 인스턴스가 닫히면는 지정된 시간을 기 AWS Cloud9 다린 다음 환경의 Amazon EC2 인스턴스를 종료합니다.
**주의**  
긴 기간을 선택할수록 AWS 계정에 더 많은 요금이 발생할 수 있습니다.

1. **Network settings**(네트워크 설정) 패널에서, 환경에 액세스하는 방법으로 다음 두 가지 옵션 중 하나를 선택합니다.
   + **AWS Systems Manager (SSM)** -이 방법은 인바운드 포트를 열지 않고 SSM을 사용하여 환경에 액세스합니다.
   + **SSH(Secure Shell)** – 이 방법은 SSH를 사용하여 환경에 액세스하며 열린 인바운드 포트가 필요합니다.

1. <a name="create-environment-vpc-step"></a>**VPC 설정을** 선택하여 환경에 대한 Amazon Virtual Private Cloud 및 서브넷을 표시합니다.는 Amazon Virtual Private Cloud(Amazon VPC)를 AWS Cloud9 사용하여 새로 생성된 Amazon EC2 인스턴스와 통신합니다. 이 자습서에서는 미리 선택된 기본 설정을 변경하지 않는 것이 좋습니다. 기본 설정을 사용하면는 새 환경과 동일한 AWS 계정 및 리전에 있는 단일 서브넷과 함께 기본 VPC를 사용하려고 AWS Cloud9 시도합니다. Amazon VPC 설정 방식에 따라 다음 지침 중 하나를 따릅니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/create-environment-main.html)
**중요**  
환경 유형으로 **Existing compute**(기존 컴퓨팅)를 선택한 경우 퍼블릭 또는 프라이빗 서브넷에서 인스턴스를 시작할 수 있습니다.  
**퍼블릭 서브넷(Public subnet)**: 인스턴스 SSM 에이전트가 Systems Manager와 통신할 수 있도록 인터넷 게이트웨이를 서브넷에 연결합니다.
**프라이빗 서브넷(Private subnet)**: 인스턴스가 인터넷 및 다른 AWS 서비스와 통신할 수 있도록 NAT 게이트웨이를 생성합니다.
현재[AWS 는 관리형 임시 자격 증명을](security-iam.md#auth-and-access-control-temporary-managed-credentials) 사용하여 EC2 환경이 IAM 사용자와 같은 AWS 엔터티 AWS 서비스 를 대신하여에 액세스하도록 허용할 수 없습니다.  
 서브넷 구성에 대한 자세한 내용은 [AWS Cloud9 개발 환경에 대한 VPC 설정](vpc-settings.md) 섹션을 참조하세요.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/create-environment-main.html)

   어떤 것을 활용할지에 대해서는 [AWS Cloud9 개발 환경에 대한 VPC 설정](vpc-settings.md) 단원을 참조하세요.

1. 각 태그에 **키**와 **값**을 지정하여 최대 50개의 태그를 추가합니다. **Add new tag**(새 태그 추가)를 선택하면 됩니다. 태그는 리소스 태그로 AWS Cloud9 환경에 연결되며 CloudFormation 스택, Amazon EC2 인스턴스 및 Amazon EC2 보안 그룹의 기본 리소스로 전파됩니다. 태그에 대한 자세한 내용은 *[IAM 사용 설명서](https://docs.aws.amazon.com/IAM/latest/UserGuide/)*의 [AWS 리소스 태그를 사용하여 액세스 제어 및이 설명서의 고급 정보를 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html). [태그](tags.md) 
**주의**  
태그를 생성한 후 이러한 태그를 업데이트하면 변경 사항이 기본 리소스에 전파되지 않습니다. 자세한 내용은 [태그](tags.md)에 대한 고급 정보에서 [기본 리소스에 태그 업데이트 전파](tags.md#tags-propagate) 섹션을 참조하세요.

1. **Create**(생성)를 선택하여 환경을 만들면 홈 페이지로 리디렉션됩니다. 계정이 성공적으로 생성되면 AWS Cloud9 콘솔 상단에 녹색 플래시 바가 나타납니다. 새 환경을 선택하고 **Open in Cloud9**(Cloud9에서 열기)을 선택하여 IDE를 시작할 수 있습니다.  
![\[AWS Cloud9 AWS Cloud9 콘솔의 IDE 선택기\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/cloud9-ide-open.png)

   계정이 생성되지 않으면 AWS Cloud9 콘솔 상단에 빨간색 플래시 바가 나타납니다. 웹 브라우저, AWS 액세스 권한, 인스턴스 또는 연결된 네트워크 관련 문제 때문에 계정이 생성되지 않을 수 있습니다. [AWS Cloud9 문제 해결 섹션](troubleshooting.md#troubleshooting-env-loading)에서 해결 방법 관련 정보를 확인할 수 있습니다.
**참고**  
AWS Cloud9 는 IMDSv1과 IMDSv2를 모두 지원합니다. IMDSv1과 비교하여 향상된 보안 수준을 제공하는 IMDSv2를 채택하는 것이 좋습니다. IMDSv2의 이점에 대한 자세한 내용은 [AWS 보안 블로그](https://aws.amazon.com/blogs/security/defense-in-depth-open-firewalls-reverse-proxies-ssrf-vulnerabilities-ec2-instance-metadata-service/) 섹션을 참조하십시오. IMDSv1에서 IMDSv2로의 전환에 대한 자세한 내용은 *Linux 인스턴스용 Amazon EC2 사용 설명서*의 [인스턴스 메타데이터 서비스 버전 2 사용으로 전환](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-transition-to-version-2.html) 섹션을 참조하십시오.
**참고**  
환경에서 프록시를 사용하여 인터넷에 액세스하는 경우 종속성을 설치할 수 AWS Cloud9 있도록에 프록시 세부 정보를 제공해야 합니다. 자세한 내용은 [종속성을 설치하지 못함](troubleshooting.md#proxy-failed-dependencies) 단원을 참조하십시오.

## 코드를 사용하여 환경 생성
<a name="create-environment-code"></a>

코드를 사용하여에서 EC2 환경을 생성하려면 다음과 같이 EC2 환경 생성 작업을 AWS Cloud9호출 AWS Cloud9 합니다.


****  

|  |  | 
| --- |--- |
|  AWS CLI  |   [create-environment-ec2](https://docs.aws.amazon.com/cli/latest/reference/cloud9/create-environment-ec2.html)   | 
|  AWS SDK for C\$1\$1  |   [CreateEnvironmentEC2Request](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_create_environment_e_c2_request.html), [CreateEnvironmentEC2Result](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_create_environment_e_c2_result.html)   | 
|  AWS SDK for Go  |   [CreateEnvironmentEC2](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.CreateEnvironmentEC2), [CreateEnvironmentEC2Request](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.CreateEnvironmentEC2Request), [CreateEnvironmentEC2WithContext](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.CreateEnvironmentEC2WithContext)   | 
|  AWS SDK for Java  |   CreateEnvironmentEC2Request, CreateEnvironmentEC2Result   | 
|  AWS SDK for JavaScript  |   [createEnvironmentEC2](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Cloud9.html#createEnvironmentEC2-property)   | 
|  AWS SDK for .NET  |   [CreateEnvironmentEC2Request](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TCreateEnvironmentEC2Request.html), [CreateEnvironmentEC2Response](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TCreateEnvironmentEC2Response.html)   | 
|  AWS SDK for PHP  |   [createEnvironmentEC2](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloud9-2017-09-23.html#createenvironmentec2)   | 
|  AWS SDK for Python (Boto)  |   [create\$1environment\$1ec2](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/cloud9.html#Cloud9.Client.create_environment_ec2)   | 
|  AWS SDK for Ruby  |   [create\$1environment\$1ec2](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/Cloud9/Client.html#create_environment_ec2-instance_method)   | 
|  AWS Tools for Windows PowerShell  |   [New-C9EnvironmentEC2](https://docs.aws.amazon.com/powershell/latest/reference/items/New-C9EnvironmentEC2.html)   | 
|  AWS Cloud9 API  |   [CreateEnvironmentEC2](https://docs.aws.amazon.com/cloud9/latest/APIReference/API_CreateEnvironmentEC2.html)   | 

**참고**  
환경에서 프록시를 사용하여 인터넷에 액세스하는 경우 종속성을 설치할 수 AWS Cloud9 있도록에 프록시 세부 정보를 제공해야 합니다. 자세한 내용은 [종속성을 설치하지 못함](troubleshooting.md#proxy-failed-dependencies) 단원을 참조하십시오.

# SSH 환경 생성
<a name="create-environment-ssh"></a>

 AWS Cloud9 콘솔을 사용하여 AWS Cloud9 SSH 개발 환경을 생성합니다. CLI를 사용하여 SSH 환경을 만들 수는 없습니다.

## 사전 조건
<a name="prerequisites"></a>
+ 먼저 [설 AWS Cloud9정](setting-up.md)의 단계를 완료했는지 확인합니다. 이렇게 해야 AWS Cloud9 콘솔에 로그인하여 환경을 생성할 수 있습니다.
+ 환경에 연결 AWS Cloud9 하려는 기존 클라우드 컴퓨팅 인스턴스(예:의 Amazon EC2 인스턴스 AWS 계정) 또는 자체 서버를 식별합니다.
+ 기존 인스턴스 또는 자체 서버가 모든 [SSH 호스트 요구 사항](ssh-settings.md#ssh-settings-requirements)을 충족해야 합니다. 이러한 요구 사항에는 특정 버전의 Python, Node.js 및 기타 구성 요소 설치, 로그인 후 AWS Cloud9 이 시작하도록 할 디렉터리에 대한 특정 권한 설정, 연결된 Amazon Virtual Private Cloud 설정이 포함됩니다.

## SSH 환경 생성
<a name="create-the-envsshtitle"></a>

1. 위의 사전 조건을 완료해야 합니다.

1. 아직 연결되지 않은 경우 SSH 클라이언트를 사용하여 기존 인스턴스 또는 자체 서버에 연결합니다. 이렇게 하면 필요한 공개 SSH 키 값을 인스턴스나 서버에 추가할 수 있습니다. 이 절차의 뒷부분에서 자세하게 설명합니다.
**참고**  
기존 AWS 클라우드 컴퓨팅 인스턴스에 연결하려면 다음 리소스 중 하나 이상을 참조하세요.  
Amazon EC2의 경우 *Amazon EC2 사용 설명서*에서 [Linux 인스턴스에 연결](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html)을 참조하세요.
Amazon Lightsail에 대해서는 **Amazon Lightsail 설명서의 [Linux/UNIX 기반 Lightsail 인스턴스에 연결](https://lightsail.aws.amazon.com/ls/docs/how-to/article/lightsail-how-to-connect-to-your-instance-virtual-private-server)을 참조하세요.
자세한 AWS Elastic Beanstalk내용은 *AWS Elastic Beanstalk 개발자 안내서*의 [서버 인스턴스 나열 및 연결을 참조하세요](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.ec2connect.html).
의 경우 *AWS OpsWorks 사용 설명서*의 [SSH를 사용하여 Linux 인스턴스에 로그인](https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-ssh.html)을 AWS OpsWorks참조하세요.
다른 방법은 해당 특정 서비스에 대한 설명서를 AWS 서비스참조하세요.
자체 서버에 연결하려면 SSH를 사용하세요. SSH는 macOS 및 Linux 운영 체제에서는 이미 설치되어 있습니다. 윈도우에서 SSH를 사용하여 서버에 연결하려면 [PuTTY](https://www.putty.org/)를 설치해야 합니다.

1.  AWS Cloud9 콘솔에 로그인하려면 [https://console.aws.amazon.com/cloud9/](https://console.aws.amazon.com/cloud9/)://.

1.  AWS Cloud9 콘솔에 로그인한 후 상단 탐색 모음에서 환경을 생성할 AWS 리전 를 선택합니다. 사용 가능한 목록은의 섹션을 AWS 리전참조[AWS Cloud9](https://docs.aws.amazon.com/general/latest/gr/rande.html#cloud9_region)하세요*AWS 일반 참조*.  
![\[AWS Cloud9 콘솔의 리전 선택기\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/consolas_region_new_UX.png)

1. 개발 환경을 처음 생성하는 경우 시작 페이지가 표시됩니다. **새 AWS Cloud9 환경** 패널에서 **환경 생성을** 선택합니다.

   이전에 개발 환경을 생성한 경우 화면 왼쪽의 창을 확장합니다. **Your environments**(사용자 환경)를 선택하고 **Create environment**(환경 생성)를 선택합니다.

   **시작** 페이지에서:  
![\[시작 페이지가 표시되면 Create environment(환경 생성) 버튼 선택\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/create_welcome_env_new_UX.png)

   또는 **Your environments**(환경) 페이지에서:  
![\[시작 페이지가 표시되지 않으면 Create environment(환경 생성) 버튼 선택\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/console_create_env_new_UX.png)

1. **Create environment(환경 생성)** 페이지에 환경의 이름을 입력합니다.

1. **Description**(설명)에 환경에 대한 설명을 입력합니다. 본 자습서에서는 `This environment is for the AWS Cloud9 tutorial.`을 사용합니다.

1. **Environment type**(환경 유형)에서는 다음 옵션 중에서 **Existing Compute**(기존 컴퓨팅)를 선택합니다.
   + **새 EC2 인스턴스** - SSH 또는 SSM을 통해에 직접 연결할 AWS Cloud9 수 있는 Amazon EC2 인스턴스를 시작합니다.
   + ** 기존 컴퓨팅 ** - SSH 로그인 세부 정보와 포트 22를 열어야 하는 기존 Amazon EC2 인스턴스를 시작합니다.를 통해 인스턴스에 AWS Cloud9 연결합니다[AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html).
     + **Existing compute**(기존 컴퓨팅) 옵션을 선택하면 서비스 역할이 자동으로 생성됩니다. 인터페이스의 더 아래에 있는 **Systems Manager 액세스를 위한 서비스 역할 및 인스턴스 프로파일** 섹션에서 서비스 역할의 이름을 확인할 수 있습니다. 자세한 내용은 [를 사용하여 수신하지 않는 EC2 인스턴스에 액세스 AWS Systems Manager](ec2-ssm.md) 단원을 참조하십시오.
**주의**  
환경에 대한 EC2 인스턴스를 생성하면 Amazon EC2 AWS 계정 에 대한 요금이에 부과될 수 있습니다. Systems Manager를 사용하여 EC2 인스턴스에 대한 연결을 관리하는 데 따른 추가 비용은 없습니다.
**주의**  
AWS Cloud9 는 SSH 퍼블릭 키를 사용하여 서버에 안전하게 연결합니다. 보안 연결을 설정하려면 다음 단계에서 공개 키를 `~/.ssh/authorized_keys` 파일에 추가하고 로그인 보안 인증 정보를 제공하십시오. **Copy key to clipboard**(클립보드에 키 복사)를 선택하여 SSH 키를 복사하거나, **View public SSH key**(공개 SSH 키 보기)를 선택하여 키를 표시합니다.

1. **Existing compute**(기존 컴퓨팅) 패널의 **User**(사용자)에 이 절차의 앞부분에서 인스턴스 또는 서버에 연결하는 데 사용한 로그인 이름을 입력합니다. 예를 들어 AWS 클라우드 컴퓨팅 인스턴스의 경우 이 값은 `ec2-user`, `ubuntu` 또는 `root`일 수 있습니다.
**참고**  
로그인 이름이 인스턴스 또는 서버의 관리 권한 또는 관리자 사용자와 연결되는 것이 좋습니다. 더 자세히 말하자면, 이 로그인 이름은 인스턴스 또는 서버에서 Node.js 설치를 소유하는 것이 좋습니다. 이를 확인하려면 인스턴스 또는 서버의 터미널에서 ** `ls -l $(which node)` **(또는 `nvm`을 사용하는 경우 ** `ls -l $(nvm which node)` **) 명령을 실행합니다. 이 명령은 Node.js 설치의 소유자 이름을 표시합니다. 설치의 권한, 그룹 이름과 위치도 표시합니다.

1. **Host**(호스트)에 인스턴스 또는 서버의 퍼블릭 IP 주소(기본) 또는 호스트 이름을 입력합니다.

1. **포트에** 인스턴스 또는 서버에 연결하려는 AWS Cloud9 포트를 입력합니다. 또는 기본 포트를 그대로 유지합니다.

1. **Additional details - optional**(추가 상세 정보 - 선택 사항)을 선택하여 환경 경로, node.js 바이너리 경로 및 SSH 점프 호스트 정보를 표시합니다.

1. **환경 경로**에 시작 AWS Cloud9 하려는 인스턴스 또는 서버의 디렉터리 경로를 입력합니다. 이 절차의 사전 요구 사항에서 이를 이미 확인했습니다. 이 항목을 비워 두면 AWS Cloud9 은 로그인 후 인스턴스 또는 서버가 일반적으로 시작되는 디렉터리를 사용합니다. 이 디렉터리는 일반적으로 홈 또는 기본 디렉터리입니다.

1. **Path to Node.js binary path**(Node.js 바이너리 경로로 가는 경로)에 경로 정보를 입력하여, 인스턴스 또는 서버의 Node.js 바이너리로 가는 경로를 지정합니다. 경로를 가져오려면 인스턴스 또는 서버에서 **`which node`**(또는 `nvm`을 사용하는 경우 ** `nvm which node` **) 명령을 실행할 수 있습니다. 예를 들어 이 경로는 `/usr/bin/node`일 수 있습니다. 이 항목을 비워 두면 AWS Cloud9 은 연결을 시도할 때 Node.js 바이너리의 위치를 추측합니다.

1. **SSH jump host**(SSH 점프 호스트)에 인스턴스 또는 서버가 사용하는 점프 호스트에 대한 정보를 입력합니다. 형식 `USER_NAME@HOSTNAME:PORT_NUMBER`(예:`ec2-user@ip-192-0-2-0:22`)를 사용합니다.

   점프 호스트는 다음 요구 사항을 충족해야 합니다.
   + SSH를 사용하여 퍼블릭 인터넷을 통해 접근 가능해야 합니다.
   + 지정된 포트를 통해 어떤 IP 주소에서든 인바운드 액세스를 허용해야 합니다.
   + 기존 인스턴스 또는 서버의 `~/.ssh/authorized_keys` 파일에 복사된 퍼블릭 SSH 키 값을 점프 호스트의 `~/.ssh/authorized_keys` 파일에도 복사해야 합니다.
   + Netcat이 설치되어 있어야 합니다.

1. 각 태그에 **키**와 **값**을 지정하여 최대 50개의 태그를 추가합니다. **Add new tag**(새 태그 추가)를 선택하면 됩니다. 태그는 리소스 태그로 AWS Cloud9 환경에 연결되며 CloudFormation 스택, Amazon EC2 인스턴스 및 Amazon EC2 보안 그룹의 기본 리소스로 전파됩니다. 태그에 대한 자세한 내용은 *[IAM 사용 설명서](https://docs.aws.amazon.com/IAM/latest/UserGuide/)*의 [AWS 리소스 태그를 사용하여 액세스 제어](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html) 및이 설명서의 태그에 대한 [고급 정보를](tags.md) 참조하세요.
**주의**  
태그를 생성한 후 이러한 태그를 업데이트하면 변경 사항이 기본 리소스에 전파되지 않습니다. 자세한 내용은 [태그](tags.md)에 대한 고급 정보에서 [기본 리소스에 태그 업데이트 전파](tags.md#tags-propagate) 섹션을 참조하세요.

1. **Create**(생성)를 선택하여 환경을 만들면 홈 페이지로 리디렉션됩니다. 계정이 성공적으로 생성되면 AWS Cloud9 콘솔 상단에 녹색 플래시 막대가 나타납니다. 새 환경을 선택하고 **Open in Cloud9**(Cloud9에서 열기)을 선택하여 IDE를 시작할 수 있습니다.  
![\[AWS Cloud9 AWS Cloud9 콘솔의 IDE 선택기\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/cloud9-ide-open.png)

   계정이 생성되지 못하면 AWS Cloud9 콘솔 상단에 적색 플래시바가 나타납니다. 웹 브라우저, AWS 액세스 권한, 인스턴스 또는 연결된 네트워크의 문제로 인해 계정이 생성되지 않을 수 있습니다. 계정 장애를 일으킬 수 있는 문제를 해결하는 방법 관련 정보는 [AWS Cloud9 문제 해결 섹션](troubleshooting.md#troubleshooting-env-loading)에서 확인할 수 있습니다.

**참고**  
환경에서 프록시를 사용하여 인터넷에 액세스하는 경우 종속성을 설치할 수 AWS Cloud9 있도록에 프록시 세부 정보를 제공해야 합니다. 자세한 내용은 [종속성을 설치하지 못함](troubleshooting.md#proxy-failed-dependencies) 단원을 참조하십시오.

# 를 사용하여 수신하지 않는 EC2 인스턴스에 액세스 AWS Systems Manager
<a name="ec2-ssm"></a>

EC2 환경을 위해 생성된 "노인그레스 EC2 인스턴스"를 사용하면 해당 인스턴스에서 인바운드 포트를 열 필요 없이가 Amazon EC2 인스턴스에 AWS Cloud9 연결할 수 있습니다. 콘솔, 명령줄 인터페이스 또는 [CloudFormation 스택](#cfn-role-and-permissions)을 사용하여 EC2 환경을 생성할 때 수신 안 함 옵션을 선택할 수 있습니다. 콘솔 또는 명령줄 인터페이스를 사용하여 환경을 생성하는 방법의 자세한 내용은 [단계 1: 환경 조성](tutorials-basic.md#tutorial-create-environment) 섹션을 참조하세요.

**중요**  
Systems Manager 세션 관리자를 사용하여 EC2 인스턴스에 대한 연결을 관리하는 데 따른 추가 요금은 없습니다.

 콘솔의 **Create environment**(환경 생성) 섹션에서 환경 유형을 선택할 때, 인바운드 연결이 필요한 새 EC2 인스턴스 또는 다음 사항이 필요 없는 수신되지 않는 새 EC2 인스턴스를 선택할 수 있습니다.
+ **[새 EC2 인스턴스](create-environment-main.md#create-environment-console)** – 이 설정을 사용하면 인스턴스의 보안 그룹에 수신 네트워킹 트래픽을 허용하는 규칙이 포함됩니다. 수신 네트워크 트래픽은 [AWS Cloud9 연결용으로 승인된 IP 주소](ip-ranges.md)로 제한됩니다. 열린 인바운드 포트를 사용하면가 SSH AWS Cloud9 를 통해 인스턴스에 연결할 수 있습니다. AWS Systems Manager Session Manager를 사용하는 경우 인바운드 포트를 열지 않고(수신하지 않고) SSM을 통해 Amazon EC2 인스턴스에 액세스할 수 있습니다. 이 방법은 새 Amazon EC2 인스턴스에만 적용됩니다. 자세한 내용은 [EC2 환경에 Systems Manager 사용하는 데 따른 이점](#ssm-benefits) 단원을 참조하십시오.
+ **[기존 컴퓨팅](create-environment-main.md#create-environment-console)** - 이 설정을 사용하면 SSH 로그인 세부 정보가 필요한 기존 Amazon EC2 인스턴스에 액세스할 수 있으며, 이 경우 인스턴스에 인바운드 보안 그룹 규칙이 있어야 합니다. 이 옵션을 선택하면 서비스 역할이 자동으로 생성됩니다. 설정 화면 하단에 표시되는 메모에서 서비스 역할의 이름을 확인할 수 있습니다.

[AWS CLI](tutorials-basic.md#tutorial-create-environment)를 사용하여 환경을 생성하는 경우 `create-environment-ec2` 명령을 호출할 때 `--connection-type CONNECT_SSM` 옵션을 설정하여 수신하지 않는 EC2 인스턴스를 구성할 수 있습니다. 필요한 서비스 역할 및 인스턴스 프로파일을 생성하는 방법에 대한 자세한 내용은 [를 사용하여 Systems Manager의 인스턴스 프로파일 관리 AWS CLI](#aws-cli-instance-profiles) 섹션을 참조하세요.

수신하지 않는 EC2 인스턴스를 사용하는 환경의 생성을 완료한 후 다음을 확인합니다.
+ Systems Manager Session Manager에는 사용자를 대신하여 EC2 인스턴스에 대한 작업을 수행할 수 있는 권한이 있습니다. 자세한 내용은 [Systems Manager 권한 관리](#service-role-ssm) 단원을 참조하십시오.
+ AWS Cloud9 사용자는 Session Manager에서 관리하는 인스턴스에 액세스할 수 있습니다. 자세한 내용은 [사용자에게 세션 관리자에서 관리하는 인스턴스에 대한 액세스 권한 부여](#access-ec2-session) 단원을 참조하십시오.

## EC2 환경에 Systems Manager 사용하는 데 따른 이점
<a name="ssm-benefits"></a>

[Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html)가 AWS Cloud9 와 EC2 인스턴스 간의 보안 연결을 처리하도록 허용하면 두 가지 주요 이점이 있습니다.
+ 인스턴스를 위해 인바운드 포트를 열어야 하는 요구 사항 없음
+ 퍼블릭 또는 프라이빗 서브넷으로 인스턴스를 시작하는 옵션

------
#### [ No open inbound ports ]

 AWS Cloud9 와 EC2 인스턴스 간의 보안 연결은 [Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html)에서 처리합니다. Session Manager는 인바운드 포트를 열지 않고도 AWS Cloud9 가 EC2 인스턴스에 연결할 수 있는 완전 관리형 Systems Manager 기능입니다.

**중요**  
수신하지 않는 연결에 Systems Manager를 사용하는 옵션은 현재 새 EC2 환경을 생성할 때만 사용할 수 있습니다.

 세션 관리자 세션이 시작되면 대상 인스턴스에 대한 연결이 설정됩니다. 연결이 설정되면 이제 환경이 Systems Manager 서비스를 통해 인스턴스와 상호 작용할 수 있습니다. Systems Manager 서비스는 Systems Manager Agent([SSM Agent](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html))를 통해 인스턴스와 통신합니다.

SSM Agent는 EC2 환경에서 사용되는 모든 인스턴스에 기본적으로 설치됩니다.

------
#### [ Private/public subnets ]

[**네트워크 설정(고급)(Network settings (advanced))**] 섹션에서 인스턴스의 서브넷을 선택할 때, 환경의 인스턴스가 Systems Manager를 통해 액세스되는 경우 프라이빗 또는 퍼블릭 서브넷을 선택할 수 있습니다.

![\[환경에 대해 수신하지 않는 새 EC2 인스턴스 선택\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/private-subnet-option.png)


**프라이빗 서브넷**

프라이빗 서브넷의 경우 인스턴스가 SSM 서비스에 계속 연결할 수 있는지 확인합니다. 이는 [퍼블릭 서브넷에 NAT 게이트웨이를 설정](https://aws.amazon.com/premiumsupport/knowledge-center/nat-gateway-vpc-private-subnet)하거나 [Systems Manager를 위한 VPC 엔드포인트를 구성](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-systems-manager-vpc-endpoints)하는 방법으로 수행할 수 있습니다.

NAT 게이트웨이를 사용하면 인터넷이 프라이빗 서브넷의 인스턴스에 대한 연결을 시작하지 못한다는 이점이 있습니다. 사용자 환경의 인스턴스에는 퍼블릭 IP 주소 대신 프라이빗 IP 주소가 할당됩니다. 따라서 NAT 게이트웨이는 인스턴스에서 인터넷 또는 기타 AWS 서비스로 트래픽을 전달한 다음 응답을 인스턴스로 다시 보냅니다.

VPC 옵션의 경우 Systems Manager를 위한 최소 3개의 필수 *인터페이스 엔드포인트*, 즉 *com.amazonaws.region.ssm*, *com.amazonaws.region.ec2messages*, *com.amazonaws.region.ssmmessages*를 생성합니다. 자세한 내용은 *AWS Systems Manager 사용 설명서*에서 [Systems Manager를 위한 VPC 엔드포인트 생성](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-create-vpc.html#sysman-setting-up-vpc-create)을 참조하세요.

**중요**  
현재 환경의 EC2 인스턴스가 프라이빗 서브넷으로 시작되는 경우 [AWS 관리형 임시 자격 증명을](security-iam.md#auth-and-access-control-temporary-managed-credentials) 사용하여 EC2 환경이 AWS 엔터티(예: IAM 사용자)를 대신하여 AWS 서비스에 액세스하도록 허용할 수 없습니다.

**퍼블릭 서브넷**

개발 환경에서 SSM을 사용하여 EC2 인스턴스에 액세스하는 경우 인스턴스가 시작된 퍼블릭 서브넷에 의해 인스턴스에 퍼블릭 IP 주소가 할당되었는지 확인합니다. 이렇게 하려면 고유한 IP 주소를 지정하거나 퍼블릭 IP 주소의 자동 할당을 사용하도록 설정할 수 있습니다. IP 설정 자동 할당 수정과 관련된 단계는 *Amazon VPC 사용 설명서*에서 [VPC의 IP 주소 지정](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html)을 참조하세요.

환경 인스턴스의 프라이빗 및 퍼블릭 서브넷을 구성하는 방법에 대한 자세한 내용은 [에 대한 서브넷 생성 AWS Cloud9](vpc-settings.md#vpc-settings-create-subnet) 섹션을 참조하세요.

------

## Systems Manager 권한 관리
<a name="service-role-ssm"></a>

Systems Manager는 기본적으로 EC2 인스턴스에서 작업을 수행할 권한이 없습니다. 액세스는 AWS Identity and Access Management (IAM) 인스턴스 프로파일을 통해 제공됩니다. (인스턴스 프로파일은 시작할 때 IAM 역할 정보를 EC2 인스턴스에 전달하는 컨테이너입니다.)

 AWS Cloud9 콘솔을 사용하여 수신하지 않는 EC2 인스턴스를 생성하면 서비스 역할(`AWSCloud9SSMAccessRole`)과 IAM 인스턴스 프로파일(`AWSCloud9SSMInstanceProfile`)이 모두 자동으로 생성됩니다. (`AWSCloud9SSMAccessRole`을 IAM 관리 콘솔에서 확인할 수 있습니다. 인스턴스 프로파일은 IAM 콘솔에 표시되지 않습니다.) 

**중요**  
를 사용하여 수신하지 않는 EC2 환경을 처음 생성하는 경우 필요한 서비스 역할 및 인스턴스 프로파일을 명시적으로 정의 AWS CLI해야 합니다. 자세한 내용은 [를 사용하여 Systems Manager의 인스턴스 프로파일 관리 AWS CLI](#aws-cli-instance-profiles) 단원을 참조하십시오.

**중요**  
 AWS Cloud9 환경을 생성하고 `AWSCloud9Administrator` 또는 `AWSCloud9User` 정책이 연결된 Amazon EC2 Systems Manager를 사용하는 경우 특정 IAM 권한이 있는 사용자 지정 정책도 연결해야 합니다. 섹션을 참조하세요[SSM 환경 생성을 위한 사용자 지정 IAM 정책](security-iam.md#custom-policy-ssm-environment). 이는 `AWSCloud9Administrator` 및 `AWSCloud9User` 정책의 권한 문제 때문입니다.

추가 보안 보호를 위해 AWS Cloud9 서비스 연결 역할인 `AWSServiceRoleforAWSCloud9`에는 `AWSCloud9ServiceRolePolicy` 정책에 `PassRole` 제한이 있습니다. IAM 역할을 서비스에 *전달(pass)*할 경우, 해당 서비스가 역할을 수임하고 사용자 대신 작업을 수행할 수 있습니다. 이 경우 `PassRole` 권한은가 `AWSCloud9SSMAccessRole` 역할(및 권한)만 EC2 인스턴스에 AWS Cloud9 전달할 수 있도록 합니다. 이렇게 하면 EC2 인스턴스에 대해 수행할 수 있는 작업이 AWS Cloud9에 필요한 작업만으로 제한됩니다.

**참고**  
인스턴스에 액세스하기 위해 Systems Manager를 더 이상 사용할 필요가 없는 경우 `AWSCloud9SSMAccessRole` 서비스 역할을 삭제할 수 있습니다. 자세한 내용은 *IAM 사용 설명서*에서 [역할 또는 인스턴스 프로필 삭제](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_delete.html)를 참조하세요.

### 를 사용하여 Systems Manager의 인스턴스 프로파일 관리 AWS CLI
<a name="aws-cli-instance-profiles"></a>

 AWS CLI를 사용하여, 수신하지 않는 EC2 환경을 생성할 수도 있습니다. `create-environment-ec2`를 호출할 때 `--connection-type` 옵션을 `CONNECT_SSM`으로 설정합니다.

이 옵션을 사용하면 `AWSCloud9SSMAccessRole` 서비스 역할 및 `AWSCloud9SSMInstanceProfile`이 자동으로 생성되지 않습니다. 따라서 다음 중 하나를 수행하여 필요한 서비스 프로파일과 인스턴스 프로파일을 생성합니다.
+ 이후 `AWSCloud9SSMAccessRole` 서비스 역할과 `AWSCloud9SSMInstanceProfile`이 자동으로 생성되고 나면 콘솔을 사용하여 EC2 환경을 생성합니다. 생성된 서비스 역할 및 인스턴스 프로파일은 AWS CLI를 사용하여 생성한 모든 추가 EC2 환경에 사용할 수 있습니다.
+ 다음 AWS CLI 명령을 실행하여 서비스 역할 및 인스턴스 프로파일을 생성합니다.

  ```
  aws iam create-role --role-name AWSCloud9SSMAccessRole --path /service-role/ --assume-role-policy-document '{"Version": "2012-10-17",		 	 	 "Statement": [{"Effect": "Allow","Principal": {"Service": ["ec2.amazonaws.com","cloud9.amazonaws.com"]      },"Action": "sts:AssumeRole"}]}'
  aws iam attach-role-policy --role-name AWSCloud9SSMAccessRole --policy-arn arn:aws:iam::aws:policy/AWSCloud9SSMInstanceProfile
  aws iam create-instance-profile --instance-profile-name AWSCloud9SSMInstanceProfile --path /cloud9/
  aws iam add-role-to-instance-profile --instance-profile-name AWSCloud9SSMInstanceProfile --role-name AWSCloud9SSMAccessRole
  ```

## 사용자에게 세션 관리자에서 관리하는 인스턴스에 대한 액세스 권한 부여
<a name="access-ec2-session"></a>

Systems Manager를 통해 EC2 인스턴스에 연결된 AWS Cloud9 환경을 열려면 사용자에게 API 작업에 대한 권한이 있어야 합니다`StartSession`. 이 작업은 세션 관리자 세션을 위해 관리형 EC2 인스턴스에 대한 연결을 시작합니다. AWS Cloud9 특정 관리형 정책(권장)을 사용하거나 IAM 정책을 편집하고 필요한 권한을 추가하여 사용자에게 액세스 권한을 부여할 수 있습니다.


****  

| 방법 | 설명 | 
| --- | --- | 
|  사용 AWS Cloud9별 관리형 정책  |  사용자가 Systems Manager에서 관리하는 EC2 인스턴스에 액세스할 수 있도록 관리형 AWS 정책을 사용하는 것이 좋습니다. 관리형 정책은 표준 AWS Cloud9 사용 사례에 대한 일련의 권한을 제공하며 IAM 엔터티에 쉽게 연결할 수 있습니다. 또한 모든 관리형 정책에는 `StartSession` API 작업을 실행할 권한이 포함되어 있습니다. 다음은 관련 관리형 정책입니다 AWS Cloud9. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/ec2-ssm.html)   AWS Cloud9 환경을 생성하고 `AWSCloud9Administrator` 또는 `AWSCloud9User` 정책이 연결된 Amazon EC2 Systems Manager를 사용하는 경우 특정 IAM 권한이 있는 사용자 지정 정책도 연결해야 합니다. 섹션을 참조하세요[SSM 환경 생성을 위한 사용자 지정 IAM 정책](security-iam.md#custom-policy-ssm-environment). 이는 `AWSCloud9Administrator` 및 `AWSCloud9User` 정책의 권한 문제 때문입니다.  자세한 내용은 [AWS 에 대한 관리형 정책 AWS Cloud9](security-iam.md#auth-and-access-control-managed-policies) 단원을 참조하십시오.  | 
|  IAM 정책 편집 및 필요한 정책 문 추가  |  기존 정책을 편집하려면 `StartSession` API에 대한 권한을 추가하면 됩니다. AWS Management Console 또는를 사용하여 정책을 편집하려면 [IAM 사용 설명서의 IAM 정책 편집](https://docs.aws.amazon.com/IAM/latest/UserGuide/#edit-managed-policy-console)에서 제공하는 지침을 AWS CLI따릅니다. **  정책을 편집할 때 `ssm:startSession` API 작업을 실행되도록 하는 [policy statement](#policy-statement)(다음 참조)을 추가합니다.  | 

다음 권한을 사용하여 `StartSession` API 작업을 실행할 수 있습니다. `ssm:resourceTag` 조건 키는 인스턴스가 a AWS Cloud9 EC2 개발 환경(`Resource: arn:aws:ec2:*:*:instance/*`)인 조건에서 모든 인스턴스()에 대해 세션 관리자 세션을 시작할 수 있도록 지정합니다`aws:cloud9:environment`.

**참고**  
다음 관리형 정책에는 `AWSCloud9Administrator`, `AWSCloud9User` 및 `AWSCloud9EnvironmentMember` 정책 문도 포함되어 있습니다.

```
{
            "Effect": "Allow",
            "Action": "ssm:StartSession",
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "StringLike": {
                    "ssm:resourceTag/aws:cloud9:environment": "*"
                },
                "StringEquals": {
                    "aws:CalledViaFirst": "cloud9.amazonaws.com"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:document/*"
            ]
        }
```

## CloudFormation 를 사용하여 수신하지 않는 EC2 환경 생성
<a name="cfn-role-and-permissions"></a>

[CloudFormation 템플릿](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloud9-environmentec2.html)를 사용하여 수신하지 않는 Amazon EC2 개발 환경을 정의할 경우, 스택을 생성하기 전에 다음을 수행합니다.

1. `AWSCloud9SSMAccessRole` 서비스 역할 및 `AWSCloud9SSMInstanceProfile` 인스턴스 프로파일을 생성합니다. 자세한 내용은 [CloudFormation 템플릿을 사용하여 서비스 역할 및 인스턴스 프로파일 생성](#creating-cfn-instance-profile) 단원을 참조하십시오.

1. IAM 엔터티 호출에 대한 정책을 업데이트합니다 CloudFormation. 이렇게 하면 해당 엔터티는 EC2 인스턴스에 연결하는 Session Manager 세션을 시작할 수 있습니다. 자세한 내용은 [IAM 정책에 Systems Manager 권한 추가](#updating-IAM-policy) 단원을 참조하십시오.

### CloudFormation 템플릿을 사용하여 서비스 역할 및 인스턴스 프로파일 생성
<a name="creating-cfn-instance-profile"></a>

Systems Manager가 개발 환경을 지원하는 EC2 인스턴스를 관리할 수 있도록 서비스 역할 `AWSCloud9SSMAccessRole` 및 인스턴스 프로파일 `AWSCloud9SSMInstanceProfile`을 생성해야 합니다.

이전에 수신하지 않는 EC2 환경을 생성[with the console](#using-the-console)하거나 [AWS CLI 명령을 실행](#aws-cli-instance-profiles)`AWSCloud9SSMInstanceProfile`하여 `AWSCloud9SSMAccessRole` 및를 생성한 경우 서비스 역할 및 인스턴스 프로파일을 이미 사용할 수 있습니다.

**참고**  
수신하지 않는 EC2 환경에 대한 CloudFormation 스택을 생성하려고 하지만 먼저 필요한 서비스 역할 및 인스턴스 프로파일을 생성하지 않았다고 가정해 보겠습니다. 그러면 스택이 생성되지 않고 다음과 같은 오류 메시지가 표시됩니다.  
Instance profile AWSCloud9SSMInstanceProfile does not exist in account(인스턴스 프로파일 AWSCloud9SSMInstanceProfile이 계정에 없습니다.)

를 사용하여 수신하지 않는 EC2 환경을 처음 생성할 때 템플릿에서 `AWSCloud9SSMAccessRole` 및를 IAM 리소스`AWSCloud9SSMInstanceProfile`로 정의할 CloudFormation수 있습니다.

샘플 템플릿에서 발췌한 이 코드는 이러한 리소스를 정의하는 방법을 보여줍니다. `AssumeRole` 작업은 AWS Cloud9 환경과 해당 EC2 인스턴스 모두에 대한 액세스를 제공하는 보안 자격 증명을 반환합니다.

```
AWSTemplateFormatVersion: 2010-09-09
Resources: 
  AWSCloud9SSMAccessRole:
    Type: AWS::IAM::Role
    Properties: 
      AssumeRolePolicyDocument:
        Version: 2012-10-17		 	 	 
        Statement:
          - Effect: Allow
            Principal:
              Service:
              - cloud9.amazonaws.com
              - ec2.amazonaws.com
            Action:
              - 'sts:AssumeRole'
      Description: 'Service linked role for AWS Cloud9'
      Path: '/service-role/'
      ManagedPolicyArns: 
        - arn:aws:iam::aws:policy/AWSCloud9SSMInstanceProfile
      RoleName: 'AWSCloud9SSMAccessRole'

  AWSCloud9SSMInstanceProfile:
    Type: "AWS::IAM::InstanceProfile"
    Properties: 
      InstanceProfileName: AWSCloud9SSMInstanceProfile
      Path: "/cloud9/"
      Roles: 
        - 
          Ref: AWSCloud9SSMAccessRole
```

### IAM 정책에 Systems Manager 권한 추가
<a name="updating-IAM-policy"></a>

[CloudFormation 템플릿](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloud9-environmentec2.html)에 [서비스 역할과 인스턴스 프로파일을 정의](#creating-cfn-instance-profile)한 후에는 스택을 생성하는 IAM 엔터티에 Session Manager 세션을 시작할 권한이 있는지 확인해야 합니다. 세션은 Session Manager를 사용한 EC2 인스턴스에 대한 연결입니다.

**참고**  
수신하지 않는 EC2 환경을 위한 스택을 생성하기 전에 세션 관리자 세션을 시작할 권한을 추가하지 않으면 `AccessDeniedException` 오류가 반환됩니다.

 CloudFormation을 호출하여 IAM 엔터티에 대한 정책에 다음 권한을 추가합니다.

```
{
            "Effect": "Allow",
            "Action": "ssm:StartSession",
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "StringLike": {
                    "ssm:resourceTag/aws:cloud9:environment": "*"
                },
                "StringEquals": {
                    "aws:CalledViaFirst": "cloudformation.amazonaws.com"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:document/*"
            ]
        }
```

## 종속 구성 요소를 다운로드하도록 Amazon S3의 VPC 엔드포인트 구성
<a name="configure-s3-endpoint"></a>

 AWS Cloud9 환경의 EC2 인스턴스가 인터넷에 액세스할 수 없는 경우 지정된 Amazon S3 버킷에 대한 VPC 엔드포인트를 생성합니다. 이 버킷에는 IDE를 최신 상태로 유지하는 데 필요한 종속 구성 요소가 포함되어 있습니다.

또한 Amazon S3 VPC 엔드포인트를 설정하려면 액세스 정책을 사용자 지정해야 합니다. 액세스 정책에서는 다운로드할 종속 구성 요소가 포함된 신뢰할 수 있는 S3 버킷에 대한 액세스만 허용하고자 합니다.

**참고**  
 AWS Management Console AWS CLI또는 Amazon VPC API를 사용하여 VPC 엔드포인트를 생성하고 구성할 수 있습니다. 아래의 절차에서는 콘솔 인터페이스를 사용하여 VPC 엔드포인트를 생성하는 방법을 보여줍니다.<a name="create-s3-endpoint"></a>

## Amazon S3의 VPC 엔드포인트 생성 및 구성
<a name="create-s3-endpoint"></a>

1. 에서 Amazon VPC의 콘솔 페이지로 AWS Management Console이동합니다.

1. 탐색 모음에서 [**엔드포인트(Endpoints)**]를 선택합니다.

1. [**엔드포인트(Endpoints)**] 페이지에서 [**엔드포인트 생성(Create Endpoint)**]을 선택합니다.

1. **Create Endpoint**(엔드포인트 생성) 페이지에서 검색 필드에 ‘s3’를 입력하고 **Return** 키를 눌러 현재 AWS 리전의 Amazon S3에 사용 가능한 엔드포인트를 나열합니다.

1. 반환된 Amazon S3 엔드포인트 목록에서 [**게이트웨이(Gateway)**] 유형을 선택합니다.

1. 그런 다음, 환경의 EC2 인스턴스가 포함된 VPC 선택합니다.

1. 이제 VPC의 라우팅 테이블을 선택합니다. 이렇게 하면 연결된 서브넷이 엔드포인트에 액세스할 수 있습니다. 환경의 EC2 인스턴스는 이들 서브넷 중 하나에 있습니다.

1. **Policy**(정책) 섹션에서 **Custom**(사용자 지정) 옵션을 선택하고 표준 정책을 다음으로 바꿉니다.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
         {
             "Sid": "Access-to-C9-bucket-only",
             "Effect": "Allow",
             "Principal": "*",
             "Action": "s3:GetObject",
             "Resource": "arn:aws:s3:::{bucket_name}/content/dependencies/*"
         }
     ]
   }
   ```

------

   `Resource` 요소의 경우 `{bucket_name}`을 AWS 리전에서 사용 가능한 버킷의 실제 이름으로 바꿉니다. 예를 들어 유럽(아일랜드) 리전 AWS Cloud9 에서를 사용하는 경우를 지정합니다`"Resource": "arn:aws:s3:::static-eu-west-1-prod-static-hld3vzaf7c4h/content/dependencies/`.

   다음 표에는를 사용할 수 AWS 리전 있는 AWS Cloud9 의 버킷 이름이 나열되어 있습니다.  
**AWS Cloud9 리전의 Amazon S3 버킷**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/ec2-ssm.html)

1. **엔드포인트 생성**을 선택합니다.

   올바른 구성 정보를 제공한 경우, 생성된 엔드포인트의 ID가 메시지에 표시됩니다.

1. IDE가 Amazon S3 버킷에 액세스할 수 있는지 확인하려면 메뉴 모음에서 [**창(Window)**], [**새 터미널(New Terminal)**]을 선택하여 터미널 세션을 시작합니다. 그리고 나서 다음 명령을 실행하여 `{bucket_name}`을 해당 리전용 버킷의 실제 이름으로 바꿉니다.

   ```
   ping {bucket_name}.s3.{region}.amazonaws.com.
   ```

   예를 들어 S3 버킷에 대한 엔드포인트를 미국 동부(버지니아 북부) 리전에서 생성한 경우 다음 명령을 실행합니다.

   ```
   ping static-us-east-1-prod-static-mft1klnkc4hl.s3.us-east-1.amazonaws.com
   ```

   ping 응답을 받으면 이는 IDE가 버킷 및 해당 종속 구성 요소에 액세스할 수 있음을 의미합니다.

이 기능에 관한 자세한 내용은 *AWS PrivateLink 가이드*에서 [Amazon S3의 엔드포인트](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html)를 참조하세요.

## 프라이빗 연결을 위한 VPC 엔드포인트 구성
<a name="configure-no-egress"></a>

**Systems Manager를 이용한 액세스** 옵션을 사용하여 서브넷에서 인스턴스를 시작할 경우, 해당 보안 그룹에는 들어오는 네트워크 트래픽을 허용하는 인바운드 규칙이 없습니다. 하지만 이 보안 그룹에는 인스턴스의 아웃바운드 트래픽을 허용하는 아웃바운드 규칙이 있습니다. 이는 AWS Cloud9 IDE를 최신 상태로 유지하는 데 필요한 패키지와 라이브러리를 다운로드하는 데 필요합니다.

인스턴스에 대한 아웃바운드 및 인바운드 트래픽을 방지하려면 Systems Manager용 Amazon VPC 엔드포인트를 생성하고 구성하세요. 인터페이스 VPC 엔드포인트(인터페이스 엔드포인트)를 사용하면 로 구동되는 서비스에 연결할 수 있습니다[AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-share-your-services.html). AWS PrivateLink 는 프라이빗 IP 주소를 사용하여 Amazon EC2 및 Systems Manager APIs로 액세스하는 데 사용할 수 있는 기술입니다. Systems Manager를 사용하도록 VPC 엔드포인트를 구성하려면 이 [지식 센터 리소스](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-systems-manager-vpc-endpoints/)에서 제공하는 지침을 따르세요.

**주의**  
인바운드 또는 아웃바운드 네트워킹 트래픽을 허용하지 않는 보안 그룹을 구성한다고 가정해 보겠습니다. 그러면 AWS Cloud9 IDE를 지원하는 EC2 인스턴스에 인터넷 액세스 권한이 없습니다. [VPC용 Amazon S3 엔드포인트](#configure-s3-endpoint)를 생성하여 신뢰할 수 있는 S3 버킷에 포함된 종속 구성 요소에 대한 액세스를 허용해야 합니다. 또한 AWS 서비스와 같은 일부는 인터넷 액세스 없이 의도한 대로 작동하지 않을 AWS Lambda수 있습니다.  
 AWS PrivateLink를 사용하면 VPC 엔드포인트를 통해 처리되는 각 기가바이트에 대한 데이터 처리 요금이 부과됩니다. 이는 트래픽의 소스 또는 대상에 관계없이 적용됩니다. 자세한 내용은 [AWS PrivateLink 요금](https://aws.amazon.com/privatelink/pricing/)을 참조하십시오.

# 에서 환경 열기 AWS Cloud9
<a name="open-environment"></a>

이 절차에서는 AWS Cloud9에서 환경을 여는 방법을 설명합니다.

**참고**  
이 절차에서는 AWS Cloud9 개발 환경을 이미 생성했다고 가정합니다. 환경을 생성하려면 [환경 생성](create-environment.md)을 참조하세요.

1. 다음과 같이 AWS Cloud9 콘솔에 로그인합니다.
   + 를 사용하는 유일한 사용자 AWS 계정 이거나 단일에서 IAM 사용자인 경우 [https://console.aws.amazon.com/cloud9/](https://console.aws.amazon.com/cloud9/)://https://https://https://https://https://https://https://https://https://https://https://https://https://https://https://https://https://https:// AWS 계정 https://http://https://http
   + 조직에서를 사용하는 경우 AWS 계정 관리자에게 로그인 지침을 AWS IAM Identity Center요청합니다.
**중요**  
[에서 로그아웃 AWS 계정](https://aws.amazon.com/premiumsupport/knowledge-center/sign-out-account/)해도 이후 최대 5분 동안 AWS Cloud9 IDE에 계속 액세스할 수 있습니다. 필요한 권한이 만료되면 액세스가 거부됩니다.

1. 상단 탐색 모음에서 환경이 AWS 리전 위치한를 선택합니다.  
![\[AWS 리전 AWS Cloud9 콘솔의 선택기\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/consolas_region_new_UX.png)

1. 환경 목록에서 열려는 환경에 대해 다음 작업 중 하나를 수행합니다.
   + 카드 내에서 **Open in Cloud9(Cloud9에서 열기)** 링크를 선택합니다.
   + 카드를 선택하고 **Open in Cloud9(Cloud9에서 열기)** 버튼을 선택합니다.  
![\[Open in Cloud9(Cloud9에서 열기) 버튼을 사용하여 환경 선택\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/console_create_env_new_UX.png)

콘솔에 환경이 표시되지 않으면 다음 작업 중 하나 이상을 수행하여 표시해 보세요.
+ **Environments**(환경) 페이지의 드롭다운 메뉴 표시줄에서 다음 중 하나 이상을 선택합니다.
  + **내 환경을** 선택하여 선택한 AWS 리전 및 내에서 AWS 개체가 소유한 모든 환경을 표시합니다 AWS 계정.
  + **나와 공유를** 선택하여 선택한 AWS 리전 및 내에서 AWS 엔터티가 초대된 모든 환경을 표시합니다 AWS 계정.
  + **모든 계정 환경을** 선택하여 선택한 내의 모든 환경을 표시하고 AWS 엔터티에 표시할 권한이 AWS 리전 AWS 계정 있습니다.
+ 본인이 환경의 멤버라고 생각하지만 **Shared with you**(사용자와 공유) 목록에 환경이 표시되지 않는 경우 환경 소유자에 문의하여 확인하세요.
+ 상단 탐색 모음에서 다른를 선택합니다 AWS 리전.

# AWS 서비스 의 환경에서 호출 AWS Cloud9
<a name="credentials"></a>

 AWS Cloud9 개발 환경에서 AWS 서비스 를 호출할 수 있습니다. 예를 들어 다음 작업을 수행할 수 있습니다.
+ Amazon Simple Storage Service(Amazon S3) 버킷에서 데이터를 업로드하고 다운로드합니다.
+ Amazon Simple Notification Service(Amazon SNS) 주제를 통해 브로드캐스트 알림을 보냅니다.
+ Amazon DynamoDB(DynamoDB) 데이터베이스에서 데이터를 읽고 씁니다.

여러 가지 방법으로 환경에서를 호출할 수 AWS 서비스 있습니다. 예를 들어 AWS Command Line Interface (AWS CLI) 또는를 사용하여 터미널 세션에서 명령을 AWS CloudShell 실행할 수 있습니다. 환경 내에서 실행하는 코드로부터 AWS 서비스 를 호출할 수도 있습니다. , JavaScript, , Python, RubyPHPGo, 등의 프로그래밍 언어에 AWS SDKs 사용하여이 작업을 수행할 수 있습니다C\$1\$1. 자세한 내용은 [AWS Command Line Interface 사용 설명서](https://docs.aws.amazon.com/cli/latest/userguide/)의 [AWS CLI 및 aws-shell 샘플](sample-aws-cli.md)과 [AWS SDK](https://aws.amazon.com/developer/tools/#sdk)를 참조하세요.

 AWS CLI, 또는 코드가 AWS CloudShell를 호출 AWS 서비스할 때마다 AWS CLI, AWS CloudShell또는 코드는 호출과 함께 AWS 액세스 자격 증명 세트를 제공해야 합니다. 이러한 자격 증명은 호출자가 호출을 수행할 적절한 권한을 가지고 있는지 여부를 확인합니다. 자격 증명으로 적절한 권한이 확인되지 않는 경우 호출이 실패합니다.

환경에 자격 증명을 제공하는 여러 가지 방법이 있습니다. 다음 표에서는 몇 가지 접근 방식에 대해 설명합니다.


****  

| 환경 유형 | 접근 방식 | 
| --- | --- | 
|  EC2  |   AWS 관리형 임시 자격 증명을 사용합니다. EC2 환경에이 접근 방식을 사용하는 것이 좋습니다. AWS 관리형 임시 자격 증명은 사용자를 대신하여 EC2 환경에서 AWS 액세스 자격 증명을 관리하는 동시에 AWS 보안 모범 사례를 따릅니다.  **EC2 환경을 사용하는 경우 이 주제의 나머지 부분은 건너뛸 수 있습니다. 이는 AWS 관리형 임시 자격 증명이 환경에 이미 설정되어 있기 때문입니다.** 자세한 내용은 [AWS 관리형 임시 자격 증명](security-iam.md#auth-and-access-control-temporary-managed-credentials)을 참조하세요.  | 
|  EC2  |  IAM 인스턴스 프로파일을 인스턴스에 연결합니다. 어떤 이유로든 AWS 관리형 임시 자격 증명을 사용할 수 없는 경우에만이 접근 방식을 사용합니다. AWS 관리형 임시 자격 증명과 마찬가지로 인스턴스 프로파일은 사용자를 대신하여 AWS 액세스 자격 증명을 관리합니다. 하지만 사용자가 직접 인스턴스 프로파일을 생성하고 관리하고 Amazon EC2 인스턴스에 연결해야 합니다. 지침은 [인스턴스 프로파일을 생성하고 사용하여 임시 자격 증명 관리](#credentials-temporary)를 참조하세요.  | 
|  EC2 또는 SSH  |  환경 내에 영구 AWS 액세스 자격 증명을 저장합니다. 이 접근 방식은 임시 AWS 액세스 자격 증명을 사용하는 것보다 안전하지 않습니다. 하지만 이 방식은 SSH 환경에 지원되는 유일한 접근 방식입니다. 지침은 [영구 액세스 자격 증명을 생성하여 환경에 저장](#credentials-permanent-create)을 참조하십시오.  | 
|  EC2 또는 SSH  |  영구 AWS 액세스 자격 증명을 코드에 직접 삽입합니다. 이 접근 방식은 AWS 보안 모범 사례를 따르지 않으므로 사용하지 않는 것이 좋습니다. 이 접근 방식은 사용하지 않는 것이 좋으므로 이 주제에서 다루지 않습니다.  | 

## 인스턴스 프로파일을 생성하고 사용하여 임시 자격 증명 관리
<a name="credentials-temporary"></a>

**참고**  
 AWS Cloud9 SSH 개발 환경에는이 절차를 사용할 수 없습니다. 그 대신, [영구 액세스 자격 증명을 생성하여 환경에 저장](#credentials-permanent-create)으로 건너뛰십시오.  
인스턴스 프로파일 대신 AWS 관리형 임시 자격 증명을 사용하는 것이 좋습니다. 어떤 이유로든 AWS 관리형 임시 자격 증명을 사용할 수 없는 경우에만이 지침을 따르십시오. 자세한 내용은 [AWS 관리형 임시 자격 증명](security-iam.md#auth-and-access-control-temporary-managed-credentials)을 참조하세요.

이 절차에서는 IAM 및 Amazon EC2를 사용하여 IAM 인스턴스 프로파일을 생성하고 환경에 연결되는 Amazon EC2 인스턴스에 연결합니다. 이 인스턴스 프로파일은 사용자를 대신하여 임시 자격 증명을 관리합니다. 이 절차에서는 AWS Cloud9에 환경을 이미 생성했다고 가정합니다. 환경을 생성하려면 [환경 생성](create-environment.md)을 참조하세요.

[IAM 및 Amazon EC2 콘솔](#credentials-temporary-create-console) 또는 [AWS Command Line Interface(AWS CLI)](#credentials-temporary-create-cli)를 사용하여 이러한 작업을 완료할 수 있습니다.

### IAM 콘솔을 사용하여 인스턴스 프로파일 생성
<a name="credentials-temporary-create-console"></a>

**참고**  
인스턴스 프로파일이 포함된 IAM 역할이 이미 있는 경우 [Amazon EC2 콘솔을 사용하여 인스턴스 프로파일을 인스턴스에 연결](#credentials-temporary-attach-console)로 건너뜁니다.

1. [https://console.aws.amazon.com/iam](https://console.aws.amazon.com/iam)에서 IAM 콘솔에 로그인합니다.

   이 단계에서는 AWS 계정의 관리자 수준 보안 인증 정보를 사용하여 로그인하는 것이 좋습니다. 이렇게 할 수 없으면 AWS 계정 관리자에게 문의하세요.

1. 탐색 모음에서 **역할**을 선택합니다.
**참고**  
자체적으로 IAM 콘솔을 사용하여 인스턴스 프로파일을 생성할 수 없습니다. 인스턴스 프로파일이 포함된 IAM 역할을 생성해야 합니다.

1. **역할 생성**을 선택합니다.

1. **Select type of trusted entity**(신뢰할 수 있는 엔터티 유형 선택) 페이지에서 **AWS 서비스**가 이미 선택된 상태에서 **Choose the service that will use this role**(이 역할을 사용할 서비스 선택)에서 **EC2**를 선택합니다.

1. **Select your use case(사용 사례 선택)**에서 **EC2**를 선택합니다.

1. **다음: 권한**을 선택합니다.

1. **Attach permissions policies(권한 정책 연결)** 페이지의 정책 목록에서 **AdministratorAccess** 옆에 있는 상자를 선택한 다음 **Next: Review(다음: 검토)**를 선택합니다.
**참고**  
**AdministratorAccess** 정책은 전체의 모든 AWS 작업 및 리소스에 대한 무제한 액세스를 허용합니다 AWS 계정. 이 정책은 실험 용도로만 사용하세요. 자세한 내용은 *IAM 사용 설명서*에서 [IAM 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)을 참조하세요.

1. **Review**(검토) 페이지의 **Role Name**(역할 이름)에 역할의 이름을 입력합니다(예: `my-demo-cloud9-instance-profile`).

1. **역할 생성**을 선택합니다.

[Amazon EC2 콘솔을 사용하여 인스턴스 프로파일을 인스턴스에 연결](#credentials-temporary-attach-console)로 건너뛰십시오.

### 를 사용하여 인스턴스 프로파일 생성 AWS CLI
<a name="credentials-temporary-create-cli"></a>

**참고**  
인스턴스 프로파일이 포함된 IAM 역할이 이미 있는 경우 [AWS CLI를 사용하여 인스턴스 프로파일을 인스턴스에 연결](#credentials-temporary-attach-cli)로 건너뜁니다.  
이 주제에서는에서 관리자 수준 자격 증명을 AWS CLI 사용하여를 구성하는 것이 좋습니다 AWS 계정. 이렇게 할 수 없으면 AWS 계정 관리자에게 문의하세요.

**참고**  
[AWS 관리형 임시 자격 증명을](security-iam.md#auth-and-access-control-temporary-managed-credentials) 사용하는 경우 AWS Cloud9 IDE의 터미널 세션을 사용하여이 섹션의 일부 또는 모든 명령을 실행할 수 없습니다. AWS 보안 모범 사례를 해결하기 위해 AWS 관리형 임시 자격 증명은 일부 명령의 실행을 허용하지 않습니다. 대신 AWS Command Line Interface ()를 별도로 설치하여 이러한 명령을 실행할 수 있습니다AWS CLI.

1. 인스턴스 프로파일의 필수 IAM 역할에 AWS 대해에서 신뢰 관계를 정의합니다. 이렇게 하려면 다음 내용이 포함된 파일을 생성한 다음 저장합니다(예: `my-demo-cloud9-instance-profile-role-trust.json`).

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "",
         "Effect": "Allow",
         "Principal": {
           "Service": "ec2.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

1. 터미널 또는 명령 프롬프트를 사용하여 방금 이 파일을 저장한 디렉터리로 전환합니다.

1. 인스턴스 프로파일에 대한 IAM 역할을 생성합니다. 이렇게 하려면 IAM `create-role` 명령을 실행합니다. 이 명령을 실행할 때에는 새 IAM 역할의 이름(예: `my-demo-cloud9-instance-profile-role`)과 방금 저장한 파일의 이름을 지정합니다.

   ```
   aws iam create-role --role-name my-demo-cloud9-instance-profile-role --assume-role-policy-document file://my-demo-cloud9-instance-profile-role-trust.json
   ```

1. 인스턴스 프로파일 IAM 역할에 AWS 액세스 권한을 연결합니다. 이렇게 하려면 IAM `attach-role-policy` 명령을 실행합니다. 기존 IAM 역할의 이름과 이름이 인 AWS 관리형 정책의 Amazon 리소스 이름(ARN)을 지정합니다`AdministratorAccess`.

   ```
   aws iam attach-role-policy --role-name my-demo-cloud9-instance-profile-role --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
   ```
**참고**  
**AdministratorAccess** 정책은 전체의 모든 AWS 작업 및 리소스에 대한 무제한 액세스를 허용합니다 AWS 계정. 이 정책은 실험 용도로만 사용하세요. 자세한 내용은 *IAM 사용 설명서*에서 [IAM 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)을 참조하세요.

1. 인스턴스 프로파일을 생성합니다. 이렇게 하려면 새 인스턴스 프로파일의 이름(예: `my-demo-cloud9-instance-profile`)을 지정하여 IAM `create-instance-profile` 명령을 실행합니다.

   ```
   aws iam create-instance-profile --instance-profile-name my-demo-cloud9-instance-profile
   ```

1. IAM 역할을 인스턴스 프로파일에 추가합니다. 이렇게 하려면 기존 IAM 역할과 인스턴스 프로파일의 이름을 지정하여 IAM `add-role-to-instance-profile`을 실행합니다

   ```
   aws iam add-role-to-instance-profile --role-name my-demo-cloud9-instance-profile-role --instance-profile-name my-demo-cloud9-instance-profile
   ```

[AWS CLI를 사용하여 인스턴스 프로파일 생성](#credentials-temporary-create-cli)으로 건너뜁니다.

### Amazon EC2 콘솔을 사용하여 인스턴스 프로파일을 인스턴스에 연결
<a name="credentials-temporary-attach-console"></a>

1. [https://console.aws.amazon.com/ec2](https://console.aws.amazon.com/ec2)에서 Amazon EC2 콘솔에 로그인합니다.

   이 단계에서는 AWS 계정의 관리자 수준 보안 인증 정보를 사용하여 로그인하는 것이 좋습니다. 이렇게 할 수 없으면 AWS 계정 관리자에게 문의하세요.

1. 탐색 모음에서 리전 선택기에 환경의 리전과 일치하는 AWS 리전 이 표시되는지 확인합니다. 예를 들어 미국 동부(오하이오) 리전에서 환경을 생성한 경우 여기서도 리전 선택기에서 **US East (Ohio)**(미국 동부(오하이오))를 선택합니다.

1. **Running Instances(실행 중인 인스턴스)** 링크를 선택하거나, 탐색 창에서 **Instances(인스턴스)**를 확장한 다음 **Instances(인스턴스)**를 선택합니다.

1. 인스턴스 목록에서 [**이름(Name)**]에 해당 환경의 이름이 포함된 인스턴스를 선택합니다. 예를 들어 환경 이름이 `my-demo-environment`인 경우 [**이름(Name)**]에 **my-demo-environment**가 포함된 인스턴스를 선택합니다.

1. **Actions**(작업), **Security**(보안), **Modify IAM role**(IAM 역할 수정)을 선택합니다.
**참고**  
역할을 인스턴스에 연결하고 있지만 역할에는 인스턴스 프로파일이 포함됩니다.

1. **Modify IAM role**(IAM 역할 수정) 페이지의 **IAM role**(IAM 역할)에서 식별한 역할의 이름 또는 이전 절차 생성한 역할의 이름을 선택한 다음 **Apply**(적용)를 선택합니다.

1. 환경으로 돌아가 AWS CLI 서를 사용하여 `aws configure` 명령을 실행하거나를 AWS CloudShell 사용하여 `configure` 명령을 실행합니다. **AWS Access Key ID**(AWS 액세스 키 ID) 또는 **AWS Secret Access Key**(AWS 비밀 액세스 키)에는 값을 지정하지 않습니다(각 프롬프트가 나타나면 `Enter` 키를 누름). **기본 리전 이름**에서 가장 AWS 리전 가까운 또는 AWS 리소스가 위치한 리전을 지정합니다. 예를 들어, 미국 동부(오하이오) 리전의 경우 `us-east-2`입니다. 리전 목록은 **Amazon Web Services 일반 참조의 [AWS 리전 및 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html)를 참조하세요. 선택적으로 **Default output format(기본 출력 형식)**의 값을 지정합니다(예: `json`).

이제 환경에서 AWS 서비스 를 호출할 수 있습니다. AWS CLI, aws-shell또는 둘 다를 사용하여를 호출하려면 [AWS CLI 및 aws-shell 샘플을](sample-aws-cli.md) AWS 서비스참조하세요. 코드에서 AWS 서비스 를 호출하려면 다른 [자습서 및 샘플](tutorials.md)을 참조하세요.

### 를 사용하여 인스턴스에 인스턴스 프로파일 연결 AWS CLI
<a name="credentials-temporary-attach-cli"></a>

**참고**  
[AWS 관리형 임시 자격 증명을](security-iam.md#auth-and-access-control-temporary-managed-credentials) 사용하는 경우 AWS Cloud9 IDE의 터미널 세션을 사용하여이 섹션의 일부 또는 모든 명령을 실행할 수 없습니다. AWS 보안 모범 사례를 해결하기 위해 AWS 관리형 임시 자격 증명은 일부 명령의 실행을 허용하지 않습니다. 대신 AWS Command Line Interface ()를 별도로 설치하여 이러한 명령을 실행할 수 있습니다AWS CLI.

1. Amazon EC2 `associate-iam-instance-profile` 명령을 실행합니다. 인스턴스 프로파일의 이름과 환경에 대한 Amazon EC2 인스턴스의 ID 및 AWS 리전 ID를 지정합니다.

   ```
   aws ec2 associate-iam-instance-profile --iam-instance-profile Name=my-demo-cloud9-instance-profile --region us-east-2 --instance-id i-12a3b45678cdef9a0
   ```

   위의 명령에서 `us-east-2`를 인스턴스의 AWS 리전 ID로 바꾸고 `i-12a3b45678cdef9a0`을 인스턴스 ID로 바꿉니다.

   인스턴스 ID를 가져오려면 예를 들어 환경의 이름과 AWS 리전 ID를 지정하여 Amazon EC2 `describe-instances` 명령을 실행할 수 있습니다.

   ```
   aws ec2 describe-instances --region us-east-2 --filters Name=tag:Name,Values=*my-environment* --query "Reservations[*].Instances[*].InstanceId" --output text
   ```

   위의 명령에서 `us-east-2`를 인스턴스의 AWS 리전 ID로 바꾸고 `my-environment`를 환경의 이름으로 바꿉니다.

1. 환경으로 돌아가서 AWS CLI 를 사용하여 `aws configure` 명령을 실행하거나 aws-shell를 사용하여 `configure` 명령을 실행합니다. **AWS 액세스 키 ID** 또는 **AWS 비밀 액세스 키**에 값을 지정하지 마십시오. 각 프롬프트가 표시된 후 `Enter` 키를 누릅니다. **기본 리전 이름**에서 AWS 리전 가장 가까운 또는 AWS 리소스가 위치한 리전을 지정합니다. 예를 들어, 미국 동부(오하이오) 리전의 경우 `us-east-2`입니다. 리전 목록은 **Amazon Web Services 일반 참조의 [AWS 리전 및 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html)를 참조하세요. 선택적으로 **Default output format(기본 출력 형식)**의 값을 지정합니다(예: `json`).

이제 환경에서 AWS 서비스 를 호출할 수 있습니다. AWS CLI, aws-shell또는 둘 다를 사용하여를 호출하려면 [AWS CLI 및 aws-shell 샘플을](sample-aws-cli.md) AWS 서비스참조하세요. 코드에서 AWS 서비스 를 호출하려면 다른 [자습서 및 샘플](tutorials.md)을 참조하세요.

## 영구 액세스 자격 증명을 생성하여 환경에 저장
<a name="credentials-permanent-create"></a>

**참고**  
 AWS Cloud9 EC2 개발 환경을 사용하는 경우 AWS 영구 액세스 자격 증명 대신 AWS 관리형 임시 자격 증명을 사용하는 것이 좋습니다. AWS 관리형 임시 자격 증명으로 작업하려면 섹션을 참조하세요[AWS 관리형 임시 자격 증명](security-iam.md#auth-and-access-control-temporary-managed-credentials).

이 단원에서는 AWS Identity and Access Management (IAM)을 사용하여 영구 자격 증명 세트를 생성합니다. aws-shell, 또는 코드는 AWS CLI를 호출할 때이 자격 증명 세트를 사용할 수 있습니다 AWS 서비스. 이 세트에는의 사용자에게 고유한 AWS 액세스 키 ID와 AWS 보안 액세스 키가 포함되어 있습니다 AWS 계정. 액세스 키 ID와 AWS 보안 액세스 키가 이미 있는 AWS 경우 해당 자격 증명을 기록한 다음 [환경에 영구 액세스 자격 증명 저장으로 건너뜁니다](#credentials-permanent-create-store).

[IAM 콘솔](#credentials-permanent-create-console) 또는 [AWS CLI](#credentials-permanent-create-cli)를 사용하여 영구 자격 증명 세트를 생성할 수 있습니다.

### 프로그래밍 방식 액세스 권한 부여
<a name="credentials-permanent-create-console"></a>

사용자는 AWS 외부에서와 상호 작용하려는 경우 프로그래밍 방식으로 액세스해야 합니다 AWS Management Console. 프로그래밍 방식 액세스를 부여하는 방법은에 액세스하는 사용자 유형에 따라 다릅니다 AWS.

사용자에게 프로그래밍 방식 액세스 권한을 부여하려면 다음 옵션 중 하나를 선택합니다.


****  

| 프로그래밍 방식 액세스가 필요한 사용자 | 목적 | 방법 | 
| --- | --- | --- | 
| IAM | (권장) 콘솔 자격 증명을 임시 자격 증명으로 사용하여 AWS CLI, AWS SDKs 또는 AWS APIs. |  사용하고자 하는 인터페이스에 대한 지침을 따릅니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/credentials.html)  | 
|  작업 인력 ID (IAM Identity Center에서 관리되는 사용자)  | 임시 자격 증명을 사용하여 AWS CLI, AWS SDKs 또는 AWS APIs. |  사용하고자 하는 인터페이스에 대한 지침을 따릅니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/credentials.html)  | 
| IAM | 임시 자격 증명을 사용하여 AWS CLI, AWS SDKs 또는 AWS APIs. | IAM 사용 설명서의 [AWS 리소스에서 임시 자격 증명 사용](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)의 지침을 따릅니다. | 
| IAM | (권장되지 않음)장기 자격 증명을 사용하여 AWS CLI, AWS SDKs 또는 AWS APIs. |  사용하고자 하는 인터페이스에 대한 지침을 따릅니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/credentials.html)  | 

### 를 사용하여 영구 액세스 자격 증명 생성 AWS CLI
<a name="credentials-permanent-create-cli"></a>

**참고**  
이 단원에서는에서 관리자 수준 자격 증명을 AWS CLI 사용하여를 구성하는 것이 좋습니다 AWS 계정. 이렇게 할 수 없는 경우 AWS 계정 관리자에게 문의하십시오.

**참고**  
[AWS 관리형 임시 자격 증명을](security-iam.md#auth-and-access-control-temporary-managed-credentials) 사용하는 경우 AWS Cloud9 IDE의 터미널 세션을 사용하여이 섹션의 일부 또는 모든 명령을 실행할 수 없습니다. AWS 보안 모범 사례를 해결하기 위해 AWS 관리형 임시 자격 증명은 일부 명령의 실행을 허용하지 않습니다. 대신 AWS Command Line Interface ()를 별도로 설치하여 이러한 명령을 실행할 수 있습니다AWS CLI.

IAM `create-access-key` 명령을 실행하여 사용자에 대한 새 AWS 액세스 키와 해당 AWS 보안 액세스 키를 생성합니다.

```
aws iam create-access-key --user-name MyUser
```

위의 명령에서 `MyUser`를 사용자의 이름으로 바꿉니다.

표시되는 `AccessKeyId` 및 `SecretAccessKey` 값을 안전한 위치에 저장합니다. IAM `create-access-key` 명령을 실행한 후를 사용하여 AWS CLI 사용자의 AWS 보안 액세스 키를 볼 수 있는 유일한 시간입니다. 나중에 필요한 경우 사용자에 대한 새 AWS 보안 액세스 키를 생성하려면 *IAM 사용 설명서*의 [액세스 키(API, CLI, PowerShell) 생성, 수정 및 보기를 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_CreateAccessKey_CLIAPI).

### 환경에 영구 액세스 자격 증명 저장
<a name="credentials-permanent-create-store"></a>

이 절차에서는 AWS Cloud9 IDE를 사용하여 환경에 영구 AWS 액세스 자격 증명을 저장합니다. 이 절차에서는에서 환경을 이미 생성하고 AWS Cloud9환경을 열었으며 웹 브라우저에 AWS Cloud9 IDE를 표시하고 있다고 가정합니다. 자세한 내용은 [환경 생성](create-environment.md) 및 [환경 열기](open-environment.md)를 참조하십시오.

**참고**  
다음 절차에서는 환경 변수를 사용하여 영구 액세스 자격 증명을 저장하는 방법을 보여 줍니다. 환경에 AWS CLI 또는가 aws-shell 설치된 경우에 대한 ** `aws configure` ** 명령 AWS CLI 또는에 대한 ** `configure` ** 명령을 사용하여 대신 영구 액세스 자격 증명을 aws-shell 저장할 수 있습니다. 자세한 내용은 *AWS Command Line Interface 사용 설명서*에서 [빠른 구성](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#cli-quick-configuration)을 참조하세요.

1. 환경을 연 상태에서 아직 시작되지 않은 경우 AWS Cloud9 IDE에서 새 터미널 세션을 시작합니다. 터미널 세션을 새로 시작하려면 메뉴 모음에서 **Window(창)**, **New Terminal(새 터미널)**을 선택합니다.

1. 다음 각 명령을 한 번에 한 명령씩 실행하여 영구 액세스 자격 증명을 나타내는 로컬 환경 변수를 설정합니다. 이 명령에서 뒤에 AWS 액세스 키 ID를 `AWS_ACCESS_KEY_ID:`입력합니다. 뒤에 AWS 보안 액세스 키를 `AWS_SECRET_ACCESS_KEY`입력합니다. 뒤에 가장 AWS 리전 가까운(또는 원하는)와 연결된 AWS 리전 식별자를 `AWS_DEFAULT_REGION_ID`입력합니다 AWS 리전. 사용할 수 있는 식별자 목록은 **Amazon Web Services 일반 참조의 [ 및 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html)를 참조하세요. 예를 들어, 미국 동부(오하이오) 리전의 경우 `us-east-2`를 사용합니다.

   ```
   export AWS_ACCESS_KEY_ID=
   export AWS_SECRET_ACCESS_KEY=
   export AWS_DEFAULT_REGION=
   ```

1. 위의 환경 변수는 현재 터미널 세션에만 유효합니다. 이러한 환경 변수를 여러 터미널 세션 간에 사용할 수 있도록 하려면 다음과 같이 이러한 환경 변수를 셸 프로파일 파일에 사용자 환경 변수로 추가해야 합니다.

   1. IDE의 [**환경(Environment)**] 창에서 기어 모양 아이콘을 선택한 다음 [**즐겨찾기에 홈 표시(Show Home in Favorites)**]를 선택합니다. 이 단계를 반복하고 **Show Hidden Files(숨겨진 파일 표시)**도 선택합니다.

   1. `~/.bashrc` 파일을 엽니다.

   1. 다음 코드를 파일의 끝 부분에 입력하거나 붙여 넣습니다. 이 명령에서 뒤에 AWS 액세스 키 ID를 `AWS_ACCESS_KEY_ID:`입력합니다. 뒤에 AWS 보안 액세스 키를 `AWS_SECRET_ACCESS_KEY`입력합니다. 뒤에 가장 AWS 리전 가까운(또는 원하는)와 연결된 식별자를 `AWS_DEFAULT_REGION_ID`입력합니다 AWS 리전 AWS 리전. 사용할 수 있는 식별자 목록은 **Amazon Web Services 일반 참조의 [ 및 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html)를 참조하세요. 예를 들어, 미국 동부(오하이오) 리전의 경우 `us-east-2`를 사용합니다.

      ```
      export AWS_ACCESS_KEY_ID=
      export AWS_SECRET_ACCESS_KEY=
      export AWS_DEFAULT_REGION=
      ```

   1. 파일을 저장합니다.

   1. `~/.bashrc` 파일을 소싱하여 이러한 새 환경 변수를 로드합니다.

      ```
      . ~/.bashrc
      ```

이제 환경에서 AWS 서비스 를 호출할 수 있습니다. AWS CLI 또는를 사용하여 aws-shell를 호출하려면 [AWS CLI 및 aws-shell 샘플을](sample-aws-cli.md) AWS 서비스참조하세요. 코드에서 AWS 서비스 를 호출하려면 다른 [자습서 및 샘플](tutorials.md)을 참조하세요.

# 에서 환경 설정 변경 AWS Cloud9
<a name="change-environment"></a>

 AWS Cloud9 개발 환경의 기본 설정 또는 설정을 변경할 수 있습니다.
+  [환경 기본 설정 변경](#change-environment-single) 
+  [콘솔을 사용하여 환경 설정 변경](#change-environment-description) 
+  [코드를 사용하여 환경 설정 변경](#change-environment-description-code) 

## 환경 기본 설정 변경
<a name="change-environment-single"></a>

1. 설정을 변경하려는 환경을 엽니다. 환경을 열려면 [환경 열기](open-environment.md)를 참조하세요.

1.  AWS Cloud9 IDE의 메뉴 모음에서 , **AWS Cloud9** **기본 설정을** 선택합니다.

1. [**기본 설정(Preferences)**] 창에서 [**프로젝트 설정(Project Settings)**]을 선택합니다.

1. 사용 가능한 프로젝트 설정을 원하는 대로 변경합니다. 여기에는 [**코드 편집기(Ace)(Code Editor (Ace))**] 및 [**파일에서 찾기(Find in Files)**]와 같은 설정이 포함됩니다.

**참고**  
자세한 내용은 [사용자가 변경할 수 있는 프로젝트 설정](settings-project-change.md)을 참조하세요.

### AWS Cloud9 IDE에서 환경의 제한 시간 조정
<a name="change-environment-timeout"></a>

다음 단계에서는 AWS Cloud9 IDE에서 Amazon EC2 환경의 제한 시간을 업데이트하는 방법을 간략하게 설명합니다. 이 시간은 환경이 중지되기까지의 시간입니다.

1. 구성하려는 환경을 엽니다.

1. **AWS Cloud9 IDE**의 메뉴 모음에서 **AWS Cloud9** **기본 설정**을 선택합니다.

1. **기본 설정** 창에서 **Amazon EC2 인스턴스** 섹션으로 스크롤합니다.

1. 사용 가능한 목록에서 제한 시간 값을 선택하고 업데이트합니다.

## 콘솔을 사용하여 환경 설정 변경
<a name="change-environment-description"></a>

1. 다음과 같이 AWS Cloud9 콘솔에 로그인합니다.
   + 를 사용하는 유일한 개인 AWS 계정 이거나 단일에서 IAM 사용자인 경우 [https://console.aws.amazon.com/cloud9/](https://console.aws.amazon.com/cloud9/) AWS 계정이동합니다.
   + 조직에서를 사용하는 경우 관리자에게 AWS 계정 로그인 지침을 AWS IAM Identity Center문의하세요.

1. 상단 탐색 모음에서 환경이 AWS 리전 위치한를 선택합니다.  
![\[AWS AWS Cloud9 콘솔의 리전 선택기\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/consolas_region_new_UX.png)

1. 환경 목록에서 설정을 변경하려는 환경에 대해 다음 중 하나를 수행합니다.
   + 환경에 대한 카드의 제목을 선택합니다. 다음 페이지에서 **View details**(상세 정보 보기)를 선택합니다.
   + 환경에 대한 카드를 선택한 다음 **View details**(상세 정보 보기) 버튼을 선택합니다.

1. 변경한 후 [**변경 내용 저장(Save changes)**]을 선택합니다.

    AWS Cloud9 콘솔을 사용하여 다음 설정을 변경할 수 있습니다.
   + EC2 환경의 경우: [**이름(Name)**] 및 [**설명(Description)**]
   + SSH 환경의 경우: [**이름(Name)**], [**설명(Description)**] [**사용자(User)**], [**호스트(Host)**], [**포트(Port)**], [**환경 경로(Environment path)**], [**Node.js 바이너리 경로(Node.js binary path)**] 및 [**SSH 점프 호스트(SSH jump host)**]

   다른 설정을 변경하려면 다음을 수행합니다.
   + EC2 환경에 대해 다음을 수행합니다.
     + [**유형(Type)**], [**보안 그룹(Security groups)**], [**VPC**], [**서브넷(Subnet)**, [**환경 경로(Environment path)** 또는 [**환경 ARN(Environment ARN**]은 변경할 수 없습니다.
     + **Permissions**(권한) 또는 **Number of members**(멤버 수)의 경우 [환경 멤버의 액세스 역할 변경](share-environment-change-access.md), [사용자 제거](share-environment-change-access.md), [IAM 사용자 초대](share-environment.md#share-environment-invite-user) 및 [다른 환경 멤버 제거](share-environment-delete-member.md)를 참조하세요.
     + [**EC2 인스턴스 유형(EC2 instance type)**], [**메모리(Memory)**] 또는 [**vCPU**]의 경우 [환경 이동 또는 크기 조정](move-environment.md)을 참조하세요.
   + SSH 환경에 대해 다음을 수행합니다.
     + [**유형(Type)**] 또는 [**환경 ARN(Environment ARN)**]은 변경할 수 없습니다.
     + [**권한(Permissions)**] 또는 [**멤버 수(Number of members)**]의 경우 [환경 멤버의 액세스 역할 변경](share-environment-change-access.md), [사용자 제거](share-environment-change-access.md), [IAM 사용자 초대](share-environment.md#share-environment-invite-user) 및 [다른 환경 멤버 제거](share-environment-delete-member.md)를 참조하세요.

콘솔에 환경이 표시되지 않으면 다음 작업 중 하나 이상을 수행하여 표시해 보세요.
+ **Environments**(환경) 페이지의 드롭다운 메뉴 표시줄에서 다음 중 하나 이상을 선택합니다.
  + 선택한 AWS 리전 및 내에서 AWS 엔터티가 소유한 모든 환경을 표시하려면 **내 환경을** 선택합니다 AWS 계정.
  + 선택한 AWS 리전 및 내에서 AWS 엔터티가 초대된 모든 환경을 표시하려면 **나와 공유**를 선택합니다 AWS 계정.
  + **모든 계정 환경을** 선택하여 선택한 내의 모든 환경을 표시하고 AWS 엔터티에 표시할 권한이 AWS 리전 AWS 계정 있습니다.
+ 본인이 환경의 멤버라고 생각하지만 **Shared with you**(사용자와 공유) 목록에 환경이 표시되지 않는 경우 환경 소유자에 문의하여 확인하세요.
+ 상단 탐색 모음에서 다른을 선택합니다 AWS 리전.

## 코드를 사용하여 환경 설정 변경
<a name="change-environment-description-code"></a>

코드를 사용하여의 환경 설정을 변경하려면 다음과 같이 환경 AWS Cloud9 업데이트 작업을 AWS Cloud9호출합니다.


****  

|  |  | 
| --- |--- |
|  AWS CLI  |   [update-environment](https://docs.aws.amazon.com/cli/latest/reference/cloud9/update-environment.html)   | 
|  AWS SDK for C\$1\$1  |   [UpdateEnvironmentRequest](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_update_environment_request.html), [UpdateEnvironmentResult](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_update_environment_result.html)   | 
|  AWS SDK for Go  |   [UpdateEnvironment](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.UpdateEnvironment), [UpdateEnvironmentRequest](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.UpdateEnvironmentRequest), [UpdateEnvironmentWithContext](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.UpdateEnvironmentWithContext)   | 
|  AWS SDK for Java  |   [UpdateEnvironmentRequest](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloud9/model/UpdateEnvironmentRequest.html), [UpdateEnvironmentResult](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloud9/model/UpdateEnvironmentResult.html)   | 
|  AWS SDK for JavaScript  |   [updateEnvironment](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Cloud9.html#updateEnvironment-property)   | 
|  AWS SDK for .NET  |   [UpdateEnvironmentRequest](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TUpdateEnvironmentRequest.html), [UpdateEnvironmentResponse](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TUpdateEnvironmentResponse.html)   | 
|  AWS SDK for PHP  |   [updateEnvironment](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloud9-2017-09-23.html#updateenvironment)   | 
|  AWS SDK for Python (Boto)  |   [update\$1environment](https://boto3.readthedocs.io/en/latest/reference/services/cloud9.html#Cloud9.Client.update_environment)   | 
|  AWS SDK for Ruby  |   [update\$1environment](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/Cloud9/Client.html#update_environment-instance_method)   | 
|  AWS Tools for Windows PowerShell  |   [Update-C9Environment](https://docs.aws.amazon.com/powershell/latest/reference/items/Update-C9Environment.html)   | 
|  AWS Cloud9 API  |   [UpdateEnvironment](https://docs.aws.amazon.com/cloud9/latest/APIReference/API_UpdateEnvironment.html)   | 

# 에서 공유 환경 작업 AWS Cloud9
<a name="share-environment"></a>

*공유 환경*은 여러 사용자가 참여하도록 초대된 AWS Cloud9 개발 환경입니다. 이 주제에서는에서 환경을 공유하는 지침과 공유 환경에 참여하는 AWS Cloud9 방법을 제공합니다.

소유한 환경에 참여하도록 사용자를 초대하려면 다음과 같은 일련의 절차 중 하나를 수행합니다. 초대하려는 사용자의 유형에 따라 선택합니다.
+ 환경 AWS 계정 과 동일한의 사용자인 경우 환경[과 동일한 계정에서 사용자를 초대](#share-environment-invite-user)해야 합니다.
+ 환경 AWS 계정 과 동일한의 AWS Cloud9 관리자, 특히 AWS 계정 루트 사용자, 관리자 사용자 또는 AWS 관리형 정책이 `AWSCloud9Administrator` 연결된 사용자는 AWS Cloud9 관리자를 직접 초대하거나, [환경과 동일한 계정의 사용자 초대를](#share-environment-invite-user) 참조하거나, AWS Cloud9 관리자가 자신(또는 동일한의 다른 사용자 AWS 계정)을 초대하도록 하거나, [자신이나 다른 사용자 초대 환경과 동일한 계정의 관리자를 초대하도록 AWS Cloud9 해야 합니다](#share-environment-admin-user).

## 공유 환경 사용 사례
<a name="share-environment-about"></a>

공유 환경은 다음 사용 사례에서 유용합니다.
+ **페어 프로그래밍**(****피어 프로그래밍이라고도 함**)**: **두 명의 사용자가 단일 환경에서 동일한 코드를 함께 작업하는 것입니다. 페어 프로그래밍에서는 일반적으로 한 사용자가 코드를 작성하고, 다른 사용자가 그 코드를 관찰합니다. 관찰자는 코드 작성자에게 바로 조언과 피드백을 제공합니다. 이러한 역할은 프로젝트 진행 중 종종 바뀝니다. 공유 환경에서 페어 프로그래머로 구성된 팀은 대체로 단일 머신에서 작업합니다. 한 번에 한 명의 사용자만 코드를 작성할 수 있습니다. 공유 환경을 사용하면 두 사용자는 각자의 컴퓨터에서 동시에 작업할 수 있습니다. 또한 다른 물리적인 사무실에 있더라도 각자의 위치에서 동시에 코드를 작성할 수 있습니다.
+ **컴퓨터 공학 수업: **이 기능은 교사 또는 조교가 학생의 환경에 액세스하려고 할 때 유용합니다. 이렇게 하는 이유는 학생의 과제를 검토하거나 실시간으로 환경과 관련된 문제를 해결하기 위한 것일 수 있습니다. 또한 학생은 학습 친구와 함께 공유 과제 프로젝트를 진행하고 단일 환경에서 실시간으로 함께 코드를 작성할 수 있습니다. 학생들은 운영 체제와 웹 브라우저 유형이 다른 위치에 있더라도 이와 같이 함께 작업이 가능합니다.
+ 여러 사용자가 실시간으로 동일한 코드에 대해 공동 작업해야 하는 기타 모든 상황

## 환경 멤버 액세스 역할 정보
<a name="share-environment-member-roles"></a>

환경을 공유하거나의 공유 환경에 참여하기 전에 공유 환경에 대한 액세스 권한 수준을 이해해야 AWS Cloud9합니다. 이러한 권한 수준을 *환경 멤버 액세스 역할*이라고 합니다.

의 공유 환경은 *소유자*, *읽기/쓰기*, *읽기 전용*의 세 가지 환경 멤버 액세스 역할을 AWS Cloud9 제공합니다.
+ 소유자는 환경에 대한 전체 제어 권한을 가집니다. 각 환경에는 환경 작성자인 소유자가 한 명 있습니다. 소유자는 다음 작업을 수행할 수 있습니다.
  + 환경의 멤버 추가, 변경 및 제거
  + 파일 열기, 보기 및 편집
  + 코드 실행
  + 환경 설정 변경
  + 다른 멤버와 채팅
  + 기존 채팅 메시지 삭제

   AWS Cloud9 IDE에는 환경 소유자가 **읽기\$1쓰기** 액세스 권한과 함께 표시됩니다.
+ 읽기/쓰기 멤버는 다음 작업을 수행할 수 있습니다.
  + 파일 열기, 보기 및 편집
  + 코드 실행
  +  AWS Cloud9 IDE 내에서 다양한 환경 설정 변경
  + 다른 멤버와 채팅
  + 기존 채팅 메시지 삭제

   AWS Cloud9 IDE에서 읽기/쓰기 멤버는 **읽기\$1쓰기** 액세스 권한과 함께 표시됩니다.
+ 읽기 전용 멤버는 다음 작업을 수행할 수 있습니다.
  + 파일 열기 및 보기
  + 다른 멤버와 채팅
  + 기존 채팅 메시지 삭제

   AWS Cloud9 IDE에서 읽기 전용 멤버는 **읽기 전용** 액세스 권한과 함께 표시됩니다.

사용자가 환경 소유자 또는 멤버가 되기 위해서는 다음 기준 중 하나를 충족해야 합니다.
+ 사용자가 **AWS 계정 루트 사용자**입니다.
+ 사용자가 **관리자 사용자**입니다. 자세한 내용은 *IAM 사용 설명서*에서 [첫 번째 IAM 관리자 및 그룹 만들기](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-set-up.html#create-an-admin)를 참조하세요.
+ 사용자는 **IAM 그룹에 속한 사용자**, **역할을 수임하는 사용자** 또는 **역할을 수임하는 페더레이션 사용자***이며*, 해당 그룹 또는 역할에는 AWS 관리형 정책 `AWSCloud9Administrator` 또는 `AWSCloud9User` (또는 멤버 전용)가 연결되어 `AWSCloud9EnvironmentMember`있습니다. 자세한 내용은 [AWS 관리형(미리 정의된) 정책](security-iam.md#auth-and-access-control-managed-policies)을 참조하세요.
  + 앞서 언급한 정책 중 하나를 IAM 그룹에 연결하기 위해 다음 절차에서 설명하는 대로 [AWS Management Console](#share-environment-member-roles-console) 또는 [AWS 명령줄 인터페이스(AWS CLI)](#share-environment-member-roles-cli)를 사용할 수 있습니다.
  + 사용자 또는 페더레이션 사용자가 수임할 이전 관리형 정책 중 하나를 사용하여 IAM에서 역할을 만들 수 있습니다. 자세한 내용은 *IAM 사용 설명서*의 [역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html)을 참조하세요. 사용자 또는 페더레이션 사용자가 역할을 수임하게 하려면 *IAM 사용 설명서*의 [IAM 역할 사용](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html)에서 역할 수임 범위를 참조하세요.

### 콘솔을 사용하여 그룹에 AWS Cloud9 에 대한 AWS 관리형 정책 연결
<a name="share-environment-member-roles-console"></a>

다음 절차에서는 콘솔을 사용하여에 대한 AWS 관리형 정책을 AWS Cloud9 그룹에 연결하는 방법을 간략하게 설명합니다.

1. 아직 로그인하지 않은 경우 AWS Management Console에 로그인합니다.

   이 단계에서는 AWS 계정의 IAM 관리자 수준 보안 인증 정보를 사용하여 로그인하는 것이 좋습니다. 이렇게 할 수 없으면 AWS 계정 관리자에게 문의하세요.

1. IAM 콘솔을 엽니다. 이렇게 하려면 콘솔 탐색 모음에서 **서비스**를 선택합니다. 그런 다음 **IAM**을 선택합니다.

1. **그룹**을 선택합니다.

1. 그룹의 이름을 선택합니다.

1. **권한** 탭의 **관리형 정책**에서 **정책 연결**을 선택합니다.

1. 정책 이름 목록에서 다음 상자 중 하나를 선택합니다.
   +  **AWSCloud9User**(기본 설정) 또는 **AWSCloud9Administrator**: 그룹의 각 사용자가 환경 소유자가 되도록 합니다.
   +  **AWSCloud9EnvironmentMember**: 그룹의 각 사용자가 멤버만 되도록 합니다.

   목록에 이러한 정책 이름 중 하나가 보이지 않으면 표시할 정책 이름을 **검색** 상자에 입력합니다.

1. **정책 연결**을 선택합니다.

### 를 사용하여 그룹에 AWS Cloud9 에 대한 AWS 관리형 정책 연결 AWS CLI
<a name="share-environment-member-roles-cli"></a>

**참고**  
[AWS 관리형 임시 자격 증명을](security-iam.md#auth-and-access-control-temporary-managed-credentials) 사용하는 경우 AWS Cloud9 IDE의 터미널 세션을 사용하여이 섹션의 일부 또는 모든 명령을 실행할 수 없습니다. AWS 보안 모범 사례를 해결하기 위해 AWS 관리형 임시 자격 증명은 일부 명령의 실행을 허용하지 않습니다. 대신 AWS Command Line Interface ()를 별도로 설치하여 이러한 명령을 실행할 수 있습니다AWS CLI.

IAM `attach-group-policy` 명령을 실행하여에 대한 AWS 관리형 정책을 AWS Cloud9 그룹에 연결합니다. 그룹 이름과 정책의 Amazon 리소스 이름(ARN)을 다음과 같이 지정합니다.

```
aws iam attach-group-policy --group-name MyGroup --policy-arn arn:aws:iam::aws:policy/POLICY_NAME
```

앞의 명령에서 `MyGroup`을 그룹의 이름으로 바꿉니다. 를 다음 AWS 관리형 정책 중 하나의 이름으로 `POLICY_NAME` 바꿉니다.
+  `AWSCloud9User`(기본 설정) 또는 `AWSCloud9Administrator`: 그룹의 각 사용자가 환경 소유자가 되도록 합니다.
+  `AWSCloud9EnvironmentMember`: 그룹의 각 사용자가 멤버만 되도록 합니다.

## 환경과 동일한 계정의 사용자 초대
<a name="share-environment-invite-user"></a>

이 섹션의 지침에 따라에서 소유한 AWS Cloud9 개발 환경을 동일한 계정의 사용자 AWS 계정 와 공유합니다.

1. 초대하려는 사용자가 다음 유형의 사용자 중 하나가 *아니라고* 가정해 보겠습니다. 초대하려는 사용자에게 해당 환경 멤버 액세스 역할이 이미 있는지 확인합니다. 지침은 [환경 멤버 액세스 역할 정보](#share-environment-member-roles)를 참조하십시오.
   + **AWS 계정 루트 사용자**.
   + **관리자 사용자**.
   + **IAM 그룹에 속한 사용자**, **역할을 수임하는 사용자** 또는 **역할을 수임하는 페더레이션 사용자***로*, 해당 그룹 또는 역할에 AWS 관리형 정책이 `AWSCloud9Administrator` 연결되어 있습니다.

1. 소유하고 있고 사용자를 초대하려는 환경을 아직 열지 않은 경우 해당 환경을 엽니다.

1.  AWS Cloud9 IDE의 메뉴 모음에서 다음 중 하나를 수행합니다.
   + **Window, Share(창, 공유)**를 선택합니다.
   + [**기본 설정(Preferences)**] 기어 아이콘 옆에 있는 [**공유(Share)**]를 선택합니다.  
![\[AWS Cloud9 IDE 메뉴 모음의 공유 명령\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/ide-share.png)

1. **Share this environment(이 환경 공유)** 대화 상자에서 **Invite Members(멤버 초대)**에 다음 중 하나를 입력합니다.
   + **IAM 사용자**를 초대하려면 사용자의 이름을 입력합니다.
   + **AWS 계정 루트 사용자**를 초대하려면 `arn:aws:iam::123456789012:root`를 입력합니다. 를 AWS 계정 ID`123456789012`로 바꿉니다.
   + **위임된 역할을 가진 사용자** 또는 **위임된 역할을 가진 페더레이션 사용자**를 초대하려면 `arn:aws:sts::123456789012:assumed-role/MyAssumedRole/MyAssumedRoleSession`을 입력하세요. `123456789012`를 AWS 계정 ID로 바꾸`MyAssumedRole`고를 수임된 역할의 이름으로 바꿉니다. `MyAssumedRoleSession`을 위임된 역할의 세션 이름으로 바꿉니다.

1. 이 사용자를 읽기 전용 멤버로 설정하려면 [**R**]을 선택합니다. 이 사용자를 읽기/쓰기 사용자로 설정하려면 [**RW**]를 선택합니다.

1. **초대**를 선택합니다.
**참고**  
이 사용자를 읽기/쓰기 멤버로 설정하면 AWS 보안 자격 증명을 위험에 빠뜨릴 수 있는 정보가 포함된 대화 상자가 표시됩니다. 다음 정보는 이 문제에 대해 보다 자세한 배경 지식을 제공합니다.  
환경은 신뢰할 수 있는 사람하고만 공유해야 합니다.  
읽기/쓰기 멤버는 사용자 환경에서 AWS CLI AWS CloudShell또는 AWS SDK 코드를 사용하여 사용자를 대신하여에서 작업을 수행할 수 AWS 있습니다. 또한 영구 AWS 액세스 자격 증명을 환경 내에 저장하면 해당 구성원이 해당 자격 증명을 복사하여 환경 외부에서 사용할 수 있습니다.  
환경에서 영구 AWS 액세스 자격 증명을 제거하고 임시 AWS 액세스 자격 증명을 사용하는 대신이 문제를 완전히 해결하지는 못합니다. 하지만 멤버(임시 자격 증명은 제한된 시간 동안에만 유효하기 때문에)가 임시 자격 증명을 복사해 환경 외부에서 사용할 수 있는 가능성이 줄어듭니다. 그러나 임시 자격 증명을 사용하면 읽기/쓰기 멤버가 사용자를 대신하여 환경에서 AWS 의 작업을 수행할 수 있습니다.

1. 사용자에게 연락하여 이 환경을 열고 사용하기 시작할 수 있다고 알려줍니다.

## 관리자가 환경 초대와 동일한 계정에 본인 또는 다른 AWS Cloud9 사람을 초대하도록 합니다.
<a name="share-environment-admin-user"></a>

**참고**  
[AWS 관리형 임시 자격 증명을](security-iam.md#auth-and-access-control-temporary-managed-credentials) 사용하는 경우 AWS Cloud9 IDE의 터미널 세션을 사용하여이 섹션의 일부 또는 모든 명령을 실행할 수 없습니다. AWS 보안 모범 사례를 해결하기 위해 AWS 관리형 임시 자격 증명은 일부 명령의 실행을 허용하지 않습니다. 대신 AWS Command Line Interface ()를 별도로 설치하여 이러한 명령을 실행할 수 있습니다AWS CLI.

다음 유형의 사용자는 자신(또는 동일한 AWS 계정의 다른 사용자)을 동일 계정 내 모든 환경에 초대할 수 있습니다.
+ **AWS 계정 루트 사용자**.
+ **관리자 사용자**.
+ **IAM 그룹에 속한 사용자**, **역할을 수임하는 사용자** 또는 **역할을 수임하는 페더레이션 사용자***로*, 해당 그룹 또는 역할에 AWS 관리형 정책이 `AWSCloud9Administrator` 연결되어 있습니다.

초대된 사용자가 이전 유형의 사용자 중 하나가 *아니라고* 가정해 보겠습니다. 사용자에게 해당 환경 멤버 액세스 역할이 이미 있는지 확인하세요. 지침은 [환경 멤버 액세스 역할 정보](#share-environment-member-roles)를 참조하십시오.

사용자를 초대하려면 AWS CLI 또는를 사용하여 `create-environment-membership` 명령을 AWS CloudShell 실행합니다 AWS Cloud9 .

```
aws cloud9 create-environment-membership --environment-id 12a34567b8cd9012345ef67abcd890e1 --user-arn USER_ARN --permissions PERMISSION_LEVEL
```

앞서 언급한 명령에서 `12a34567b8cd9012345ef67abcd890e1`을 환경의 ID로 바꿉니다. `PERMISSION_LEVEL`을 `read-write` 또는 `read-only`로 바꿉니다. `USER_ARN`은 다음 중 하나로 바꿉니다.
+ **IAM 사용자**를 초대하려면 `arn:aws:iam::123456789012:user/MyUser`를 입력합니다. 를 AWS 계정 ID`123456789012`로 바꾸고 `MyUser`를 사용자 이름으로 바꿉니다.
+ **AWS 계정 루트 사용자**를 초대하려면 `arn:aws:iam::123456789012:root`를 입력합니다. 를 AWS 계정 ID`123456789012`로 바꿉니다.
+ **위임된 역할을 가진 사용자** 또는 **위임된 역할을 가진 페더레이션 사용자**를 초대하려면 `arn:aws:sts::123456789012:assumed-role/MyAssumedRole/MyAssumedRoleSession`을 입력하세요. 를 AWS 계정 ID`123456789012`로 바꿉니다. `MyAssumedRole`을 위임된 역할의 이름으로 바꿉니다. 그리고 `MyAssumedRoleSession`을 위임된 역할의 세션 이름으로 바꿉니다.

예를 들어 계정 ID의 AWS 계정 루트 사용자를 ID`123456789012`가 읽기/쓰기 멤버`12a34567b8cd9012345ef67abcd890e1`인 환경에 초대하려면 다음 명령을 실행합니다.

```
aws cloud9 create-environment-membership --environment-id 12a34567b8cd9012345ef67abcd890e1 --user-arn arn:aws:iam::123456789012:root --permissions read-write
```

**참고**  
를 사용하는 경우 이전 명령에서 `aws` 접두사를 AWS CloudShell생략합니다.

# 공유 환경 열기
<a name="share-environment-open"></a>

공유 환경을 열려면 AWS Cloud9 대시보드를 사용할 수 있습니다. AWS Cloud9 IDE를 사용하여 공유 환경에서 작업을 수행하고 작업을 완료합니다. 예를 들면 파일 작업 및 다른 팀 구성원과의 채팅이 있습니다.

1. 해당하는 액세스 정책이 사용자에 대한 그룹 또는 역할에 연결되어 있는지 확인합니다. 자세한 내용은 [환경 멤버 액세스 역할 정보](share-environment.md#share-environment-member-roles)를 참조하십시오.

1. 다음과 같이 AWS Cloud9 콘솔에 로그인합니다.
   + 를 사용하는 유일한 개인 AWS 계정 이거나 단일에서 IAM 사용자인 경우 [https://console.aws.amazon.com/cloud9/](https://console.aws.amazon.com/cloud9/) AWS 계정이동합니다.
   + 조직에서 IAM Identity Center를 사용하는 경우 AWS 계정 관리자에게 로그인 지침을 문의하세요.
   + 교실의 학생인 경우 로그인 지침은 강사에게 문의하십시오.

1.  AWS Cloud9 대시보드에서 공유 환경을 엽니다. 자세한 내용은 [AWS Cloud9에서 환경 열기](open-environment.md)를 참조하세요.

[**협업(Collaborate)**] 창에서 이 주제의 나머지 부분에서 설명하는 것처럼 다른 멤버와 상호 작용합니다.

**참고**  
**Collaborate**(협업) 창이 보이지 않으면 **Collaborate**(협업)를 선택합니다. [**협업(Collaborate)**] 버튼이 표시되지 않으면 메뉴 모음에서 [**창, 협업(Window, Collaborate)**]을 선택합니다.

![\[AWS Cloud9 IDE의 공동 작업 창\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/ide-collaborate.png)


# 환경 멤버 목록 보기
<a name="share-environment-members-list"></a>

공유 환경이 열려 있는 상태에서**협업**창에서 확장**멤버 환경**, 구성원 목록이 표시되지 않는 경우.

각 멤버 옆에 있는 원은 다음과 같이 멤버의 온라인 상태를 나타냅니다.
+ 활성 멤버에는 녹색 원이 표시되어 있습니다.
+ 오프라인 멤버에는 회색 원이 표시되어 있습니다.
+ 유휴 멤버에는 주황색 원이 표시되어 있습니다.

![\[AWS Cloud9 IDE의 멤버 온라인 상태\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/ide-collaborate-status.png)


코드를 사용하여 환경 멤버 목록을 가져오려면 다음과 같이 환경 멤버십 AWS Cloud9 설명 작업을 호출합니다.


****  

|  |  | 
| --- |--- |
|  AWS CLI  |   [describe-environment-memberships](https://docs.aws.amazon.com/cli/latest/reference/cloud9/describe-environment-memberships.html)   | 
|  AWS SDK for C\$1\$1  |   [DescribeEnvironmentMembershipsRequest](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_describe_environment_memberships_request.html), [DescribeEnvironmentMembershipsResult](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_describe_environment_memberships_result.html)   | 
|  AWS SDK for Go  |   [DescribeEnvironmentMemberships](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.DescribeEnvironmentMemberships), [DescribeEnvironmentMembershipsRequest](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.DescribeEnvironmentMembershipsRequest), [DescribeEnvironmentMembershipsWithContext](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.DescribeEnvironmentMembershipsWithContext)   | 
|  AWS SDK for Java  |   [DescribeEnvironmentMembershipsRequest](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloud9/model/DescribeEnvironmentMembershipsRequest.html), [DescribeEnvironmentMembershipsResult](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloud9/model/DescribeEnvironmentMembershipsResult.html)   | 
|  AWS SDK for JavaScript  |   [describeEnvironmentMemberships](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Cloud9.html#describeEnvironmentMemberships-property)   | 
|  AWS SDK for .NET  |   [DescribeEnvironmentMembershipsRequest](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TDescribeEnvironmentMembershipsRequest.html), [DescribeEnvironmentMembershipsResponse](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TDescribeEnvironmentMembershipsResponse.html)   | 
|  AWS SDK for PHP  |   [describeEnvironmentMemberships](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloud9-2017-09-23.html#describeenvironmentmemberships)   | 
|  AWS SDK for Python (Boto)  |   [describe\$1environment\$1memberships](https://boto3.readthedocs.io/en/latest/reference/services/cloud9.html#Cloud9.Client.describe_environment_memberships)   | 
|  AWS SDK for Ruby  |   [describe\$1environment\$1memberships](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/Cloud9/Client.html#describe_environment_memberships-instance_method)   | 
|  AWS Tools for Windows PowerShell  |   [Get-C9EnvironmentMembershipList](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-C9EnvironmentMembershipList.html)   | 
|  AWS Cloud9 API  |   [DescribeEnvironmentMemberships](https://docs.aws.amazon.com/cloud9/latest/APIReference/API_DescribeEnvironmentMemberships.html)   | 

# 환경 멤버의 활성 파일 열기
<a name="share-environment-active-file"></a>

이 단계에서는 환경 멤버의 활성 파일을 열 수 있는 방법을 알아봅니다.

공유 환경이 열려 상태에서 메뉴 모음에서 멤버 이름을 선택합니다. **Open Active File**(활성 파일 열기)을 선택합니다.

![\[AWS Cloud9 IDE의 활성 파일 열기 명령\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/ide-collaborate-active-file.png)


# 환경 멤버의 열어 놓은 파일 열기
<a name="share-environment-open-file"></a>

이 단계에서는 환경 멤버의 열어 놓은 파일을 열 수 있는 방법을 알아봅니다.

1. 공유 환경이 열려 있는 상태에서**협업**창에서 확장**멤버 환경**, 구성원 목록이 표시되지 않는 경우.

1. 환경에서 열려고 하는 열린 파일을 소유한 사용자의 이름을 확장합니다.

1. 열려는 파일의 이름을 엽니다(두 번 클릭).

![\[AWS Cloud9 IDE에서 팀원의 파일 열기\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/ide-collaborate-open-file.png)


# 환경 멤버의 활성 커서로 이동
<a name="share-environment-active-cursor"></a>

이 단계에서는 환경 멤버의 활성 커서를 탐색할 수 있는 방법을 알아봅니다.

1. 공유 환경이 열려 있는 상태에서**협업**창에서 확장**멤버 환경**, 구성원 목록이 표시되지 않는 경우.

1. 멤버 이름에 대한 컨텍스트 메뉴를 열고(마우스 오른쪽 버튼 클릭) **Show Location**(위치 표시)을 선택합니다.

# 공유 환경에서 채팅 관리
<a name="chat-delete-share-environment"></a>

이 주제에서는 다른 환경 멤버와 채팅하고, 공유 환경에서 채팅 메시지를 보고, 공유 환경에서 삭제하는 방법을 설명합니다.

## 다른 환경 멤버와 채팅
<a name="share-environment-chat"></a>

공유 환경이 열려 있는 상태에서, [**협업(Collaborate)**] 창 하단에서 [**여기에 메시지 입력(Enter your message here)**]에 채팅 메시지를 입력하고 `Enter` 키를 누릅니다.

![\[AWS Cloud9 IDE의 채팅 영역\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/ide-collaborate-chat.png)


## 공유 환경에서 채팅 메시지 보기
<a name="share-environment-chat-view"></a>

채팅 메시지 목록이 표시되지 않는 경우, 공유 환경을 연 상태로 **Collaborate**(협업) 창에서 **Group Chat**(그룹 채팅)을 확장합니다.

## 공유 환경에서 채팅 메시지 삭제
<a name="share-environment-chat-delete"></a>

공유 환경이 열려 있을 때 **Collaborate**(협업) 창에서 **Group Chat**(그룹 채팅)의 채팅 메시지에 대한 컨텍스트 메뉴(마우스 오른쪽 버튼으로 클릭)를 엽니다. 그런 다음, **Delete Message**(메시지 삭제)를 선택합니다.

**참고**  
채팅 메시지를 삭제하면 환경에서 모든 멤버에 대해 삭제됩니다.

## 공유 환경에서 모든 채팅 메시지 삭제
<a name="share-environment-chat-delete-all"></a>

공유 환경이 열려 있는 상태에서, **Collaborate**(협업) 창에서 **Group Chat**(그룹 채팅)의 아무 곳이나 컨텍스트 메뉴(마우스 오른쪽 버튼으로 클릭)를 선택합니다. 그런 다음, **Clear history**(기록 삭제)를 선택합니다.

**참고**  
채팅 메시지를 모두 삭제하면 모든 멤버에 대한 환경에서 삭제됩니다.

# 환경 멤버의 액세스 역할 변경
<a name="share-environment-change-access"></a>

이 단계에서는 환경 멤버의 액세스 역할을 변경할 수 있는 방법을 알아봅니다. 코드를 사용하여 액세스 역할을 변경하고 AWS Cloud9 환경 멤버십을 업데이트할 수도 있습니다.

1. 환경을 아직 열지 않은 경우 현재 소유하고 있고 변경하려는 액세스 역할을 가진 멤버가 포함된 환경을 엽니다. 자세한 내용은 [AWS Cloud9에서 환경 열기](open-environment.md)를 참조하세요.

1. 멤버 목록이 표시되지 않을 경우 **Collaborate**(협업) 창에서 **Environment Members**(환경 멤버)를 확장합니다.

1. 다음 작업 중 하나를 수행합니다.
   + 변경하려는 액세스 역할을 가진 멤버 이름 옆에서 **R** 또는 **RW**를 선택하여 이것을 멤버 소유자 또는 읽기/쓰기로 각각 설정합니다.
   + 읽기/쓰기 멤버를 읽기 전용 멤버로 변경하려면 멤버 이름에 대한 컨텍스트 메뉴(마우스 오른쪽 버튼으로 클릭)를 연 다음 **Revoke Write Access**(쓰기 액세스 취소)를 선택합니다.
   + 읽기 전용 멤버를 읽기/쓰기 멤버로 변경하려면 멤버 이름에 대한 컨텍스트 메뉴(마우스 오른쪽 버튼으로 클릭)를 연 다음, **Grant Read\$1Write Access**(읽기\$1쓰기 액세스 부여)를 선택합니다.
**참고**  
이 사용자를 읽기/쓰기 멤버로 설정하면 AWS 보안 자격 증명을 위험에 빠뜨릴 수 있는 정보가 포함된 대화 상자가 표시됩니다. 해당 사용자가 AWS 사용자를 대신하여에서 작업을 수행할 것으로 신뢰하지 않는 한 사용자를 읽기/쓰기 멤버로 만들지 마십시오. 자세한 내용은 [동일한 계정의 사용자를 환경으로 초대](share-environment.md#share-environment-invite-user)의 관련 참고 사항을 참조하십시오.

코드를 사용하여 환경 멤버의 액세스 역할을 변경하려면 다음과 같이 환경 멤버십 AWS Cloud9 업데이트 작업을 호출합니다.


****  

|  |  | 
| --- |--- |
|  AWS CLI  |   [update-environment-membership](https://docs.aws.amazon.com/cli/latest/reference/cloud9/update-environment-membership.html)   | 
|  AWS SDK for C\$1\$1  |   [UpdateEnvironmentMembershipRequest](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_update_environment_membership_request.html), [UpdateEnvironmentMembershipResult](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_update_environment_membership_result.html)   | 
|  AWS SDK for Go  |   [UpdateEnvironmentMembership](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.UpdateEnvironmentMembership), [UpdateEnvironmentMembershipRequest](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.UpdateEnvironmentMembershipRequest), [UpdateEnvironmentMembershipWithContext](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.UpdateEnvironmentMembershipWithContext)   | 
|  AWS SDK for Java  |   [UpdateEnvironmentMembershipRequest](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloud9/model/UpdateEnvironmentMembershipRequest.html), [UpdateEnvironmentMembershipResult](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloud9/model/UpdateEnvironmentMembershipResult.html)   | 
|  AWS SDK for JavaScript  |   [updateEnvironmentMembership](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Cloud9.html#updateEnvironmentMembership-property)   | 
|  AWS SDK for .NET  |   [UpdateEnvironmentMembershipRequest](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TUpdateEnvironmentMembershipRequest.html), [UpdateEnvironmentMembershipResponse](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TUpdateEnvironmentMembershipResponse.html)   | 
|  AWS SDK for PHP  |   [updateEnvironmentMembership](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloud9-2017-09-23.html#updateenvironmentmembership)   | 
|  AWS SDK for Python (Boto)  |   [update\$1environment\$1membership](https://boto3.readthedocs.io/en/latest/reference/services/cloud9.html#Cloud9.Client.update_environment_membership)   | 
|  AWS SDK for Ruby  |   [update\$1environment\$1membership](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/Cloud9/Client.html#update_environment_membership-instance_method)   | 
|  AWS Tools for Windows PowerShell  |   [Update-C9EnvironmentMembership](https://docs.aws.amazon.com/powershell/latest/reference/items/Update-C9EnvironmentMembership.html)   | 
|  AWS Cloud9 API  |   [UpdateEnvironmentMembership](https://docs.aws.amazon.com/cloud9/latest/APIReference/API_UpdateEnvironmentMembership.html)   | 

# 공유 환경에서 사용자 제거
<a name="share-environment-delete-you"></a>

이 단계에서는 공유 환경에서 사용자를 제거할 수 있는 방법을 알아봅니다.

**참고**  
환경 소유자가 아니라면 환경에서 사용자를 제거할 수 없습니다.  
환경에서 사용자를 제거해도 IAM에서 제거되는 것은 아닙니다.

1. 멤버 목록이 표시되지 않을 경우 공유 환경이 열려 있는 상태로 [**협업(Collaborate)**] 창에서 [**환경 멤버(Environment Members)**]를 확장합니다.

1. 다음 작업 중 하나를 수행합니다.
   + **You(현재 사용자)** 옆에서 휴지통 아이콘을 선택합니다.
   + **여러분**을 위한 컨텍스트(마우스 오른쪽 버튼으로 클릭) 메뉴를 선택한 후 **Leave environment**(환경 나가기)를 선택합니다.

1. 메시지가 나타나면 **Leave(나가기)**를 선택합니다.

코드를 사용하여 공유 환경에서 사용자를 제거하려면 다음과 같이 환경 멤버십 AWS Cloud9 삭제 작업을 호출합니다.


****  

|  |  | 
| --- |--- |
|  AWS CLI  |   [delete-environment-membership](https://docs.aws.amazon.com/cli/latest/reference/cloud9/delete-environment-membership.html)   | 
|  AWS SDK for C\$1\$1  |   [DeleteEnvironmentMembershipRequest](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_delete_environment_membership_request.html), [DeleteEnvironmentMembershipResult](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_delete_environment_membership_result.html)   | 
|  AWS SDK for Go  |   [DeleteEnvironmentMembership](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.DeleteEnvironmentMembership), [DeleteEnvironmentMembershipRequest](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.DeleteEnvironmentMembershipRequest), [DeleteEnvironmentMembershipWithContext](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.DeleteEnvironmentMembershipWithContext)   | 
|  AWS SDK for Java  |   [DeleteEnvironmentMembershipRequest](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloud9/model/DeleteEnvironmentMembershipRequest.html), [DeleteEnvironmentMembershipResult](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloud9/model/DeleteEnvironmentMembershipResult.html)   | 
|  AWS SDK for JavaScript  |   [deleteEnvironmentMembership](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Cloud9.html#deleteEnvironmentMembership-property)   | 
|  AWS SDK for .NET  |   [DeleteEnvironmentMembershipRequest](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TDeleteEnvironmentMembershipRequest.html), [DeleteEnvironmentMembershipResponse](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TDeleteEnvironmentMembershipResponse.html)   | 
|  AWS SDK for PHP  |   [deleteEnvironmentMembership](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloud9-2017-09-23.html#deleteenvironmentmembership)   | 
|  AWS SDK for Python (Boto)  |   [delete\$1environment\$1membership](https://boto3.readthedocs.io/en/latest/reference/services/cloud9.html#Cloud9.Client.delete_environment_membership)   | 
|  AWS SDK for Ruby  |   [delete\$1environment\$1membership](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/Cloud9/Client.html#delete_environment_membership-instance_method)   | 
|  AWS Tools for Windows PowerShell  |   [Remove-C9EnvironmentMembership](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-C9EnvironmentMembership.html)   | 
|  AWS Cloud9 API  |   [DeleteEnvironmentMembership](https://docs.aws.amazon.com/cloud9/latest/APIReference/API_DeleteEnvironmentMembership.html)   | 

# 다른 공유 멤버 제거
<a name="share-environment-delete-member"></a>

이 단계에서는 환경에서 사용자 이외의 멤버를 제거할 수 있는 방법을 설명합니다.

**참고**  
환경에서 내 사용자가 아닌 멤버를 제거하려면 환경 소유자의 보안 인증 정보를 사용하여 AWS Cloud9 에 로그인해야 합니다.  
멤버를 제거한다고 해서 IAM에서 해당 사용자가 제거되는 것은 아닙니다.

1. 환경을 아직 열지 않은 경우 제거하려는 멤버가 포함된 환경을 엽니다. 자세한 내용은 [AWS Cloud9에서 환경 열기](open-environment.md)를 참조하세요.

1. 멤버 목록이 표시되지 않을 경우 [**협업(Collaborate)**] 창에서 [**환경 멤버(Environment Members)**]를 확장합니다.

1. 다음 중 하나를 수행하세요.
   + 삭제할 멤버의 이름 옆에 있는 휴지통 아이콘을 선택합니다.
   + 삭제하려는 멤버의 이름에 대한 컨텍스트 메뉴(마우스 오른쪽 버튼으로 클릭)를 연 다음, **Revoke Access**(액세스 취소)를 선택합니다.

1. 메시지가 나타나면 **Remove Member(멤버 제거)**를 선택합니다.

코드를 사용하여 환경에서 멤버를 제거하려면 다음과 같이 환경 멤버십 AWS Cloud9 삭제 작업을 호출합니다.


****  

|  |  | 
| --- |--- |
|  AWS CLI  |   [delete-environment-membership](https://docs.aws.amazon.com/cli/latest/reference/cloud9/delete-environment-membership.html)   | 
|  AWS SDK for C\$1\$1  |   [DeleteEnvironmentMembershipRequest](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_delete_environment_membership_request.html), [DeleteEnvironmentMembershipResult](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_delete_environment_membership_result.html)   | 
|  AWS SDK for Go  |   [DeleteEnvironmentMembership](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.DeleteEnvironmentMembership), [DeleteEnvironmentMembershipRequest](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.DeleteEnvironmentMembershipRequest), [DeleteEnvironmentMembershipWithContext](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.DeleteEnvironmentMembershipWithContext)   | 
|  AWS SDK for Java  |   [DeleteEnvironmentMembershipRequest](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloud9/model/DeleteEnvironmentMembershipRequest.html), [DeleteEnvironmentMembershipResult](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloud9/model/DeleteEnvironmentMembershipResult.html)   | 
|  AWS SDK for JavaScript  |   [deleteEnvironmentMembership](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Cloud9.html#deleteEnvironmentMembership-property)   | 
|  AWS SDK for .NET  |   [DeleteEnvironmentMembershipRequest](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TDeleteEnvironmentMembershipRequest.html), [DeleteEnvironmentMembershipResponse](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TDeleteEnvironmentMembershipResponse.html)   | 
|  AWS SDK for PHP  |   [deleteEnvironmentMembership](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloud9-2017-09-23.html#deleteenvironmentmembership)   | 
|  AWS SDK for Python (Boto)  |   [delete\$1environment\$1membership](https://boto3.readthedocs.io/en/latest/reference/services/cloud9.html#Cloud9.Client.delete_environment_membership)   | 
|  AWS SDK for Ruby  |   [delete\$1environment\$1membership](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/Cloud9/Client.html#delete_environment_membership-instance_method)   | 
|  AWS Tools for Windows PowerShell  |   [Remove-C9EnvironmentMembership](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-C9EnvironmentMembership.html)   | 
|  AWS Cloud9 API  |   [DeleteEnvironmentMembership](https://docs.aws.amazon.com/cloud9/latest/APIReference/API_DeleteEnvironmentMembership.html)   | 

# 환경 공유 모범 사례
<a name="share-environment-best-practices"></a>

환경 공유 시 다음과 같은 모범 사례를 권장합니다.
+ 신뢰할 수 있는 읽기/쓰기 멤버만 환경에 초대합니다.
+ EC2 환경의 경우 읽기/쓰기 멤버는 환경 소유자의 AWS 액세스 자격 증명을 사용하여 환경에서 호출할 수 있습니다 AWS 서비스. 이것은 자신의 보안 인증 정보 대신 사용됩니다. 이를 방지하기 위해 환경 소유자는 환경에 대한 AWS 관리형 임시 자격 증명을 비활성화할 수 있습니다. 그러나 이렇게 하면 환경 소유자도 호출할 수 없습니다. 자세한 내용은 [AWS 관리형 임시 자격 증명](security-iam.md#auth-and-access-control-temporary-managed-credentials)을 참조하세요.
+ 환경의 활동을 추적 AWS CloudTrail 하려면를 켭니다. 자세한 내용은 [AWS CloudTrail 사용 설명서](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)를 참조하십시오.
+  AWS 계정 루트 사용자를 사용하여 환경을 생성하고 공유하지 마세요. 대신 계정 내 IAM 사용자를 사용합니다. 자세한 내용은 *IAM 사용 설명서*에서 [첫 액세스에만 해당: 루트 사용자 보안 인증 정보](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_identity-management.html#intro-identity-first-time-access) 및 [IAM 사용자](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_identity-management.html#intro-identity-users)를 참조하세요.

# Amazon EBS 볼륨에서 AWS Cloud9 IDE 이동
<a name="move-environment"></a>

 AWS Cloud9 개발 환경을 한 Amazon EC2 인스턴스에서 다른 인스턴스로 이동할 수 있습니다. 예를 들어, 다음 작업을 수행할 수 있습니다.
+ 정상적인 인스턴스와 비교하여 장애가 발생하거나 예기치 않은 방식으로 작동하는 Amazon EC2 인스턴스에서 환경을 이전합니다.
+ 기존 인스턴스에서 최신 시스템 업데이트가 설치된 인스턴스로 환경을 이전합니다.
+ 현재 인스턴스에서 환경이 과도하게 사용되거나 잘 사용되지 않으므로 인스턴스의 컴퓨팅 리소스를 늘리거나 줄입니다.

프로젝트 파일을 유지하면서 새 AWS Cloud9 EC2 환경으로 마이그레이션하여 AWS Cloud9 지원되는 AMI에서 다른 AMI로 업그레이드할 수 있습니다. 다음과 같은 이유로 다른 버전의 AMI로 업그레이드하려고 할 수 있습니다.
+ 현재 환경의 AMI가 수명이 만료되어 더 이상 지원되지 않습니다.
+ 필요한 패키지는 현재 AMI에서 오래되었습니다.

또한 환경의 Amazon EC2 인스턴스와 연결되어 있는 Amazon Elastic Block Store(Amazon EBS) 볼륨의 크기를 조정할 수도 있습니다. 예를 들어, 다음 작업 중 하나 또는 모두를 수행할 수 있습니다.
+ 해당 인스턴스에 스토리지 공간이 부족하므로 볼륨의 크기를 늘립니다.
+ 사용하고 있지 않은 추가 스토리지 공간에 대해 요금을 지불하기를 원치 않으므로 볼륨의 크기를 줄입니다.

환경을 이동하거나 크기를 조정하려면 먼저 환경에서 실행 중인 프로세스를 중지하거나 스왑 파일을 환경에 추가해 볼 수 있습니다. 메모리 부족 또는 높은 CPU 사용률 문제를 해결하는 방법에 관한 자세한 내용은 [*문제 해결*](troubleshooting.md#troubleshooting-ide-low-memory)을 참조하세요.

**참고**  
이 주제에서는 Amazon EC2 인스턴스에서 다른 인스턴스로 환경을 이동하거나 Amazon EBS 볼륨의 크기를 조정하는 작업에 대해서만 설명합니다. 고유 서버 중 하나에서 환경의 크기를 조정하거나 고유 서버 중 하나에 대한 스토리지 공간을 변경하려면 서버 설명서를 참조하세요.

마지막으로 Amazon EBS 리소스를 암호화하여 인스턴스와 그것에 연결된 EBS 스토리지 간에 저장 데이터 및 전송 중 데이터의 보안을 모두 구현합니다.

## 환경 이동
<a name="move-environment-move"></a>

이동 프로세스를 시작하기 전에 다음 조건을 유의하세요.
+ 환경을 동일한 유형의 Amazon EC2 인스턴스로 이동할 수 없습니다. 이동 시 새 인스턴스에 대해 다른 Amazon EC2 인스턴스를 선택해야 합니다.
**중요**  
환경을 다른 Amazon EC2 인스턴스 유형으로 이동하는 경우 해당 인스턴스 유형도 현재 AWS Cloud9 에서 지원되어야 합니다 AWS 리전. 각 리전에서 사용할 수 있는 인스턴스 유형을 확인하려면 [콘솔을 사용하여 EC2 환경을 생성](create-environment-main.md#create-environment-console)할 때 표시되는 **Configure settings**(설정 구성) 페이지로 이동하세요. **인스턴스 유형** 섹션의 선택은 콘솔의 오른쪽 상단에 AWS 리전 선택된에 따라 결정됩니다.
+ 인스턴스 유형을 변경하려면 먼저 환경과 연결된 Amazon EC2 인스턴스를 중지해야 합니다. 인스턴스가 중지된 상태에서는 본인을 비롯한 어떤 멤버도 중지된 인스턴스와 연결된 환경을 사용할 수 없습니다.
+ AWS 는 인스턴스를 새 하드웨어로 이동하지만 인스턴스의 ID는 변경되지 않습니다.
+ 인스턴스가 Amazon VPC에서 실행 중이고 퍼블릭 IPv4 주소가 있는 경우는 주소를 AWS 해제하고 인스턴스에 새 퍼블릭 IPv4 주소를 부여합니다. 인스턴스는 프라이빗 IPv4 주소와 모든 탄력적 IP 주소 또는 IPv6 주소를 유지합니다.
+ 인스턴스가 중단된 동안의 가동 중지 시간을 계획합니다. 이 프로세스는 완료하는 데 몇 분이 걸릴 수 있습니다.

**환경을 이동하려면**

1. (선택 사항) 기존 인스턴스에 설치되지 않은 드라이버가 새로운 인스턴스 유형에 필요한 경우, 인스턴스에 연결하여 해당 드라이버를 설치합니다. 자세한 내용은 *Amazon EC2 사용 설명서*의 [인스턴스 크기 조정을 위한 호환성](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-resize.html#resize-limitations)을 참조하세요.

1. 환경이 현재 표시된 모든 웹 브라우저 탭을 닫습니다.
**중요**  
현재 환경을 표시하고 있는 웹 브라우저 탭을 모두 닫지 않으면이 절차를 완료하는 데 방해가 될 수 AWS Cloud9 있습니다. 특히이 절차 중에 잘못된 시간에를 AWS Cloud9 시도하여 환경과 연결된 Amazon EC2 인스턴스를 다시 시작할 수 있습니다. 이 절차의 마지막 단계에 도달할 때까지 인스턴스를 중지된 상태로 유지해야 합니다.

1. 아직 로그인하지 않은 AWS Management Console경우 [https://console.aws.amazon.com](https://console.aws.amazon.com/)에 로그인합니다.

   에서 관리자 수준 자격 증명을 사용하여 로그인하는 것이 좋습니다 AWS 계정. 이렇게 할 수 없는 경우 AWS 계정 관리자에게 문의하십시오.

1. Amazon EC2 콘솔을 엽니다. 이렇게 하려면 **서비스** 목록에서 **EC2**를 선택합니다.

1.  AWS 탐색 모음에서 이동하려는 환경(예: 미국 동부(오하 AWS 리전 이오))이 포함된를 선택합니다. **** 

1. 서비스 탐색 모음에서 [**인스턴스(Instances)**]를 확장하고 나서 [**인스턴스(Instances)**]를 선택합니다.

1. 인스턴스 목록에서 이동할 환경과 연결된 인스턴스를 선택합니다. EC2 환경의 경우 인스턴스 이름은 `aws-cloud9-`으로 시작하고 뒤에 환경 이름이 붙습니다. 예를 들어 환경 이름이 `my-demo-environment`인 경우, 인스턴스 이름은 `aws-cloud9-my-demo-environment`로 시작합니다.

1. **인스턴스 상태**가 **중지됨**이 아니면 **작업**, **인스턴스 상태**, **중지**를 선택합니다. 메시지가 표시되면 **Yes, Stop(예, 중지)**을 선택합니다. 인스턴스가 중지하는 데 몇 분 정도 걸릴 수 있습니다.

1. [**인스턴스 상태(Instance State)**]가 [**중지됨(stopped)**]으로 설정되고 나면 해당 인스턴스가 여전히 선택된 상태에서 [**작업(Actions)**], [**인스턴스 설정(Instance Settings)**], [**인스턴스 유형 변경(Change Instance Type)**]을 선택합니다.

1. [**인스턴스 유형 변경(Change Instance Type)**] 대화 상자에서 환경에 사용할 새 [**인스턴스 유형(Instance Type)**]을 선택합니다.
**참고**  
원하는 인스턴스 유형이 목록에 없으면 해당 인스턴스의 구성과 호환되지 않는 것입니다. 예를 들어 가상화 유형 때문에 인스턴스가 호환되지 않을 수 있습니다.

1. (선택 영역) 선택한 인스턴스 유형이 EBS 최적화를 지원하는 경우 **EBS-optimized(EBS 최적화)**를 선택하여 EBS 최적화를 활성화하거나, **EBS-optimized(EBS 최적화)**의 선택을 취소하여 EBS 최적화를 비활성화합니다.
**참고**  
선택한 인스턴스 유형이 기본적으로 EBS에 최적화된 경우 [**EBS 최적화(EBS-optimized)**]가 선택되고 이 선택을 취소할 수 없습니다.

1. **적용**을 선택하여 새로운 설정을 승인합니다.
**참고**  
이 절차의 앞부분에서 [**인스턴스 유형(Instance Type)**]으로 다른 인스턴스 유형을 선택하지 않은 경우 [**적용(Apply)**]을 선택해도 아무런 동작이 발생하지 않습니다.

1. 환경을 다시 엽니다. 자세한 내용은 [에서 환경 열기 AWS Cloud9](open-environment.md) 단원을 참조하십시오.

앞의 절차에 대한 자세한 내용은 *Amazon EC2 사용 설명서*에서 [인스턴스 유형 변경](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-resize.html)을 참조하세요.

## an AWS Cloud9 EC2 환경을 다른 Amazon Machine Image(AMI)로 이동
<a name="moving-ec2-environ-to-ami"></a>

 

이 주제에서는 한 Amazon Linux AMI에서 지원되는 다른 AWS Cloud9 AMI로 AWS Cloud9 EC2 환경을 마이그레이션하는 방법을 설명합니다.

**참고**  
OS 버전을 업데이트하지 않고 환경을 새 인스턴스로 이동하려면 [환경 이동](#move-environment-move) 섹션을 참조하세요.

다음 절차 중 하나를 사용하여 환경 간에 데이터를 마이그레이션할 수 있습니다.

**로컬 시스템에 아카이브를 다운로드하여 환경 옮기기**

1. 다른 기본 이미지로 동일한 가용 영역에 새 환경을 생성합니다.

   1. [EC2 환경 생성](create-environment-main.md) 섹션의 단계를 완료하여 새 환경을 생성합니다.
**참고**  
**플랫폼**을 선택하는 동안 환경을 마이그레이션할 플랫폼을 선택합니다.

   1. 기본적으로 환경은 10GiB 볼륨으로 생성됩니다. 아카이브를 새 환경에 업로드하거나 압축을 풀 공간이 충분하지 않을 경우 [환경에서 사용하는 Amazon EBS 볼륨 크기 조정](move-environment-resize.md) 절차의 단계를 완료하여 Amazon EBS 볼륨 크기를 조정합니다.

1.  AWS Cloud9 IDE에서 마이그레이션할 환경을 엽니다.

1.  AWS Cloud9 IDE가 로드된 후 메뉴에서 **파일** > **프로젝트 다운로드**를 선택하여 환경 프로젝트 디렉터리의 내용이 포함된 아카이브를 다운로드합니다.

1. 새 환경에서 AWS Cloud9 IDE를 엽니다.

1. **파일** > **로컬 파일 업로드...**를 선택하여 아카이브를 업로드합니다.

1. (선택 사항) 이전 `.c9` 디렉터리를 `.c9.backup`에 백업하려면 환경 터미널에서 다음 명령을 실행합니다.

   ```
   cp .c9 .c9.backup
   ```

   나중에 구성 파일을 복원하려는 경우 해당 백업 파일이 필요할 수 있습니다.

1. 아카이브의 압축을 풀려면 다음 명령을 실행합니다.

   ```
   tar xzvf <old_environment_name>.tar.gz -C ~/
   ```

1. 프로젝트 디렉터리에서 아카이브를 삭제하려면 다음 명령을 실행합니다.

   ```
   rm <old_environment_name>.tar.gz
   ```

   새 환경이 예상대로 작동하는지 확인합니다.

1. 이제 이전 환경을 삭제할 수 있습니다.

**Amazon EBS 볼륨을 사용하여 환경 옮기기**

아카이브를 다운로드할 수 없거나 아카이브가 너무 클 경우 Amazon EBS 볼륨을 사용하여 마이그레이션할 수 있습니다. 이 방법을 사용하면 `~/environment` 디렉터리 외부에 위치한 파일을 복사할 수도 있습니다.

1. 기존 환경에서 열려 있는 모든 AWS Cloud9 IDE 탭을 닫습니다.

1. 기존 인스턴스를 삭제하려면 다음 단계를 완료합니다.

   1.  AWS Cloud9 콘솔에서 탐색할 환경을 선택하여 세부 정보를 봅니다.

   1. **환경 세부 정보** 페이지의 **EC2 인스턴스** 탭에서 **EC2 인스턴스 관리**를 선택합니다.

   1. EC2 콘솔에서 인스턴스를 선택하여 인스턴스 세부 정보로 이동합니다.

   1. **인스턴스 상태**가 **중지됨**으로 설정되어 있는지 확인합니다. 설정된 상태가 아닐 경우 **인스턴스 상태** 드롭다운 목록에서 **인스턴스 중지**를 선택합니다. 메시지가 표시되면 **중지**를 선택합니다. 인스턴스가 중지하는 데 몇 분 정도 걸릴 수 있습니다.

1. 다른 기본 이미지로 동일한 가용 영역에 새 환경을 생성합니다.

   1. [EC2 환경 생성](create-environment-main.md) 섹션의 단계를 완료하여 새 환경을 생성합니다.
**참고**  
**플랫폼**을 선택하는 동안 환경을 마이그레이션할 플랫폼을 선택합니다.

   1. 기본적으로 환경은 10GiB 볼륨으로 생성됩니다. 소스 볼륨에서 새 환경으로 파일을 옮길 공간이 충분하지 않을 경우 [환경에서 사용하는 Amazon EBS 볼륨 크기 조정](move-environment-resize.md) 절차의 단계를 완료하여 Amazon EBS 볼륨 크기를 조정합니다.

1. 다음 단계를 완료하여 기존 인스턴스에서 볼륨을 분리합니다.

   1. **인스턴스 요약** 페이지에서 **스토리지** 탭을 선택하고 볼륨을 선택합니다. 선택한 볼륨의 디바이스 이름은 **루트 디바이스 세부 정보** 섹션의 **루트 디바이스 이름**에 지정된 것과 동일해야 합니다.

   1. 볼륨 세부 정보 페이지에서 **작업** > **볼륨 분리**를 선택합니다.

   1. 볼륨이 성공적으로 분리되면 **작업** > **볼륨 연결**을 선택한 다음, 드롭다운 목록에서 새 환경의 인스턴스를 찾아 선택합니다. 선택한 Amazon EC2 인스턴스의 이름에는 접두사가 붙은 AWS Cloud9 환경 이름이 포함되어야 합니다`aws-cloud9`.

1. 새 환경에서 AWS Cloud9 IDE를 엽니다.

1. 환경이 로드된 후 새로 연결된 볼륨의 디바이스를 식별하려면 터미널에서 다음 명령을 실행합니다.

   ```
   lsblk
   ```

   다음 샘플 출력에서는 루트 디바이스 `nvme0n1`의 파티션 `nvme0n1p1`이 이미 탑재되어 있으므로 `nvme1n1p1` 파티션도 탑재해야 합니다. 디바이스의 전체 경로는 `/dev/nvme1n1p1`입니다.

   ```
   Admin:~/environment $ lsblk
   NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
   nvme0n1       259:0    0  10G  0 disk 
   ├─nvme0n1p1   259:2    0  10G  0 part /
   ├─nvme0n1p127 259:3    0   1M  0 part 
   └─nvme0n1p128 259:4    0  10M  0 part /boot/efi
   nvme1n1       259:1    0  10G  0 disk 
   ├─nvme1n1p1   259:5    0  10G  0 part 
   └─nvme1n1p128 259:6    0   1M  0 part
   ```
**참고**  
터미널에서 이 명령을 실행할 때 출력은 상이합니다.

1. 환경 터미널에서 다음 단계를 완료하여 기존 볼륨을 탑재합니다.

   1. 볼륨의 파티션이 탑재될 임시 디렉터리를 생성하려면 다음 명령을 실행합니다.

      ```
      MOUNT_POINT=$(mktemp -d)
      ```

   1. `lsblk` 명령의 샘플 출력에 따라 탑재할 디바이스의 다음 경로를 지정합니다.

      ```
      MOUNT_DEVICE=/dev/nvme1n1p1
      ```
**참고**  
터미널에서 이 명령을 실행할 때 출력은 상이합니다.

   1. 기존 볼륨을 탑재하려면 다음 명령을 실행합니다.

      ```
      sudo mount $MOUNT_DEVICE $MOUNT_POINT
      ```

   1. 다음 단계를 완료하여 기존 볼륨이 올바르게 탑재되었는지 확인합니다.

      1. 볼륨을 출력에 포함하려면 다음 명령을 실행합니다.

         ```
         df -h
         ```

      1. 볼륨 내용을 확인하려면 다음 명령을 실행합니다.

         ```
         ls $MOUNT_POINT/home/ec2-user/environment/
         ```

1. (선택 사항) 이전 `.c9` 디렉터리를 `.c9.backup`에 백업하려면 환경 터미널에서 다음 명령을 실행합니다.

   ```
   cp .c9 .c9.backup
   ```

   나중에 구성 파일을 복원하려는 경우 해당 백업 파일이 필요할 수 있습니다.

1. 기존 볼륨에서 이전 환경을 복사하려면 다음 명령을 실행합니다.

   ```
   cp -R $MOUNT_POINT/home/ec2-user/environment ~
   ```
**참고**  
필요한 경우 이전 명령을 사용하여 환경 디렉터리 외부에 파일 또는 디렉터리를 복사할 수도 있습니다.

   새 환경이 예상대로 작동하는지 확인합니다.

1. 이전 디바이스의 탑재를 해제하려면 다음 두 가지 명령 중 하나를 실행합니다.

   ```
   sudo umount $MOUNT_DEVICE
   ```

   ```
   sudo umount $MOUNT_POINT
   ```

1. **작업** 드롭다운 목록에서 **볼륨 분리**를 선택하여 **3단계**에서 연결한 볼륨을 분리합니다.

1. 이제 이전 환경과 해당 볼륨을 삭제할 수 있습니다.
**참고**  
볼륨이 환경의 Amazon EC2 인스턴스에 더 이상 탑재되지 않으므로 수동으로 제거해야 합니다. **볼륨 세부 정보** 페이지에서 **삭제**를 선택하여 이 작업을 수행할 수 있습니다.

# 환경에서 사용하는 Amazon EBS 볼륨 크기 조정
<a name="move-environment-resize"></a>

이 단계에서는 Amazon EBS 볼륨의 크기를 조정할 수 있는 방법을 설명합니다.

1. 크기를 조정할 Amazon EBS 볼륨에 대해 Amazon EC2 인스턴스와 연결된 환경을 엽니다.

1. 환경의 AWS Cloud9 IDE에서 다음 내용이 포함된 파일을 생성한 다음 확장명과 함께 파일을 저장합니다`.sh`(예: `resize.sh`).
**Note**  
이 스크립트는 AL2023, Amazon Linux 2, Amazon Linux 또는 Ubuntu 서버를 실행하는 EC2 인스턴스에 연결된 Amazon EBS 볼륨에 적용되며 IMDSv2를 사용하도록 구성됩니다.  
또한 이 스크립트는 Nitro 기반 인스턴스에 NVMe 블록 디바이스로 표시된 Amazon EBS 볼륨의 크기를 조정합니다. Nitro 시스템을 기반으로 한 인스턴스의 목록은 *Amazon EC2 사용 설명서*에서 [Nitro 기반 인스턴스](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances)를 참조하세요.

   ```
   #!/bin/bash
   
   # Specify the desired volume size in GiB as a command line argument. If not specified, default to 20 GiB.
   SIZE=${1:-20}
   
   # Get the ID of the environment host Amazon EC2 instance.
   TOKEN=$(curl -s -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 60")
   INSTANCEID=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/instance-id 2> /dev/null)
   REGION=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/placement/region 2> /dev/null)
   
   # Get the ID of the Amazon EBS volume associated with the instance.
   VOLUMEID=$(aws ec2 describe-instances \
     --instance-id $INSTANCEID \
     --query "Reservations[0].Instances[0].BlockDeviceMappings[0].Ebs.VolumeId" \
     --output text \
     --region $REGION)
   
   # Resize the EBS volume.
   aws ec2 modify-volume --volume-id $VOLUMEID --size $SIZE
   
   # Wait for the resize to finish.
   while [ \
     "$(aws ec2 describe-volumes-modifications \
       --volume-id $VOLUMEID \
       --filters Name=modification-state,Values="optimizing","completed" \
       --query "length(VolumesModifications)"\
       --output text)" != "1" ]; do
   sleep 1
   done
   
   # Check if we're on an NVMe filesystem
   if [[ -e "/dev/xvda" && $(readlink -f /dev/xvda) = "/dev/xvda" ]]
   then
   # Rewrite the partition table so that the partition takes up all the space that it can.
     sudo growpart /dev/xvda 1
   # Expand the size of the file system.
   # Check if we're on AL2 or AL2023
     STR=$(cat /etc/os-release)
     SUBAL2="VERSION_ID=\"2\""
     SUBAL2023="VERSION_ID=\"2023\""
     if [[ "$STR" == *"$SUBAL2"* || "$STR" == *"$SUBAL2023"* ]]
     then
       sudo xfs_growfs -d /
     else
       sudo resize2fs /dev/xvda1
     fi
   
   else
   # Rewrite the partition table so that the partition takes up all the space that it can.
     sudo growpart /dev/nvme0n1 1
   
   # Expand the size of the file system.
   # Check if we're on AL2 or AL2023
     STR=$(cat /etc/os-release)
     SUBAL2="VERSION_ID=\"2\""
     SUBAL2023="VERSION_ID=\"2023\""
     if [[ "$STR" == *"$SUBAL2"* || "$STR" == *"$SUBAL2023"* ]]
     then
       sudo xfs_growfs -d /
     else
       sudo resize2fs /dev/nvme0n1p1
     fi
   fi
   ```

1. IDE의 터미널 세션에서 `resize.sh` 파일을 포함하는 디렉터리로 전환합니다. 그리고 나서 다음 명령 중 하나를 실행하여 Amazon EBS Volume의 크기를 조정하기 위해 `20`을 원하는 크기(단위: GIB)로 바꿉니다.
   + 

     ```
     bash resize.sh 20
     ```
   + 

     ```
     chmod +x resize.sh
     ./resize.sh 20
     ```

# 에서 AWS Cloud9 사용하는 Amazon EBS 볼륨 암호화
<a name="encrypting-volumes"></a>

이 주제에서는 AWS Cloud9 개발 환경에서 사용하는 EC2 인스턴스에 대해 Amazon EBS 볼륨을 암호화하는 방법을 보여줍니다.

Amazon EBS 암호화는 다음 데이터를 암호화합니다.
+ 볼륨의 저장된 데이터
+ 볼륨과 인스턴스 사이에서 이동하는 모든 데이터
+ 볼륨에서 생성된 모든 스냅샷
+ 그런 스냅샷에서 생성된 모든 볼륨

 AWS Cloud9 EC2 개발 환경에 사용되는 Amazon EBS 볼륨에는 두 가지 암호화 옵션이 있습니다.
+ **기본적으로 암호화** – 사용자의 AWS 계정 를 구성하여 생성하는 새 EBS 볼륨 및 스냅샷 사본의 암호화를 적용할 수 있습니다. 기본적으로 암호화는 AWS 리전의 수준에서 활성화됩니다. 따라서 해당 리전의 개별 볼륨 또는 스냅샷에 대해 이 기능을 활성화할 수 없습니다. 또한 Amazon EBS는 인스턴스를 시작할 때 생성된 볼륨을 암호화합니다. 따라서 EC2 환경을 생성하기 전에 이 설정을 활성화해야 합니다. 자세한 내용은 *Amazon EC2 사용 설명서*에서 [기본적으로 암호화](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-encryption.html#encryption-by-default)를 참조하세요.
+ **EC2 환경에서 사용하는 기존 Amazon EBS 볼륨의 암호화** - EC2 인스턴스용으로 이미 생성된 특정 Amazon EBS 볼륨을 암호화할 수 있습니다. 이 옵션에는 AWS Key Management Service (AWS KMS)를 사용하여 암호화된 볼륨에 대한 액세스를 관리하는 작업이 포함됩니다. 관련 절차는 [가 AWS Cloud9 사용하는 기존 Amazon EBS 볼륨 암호화](#encrypting-existing-volume) 섹션을 참조하세요.

**중요**  
 AWS Cloud9 IDE가 기본적으로 암호화된 Amazon EBS 볼륨을 사용하는 경우의 AWS Identity and Access Management 서비스 연결 역할에는 이러한 EBS 볼륨의 AWS KMS key 에 대한 액세스 권한이 AWS Cloud9 필요합니다. 액세스 권한이 제공되지 않으면 AWS Cloud9 IDE가 시작되지 않고 디버깅이 어려울 수 있습니다.  
액세스를 제공하려면 Amazon EBS 볼륨에서 사용하는 KMS 키`AWSServiceRoleForAWSCloud9`에 AWS Cloud9에 대한 서비스 연결 역할을 추가합니다. 이 작업에 대한 자세한 내용은 권장 가이드 패턴의 [기본 암호화로 Amazon EBS 볼륨을 사용하는 AWS Cloud9 IDE 생성을](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/create-an-aws-cloud9-ide-that-uses-amazon-ebs-volumes-with-default-encryption.html) 참조하세요. *AWS * 

## 가 AWS Cloud9 사용하는 기존 Amazon EBS 볼륨 암호화
<a name="encrypting-existing-volume"></a>

기존 Amazon EBS 볼륨을 암호화하려면를 사용하여 KMS 키를 생성 AWS KMS 해야 합니다. 교체할 볼륨의 스냅샷을 생성한 후 KMS 키를 사용하여 스냅샷의 사본을 암호화합니다.

다음으로, 해당 스냅샷으로 암호화된 볼륨을 생성합니다. 그런 다음, 암호화되지 않은 볼륨을 EC2 인스턴스에서 분리하고 암호화된 볼륨을 연결하여 교체합니다.

마지막으로, 고객 관리형 키의 키 정책을 업데이트하여 AWS Cloud9 서비스 역할에 대한 액세스를 사용하도록 설정해야 합니다.

**참고**  
다음 절차에서는 고객 관리 키를 사용하여 볼륨을 암호화하는 데 중점을 둡니다. 계정 AWS 서비스 의에 AWS 관리형 키 를 사용할 수도 있습니다. Amazon EBS의 별칭은 `aws/ebs`입니다. 암호화에 대해 이 기본 옵션을 선택한 경우 고객 관리형 키를 만드는 1단계를 건너뜁니다. 또한 키 정책을 업데이트하는 8단계를 건너뜁니다. 이는에 대한 키 정책을 변경할 수 없기 때문입니다 AWS 관리형 키.<a name="creating-encrypted-volume"></a>

**기존 Amazon EBS 볼륨을 암호화하려면**

1.  AWS KMS 콘솔에서 대칭 KMS 키를 생성합니다. 자세한 내용은 *AWS Key Management Service 개발자 가이드*에서 [대칭 KMS 키 생성](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)을 참조하세요.

1. Amazon EC2 콘솔에서 환경에 사용되는 Amazon EBS 지원 인스턴스를 중지합니다. [콘솔이나 명령줄을 사용하여 인스턴스를 중지](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html)할 수 있습니다.

1. Amazon EC2 콘솔의 탐색 창에서 **Snapshots**(스냅샷)를 선택하여 암호화하려는 [기존 볼륨의 스냅샷을 생성](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-creating-snapshot.html#ebs-create-snapshot)합니다.

1. Amazon EC2 콘솔의 탐색 창에서 [**스냅샷(Snapshots)**]을 선택하여 [스냅샷을 복사](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-copy-snapshot.html)합니다. [**스냅샷 복사(Copy snapshot)**] 대화 상자에서 다음을 수행하여 암호화를 사용하도록 설정합니다.
   + [**이 스냅샷 암호화(Encrypt this snapshot)**]를 선택합니다.
   + **Master Key**(마스터 키)에서 앞서 생성한 KMS 키를 선택합니다. (를 사용하는 경우 **(기본값) aws/ebs** 설정을 AWS 관리형 키유지합니다.)

1. [암호화된 스냅샷에서 새 볼륨을 생성합니다](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-creating-volume.html#ebs-create-volume-from-snapshot).
**참고**  
암호화된 스냅샷에서 생성된 새 Amazon EBS 볼륨은 자동으로 암호화됩니다.

1. Amazon EC2 인스턴스에서 [이전 Amazon EBS 볼륨을 분리](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-detaching-volume.html)합니다.

1. [암호화된 새 데이터 볼륨](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-attaching-volume.html)을 Amazon EC2 인스턴스에 연결합니다.

1. [AWS Management Console 기본 보기, 정책 보기 또는 AWS KMS API를 사용하여 KMS 키의 키 AWS Management Console 정책을](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html#key-policy-modifying-how-to) 업데이트합니다. 다음 키 정책 설명을 추가하여 AWS Cloud9 서비스가 KMS 키에 액세스할 수 `AWSServiceRoleForAWSCloud9`있도록 허용합니다.
**참고**  
를 사용하는 경우이 단계를 AWS 관리형 키건너뜁니다.

   ```
   {
       "Sid": "Allow use of the key",
       "Effect": "Allow",
       "Principal": {
           "AWS": "arn:{Partition}:iam::{AccountId}:role/aws-service-role/cloud9.amazonaws.com/AWSServiceRoleForAWSCloud9"
       },
       "Action": [
           "kms:Encrypt",
           "kms:Decrypt",
           "kms:ReEncrypt*",
           "kms:GenerateDataKey*",
           "kms:DescribeKey"
       ],
       "Resource": "*"
      },
      {
       "Sid": "Allow attachment of persistent resources",
       "Effect": "Allow",
       "Principal": {
           "AWS": "arn:{Partition}:iam::{AccountId}:role/aws-service-role/cloud9.amazonaws.com/AWSServiceRoleForAWSCloud9"
       },
       "Action": [
           "kms:CreateGrant",
           "kms:ListGrants",
           "kms:RevokeGrant"
       ],
       "Resource": "*",
       "Condition": {
           "Bool": {
               "kms:GrantIsForAWSResource": "true"
           }
       }
   }
   ```

1. Amazon EC2 인스턴스를 다시 시작합니다. Amazon EC2 인스턴스 다시 시작에 대한 자세한 내용은 [인스턴스 중지 및 시작](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html)을 참조하세요.

# 에서 환경 삭제 AWS Cloud9
<a name="delete-environment"></a>

더 이상 사용하지 않는 AWS Cloud9 개발 환경과 AWS 계정 관련하여에 요금이 계속 부과되지 않도록 하려면 환경을 삭제합니다.
+  [콘솔을 사용하여 환경 삭제](#delete-environment-console) 
+  [코드를 사용하여 환경 삭제](#delete-environment-code) 

## 콘솔을 사용하여 환경 삭제
<a name="delete-environment-console"></a>

**주의**  
환경을 삭제하면가 환경을 영구적으로 AWS Cloud9 삭제합니다. 관련된 모든 설정, 사용자 데이터, 커밋하지 않은 코드도 영구적으로 삭제됩니다. 삭제된 환경은 다시 복구할 수 없습니다.

1.  AWS Cloud9 콘솔에 로그인합니다.
   + 를 사용하는 유일한 사용자 AWS 계정 이거나 단일에서 IAM 사용자인 경우 [https://console.aws.amazon.com/cloud9/](https://console.aws.amazon.com/cloud9/) AWS 계정이동합니다.
   + 조직에서를 사용하는 경우 AWS 계정 관리자에게 로그인 지침을 AWS IAM Identity Center요청합니다.

1. 상단 탐색 모음에서 환경이 AWS 리전 위치한를 선택합니다.  
![\[AWS 리전 AWS Cloud9 콘솔의 선택기\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/consolas_region_new_UX.png)

1. 환경 목록에서 삭제하려는 환경에 대해 다음 작업 중 하나를 수행합니다.
   + 환경에 대한 카드의 제목을 선택합니다. 그런 후 다음 페이지에서 **Delete**(삭제)를 선택합니다.  
![\[환경 세부 정보 페이지에서 환경 삭제\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/console-delete-env.png)
   + 환경에 대한 카드를 선택한 다음 [**삭제(Delete)**] 버튼을 선택합니다.  
![\[환경 목록에서 환경 삭제\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/console-delete-env-card.png)

1. **삭제** 대화 상자에 `Delete`를 입력한 후 **삭제**를 선택합니다.
   + **EC2 환경**

     AWS Cloud9 는 해당 환경에 연결된 Amazon EC2 인스턴스도 종료합니다.
**참고**  
계정 삭제에 실패하면 콘솔 웹 페이지 상단에 배너가 표시됩니다. 또한 환경에 대한 카드(있는 경우)는 환경 삭제에 실패했음을 나타냅니다.
   + **SSH 환경**

     환경이 Amazon EC2 인스턴스에 연결된 경우 AWS Cloud9 는 해당 인스턴스를 종료하지 않습니다. 나중에 해당 인스턴스를 종료하지 않으면, AWS 계정 에 해당 인스턴스와 관련된 Amazon EC2에 대한 요금이 계속해서 부과될 수 있습니다.

1. 환경이 SSH 환경인 경우는 클라우드 컴퓨팅 인스턴스 또는 해당 환경에 연결된 자체 서버의 숨겨진 하위 디렉터리 뒤에 AWS Cloud9 둡니다. 이제 필요하다면 해당 하위 디렉터리를 안전하게 삭제할 수 있습니다. 이 하위 디렉터리의 이름은 `.c9`입니다. 환경을 생성할 때 하위 디렉터리는 지정한 **환경 경로** 디렉터리에 위치해 있습니다.

   콘솔에 환경이 표시되지 않으면 다음 작업 중 하나 이상을 수행하여 표시해 보세요.
   + **Environments**(환경) 페이지의 드롭다운 메뉴 표시줄에서 다음 중 하나 이상을 선택합니다.
     + 선택한 AWS 리전 및 내에서 AWS 엔터티가 소유한 모든 환경을 표시하려면 **내 환경을** 선택합니다 AWS 계정.
     + 선택한 AWS 리전 및 내에서 AWS 엔터티가 초대된 모든 환경을 표시하려면 **나와 공유**를 선택합니다 AWS 계정.
     + **모든 계정 환경을** 선택하여 선택한 내의 모든 환경을 표시하고 AWS 엔터티에 표시할 권한이 AWS 리전 AWS 계정 있습니다.
   + 본인이 환경의 멤버라고 생각하지만 **Shared with you**(사용자와 공유) 목록에 환경이 표시되지 않는 경우 환경 소유자에 문의하여 확인하세요.
   + 상단 탐색 모음에서 다른을 선택합니다 AWS 리전.

## 코드를 사용하여 환경 삭제
<a name="delete-environment-code"></a>

**주의**  
환경을 삭제하면가 환경을 영구적으로 AWS Cloud9 삭제합니다. 관련된 모든 설정, 사용자 데이터, 커밋하지 않은 코드도 영구적으로 삭제됩니다. 삭제된 환경은 다시 복구할 수 없습니다.

코드를 사용하여에서 환경을 삭제하려면 다음과 같이 환경 AWS Cloud9 삭제 작업을 AWS Cloud9호출합니다.


****  

|  |  | 
| --- |--- |
|  AWS CLI  |   [delete-environment](https://docs.aws.amazon.com/cli/latest/reference/cloud9/delete-environment.html)   | 
|  AWS SDK for C\$1\$1  |   [DeleteEnvironmentRequest](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_delete_environment_request.html), [DeleteEnvironmentResult](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_delete_environment_result.html)   | 
|  AWS SDK for Go  |   [DeleteEnvironment](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.DeleteEnvironment), [DeleteEnvironmentRequest](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.DeleteEnvironmentRequest), [DeleteEnvironmentWithContext](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.DeleteEnvironmentWithContext)   | 
|  AWS SDK for Java  |   [DeleteEnvironmentRequest](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloud9/model/DeleteEnvironmentRequest.html), [DeleteEnvironmentResult](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloud9/model/DeleteEnvironmentResult.html)   | 
|  AWS SDK for JavaScript  |   [deleteEnvironment](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Cloud9.html#deleteEnvironment-property)   | 
|  AWS SDK for .NET  |   [DeleteEnvironmentRequest](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TDeleteEnvironmentRequest.html), [DeleteEnvironmentResponse](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TDeleteEnvironmentResponse.html)   | 
|  AWS SDK for PHP  |   [deleteEnvironment](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloud9-2017-09-23.html#deleteenvironment)   | 
|  AWS SDK for Python (Boto)  |   [delete\$1environment](https://boto3.readthedocs.io/en/latest/reference/services/cloud9.html#Cloud9.Client.delete_environment)   | 
|  AWS SDK for Ruby  |   [delete\$1environment](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/Cloud9/Client.html#delete_environment-instance_method)   | 
|  AWS Tools for Windows PowerShell  |   [Remove-C9Environment](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-C9Environment.html)   | 
|  AWS Cloud9 API  |   [DeleteEnvironment](https://docs.aws.amazon.com/cloud9/latest/APIReference/API_DeleteEnvironment.html)   | 