관리 메뉴

꿈꾸는 사람.

AWS Cloud9 개요와 IDE 환경 설치 및 삭제 본문

Cloud/AWS

AWS Cloud9 개요와 IDE 환경 설치 및 삭제

현무랑 니니 2021. 11. 18. 15:39
반응형

AWS Cloud9 개요

AWS Cloud9은 클라우드 기반 통합 개발 환경(IDE)이다.

즉 로컬 IDE에서 할 수 있는 코딩, 빌드, 실행, 테스트 및 디버깅 등의 일들을 클라우드에서 수행하는 것이다.

웹 브라우저를 통해 AWS Cloud9 IDE에 접근한다.

AWS Cloud9 구성 및 작동 방식

Cloud9 구성은 개발자의 로컬 컴퓨터, AWS의 EC2 기반의 IDE환경 및 개발된 소스를 저장할 원격 저장소로 이루어진다. Cloud9은 웹 브라우저에서 실행되고 AWS Cloud9 환경에 연결된다.

서버 개발 환경은 클라우드(EC2 환경)나 자체 서버를 사용(SSH 환경)할 수 있고 원격 저장소도 AWS가 제공하는 CodeCommit이나 널리 사용되는 github 등을 구성할 수 있다.

(SSH 환경은 기존 클라우드 컴퓨팅 인스턴스에 AWS Cloud9을 연결하여 구성할 수 있으나 이번 포스팅에서는 제외한다.)

과금

AWS Cloud9에 대한 추가 비용은 없다.

AWS Cloud9 개발 환경이 EC2 환경인 경우 코드 실행 및 저장에 사용된 리소스(EC2 인스턴스, EBS 볼륨)에 대한 요금은 있다.

AWS 프리티어는 AWS Cloud9를 무료로 사용할 수 있지만 프리티어를 초과한 리소스에는 요금이 청구된다.

AWS Cloud9 설정하기

요약

1. AWS 계정 생성

2. AWS Cloud9 콘솔에 로그인 (AWS 계정 루트 사용자 또는 IAM 관리자)

3. AWS Cloud9 개발 환경 생성

   EC2환경을 콘솔과 코드로 생성할 수 있다.

EC2환경 생성

콘솔을 사용한 EC2환경 생성 (GUI 방식)

1. AWS Cloud9 콘솔에 로그인

2. AWS 리전을 선택 후 Cloud9 서비스로 이동한다.

3. [환경 생성(Create environment)] 버튼을 선택하여 환경 생성을 시작한다.

4. 이름과 설정 구성 (Configure settings)을 선택하고 EC2 지원 환경을 생성한다.

5. Instance type(인스턴스 유형)은 작업에 필요한 RAM과 CPU가 있는 것을 선택한다.

   (많은 RAM과 CPU는 추가 비용이 발생한다.)

6. 플랫폼(Platform)에는 Amazon EC2 인스턴스 유형으로 Amazon Linux(Red Hat 계열) 또는 Ubuntu를 선택한다.

    ML이나 Data science 개발에 python, tensorflow 등을 사용하기 때문에 ubuntu(18.04.6)를 선택했다.

7. Cost-saving setting(비용 절감 설정)값은 윈도우의 ‘절전 모드’로 보면 된다.

   일정 시간 사용하지 않으면 AWS Cloud9 IDE에 연결된 웹 브라우저가 닫히며 Amazon EC2 인스턴스를 종료한다.

8. 네트워크 설정은 기본 설정을 그대로 따른다.

기본 설정은 같은 AWS 계정 및 리전에 있는 기본 VPC와 서브넷이며, VPC를 설정하는 것은 이번 포스팅에서는 제외한다.

참고로 퍼블릭 서브넷은 인스턴스 SSM Agent가 System manager와 통신할 수 있도록 인터넷 게이트웨이를 연결하지만 프라이빗 서브넷은 인스턴스가 인터넷 및 다른 AWS 서비스와 통신할 수 있게 NAT 게이트웨이를 생성한다.

검토 페이지에서 Create environment(환경 생성)를 선택해 AWS Cloud9 환경을 생성한다.

생성된 Cloud9 IDE 환경이 나타나고  [Open IDE]를 선택하여 실행할 수 있다.

코드를 사용한 EC2환경 생성 (CLI 방식)

  • 제약 사항 및 필요 조건

1. AWS CLI 설치

pip3 install awscli --upgrade --user

2. Boto3 패키지 설치

pip3 install boto3

python 3.6 이상 설치되어 있어야 함

3. AWS 계정의 인증 자격 증명 설정

로컬 컴퓨터에서 AWS CLI로 AWS 계정에 대한 인증 자격 증명을 설정한다.
자격 증명을 설정은 명령을 실행하거나 직접 파일을 생성한다.

3.1 AWS CLI명령어를 이용

aws configure

3.2 

자격 증명 파일, ~/.aws/credentials 생성
파일에 계정의 비밀키 정보 추가

[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY

AWS 구성 파일, ~/.aws/config 생성
기본 리전과 출력 형식을 설정

[default]
region = us-east-2
output = json
  • python 언어로 EC2 환경 생성

1. Boto3로 사용할 서비스 지정

import boto3

client = boto3.client('cloud9')

2. Cloud9 개발 환경 생성

response = client.create_environment_ec2(
    name='myPyDevEnv',
    automaticStopTimeMinutes=30,
    description='This is the Cloud9 development environment for Python(Boto).',
    instanceType='t2.micro',
    ownerArn='arn:aws:iam::123456789012:user/username',
    imageId='resolve:ssm:/aws/service/cloud9/amis/ubuntu-18.04-x86_64',
    subnetId='subnet-77e5651c',
    tags=[
        {
            'Key': 'Phase',
            'Value': 'Development'
        },
    ],
)

3. 실행

로컬 컴퓨터의 PyCharm IDE에서 위 코드를 실행한 결과이다.

4. 결과 확인

4.1 로컬 컴퓨터에서 응답 결과

{'environmentId': 'ca000000000000000000000000000000', 
 'ResponseMetadata': 
     {
         'RequestId': '2cfxxxxx-e00a-0000-0000-00A000000A00', 
         'HTTPStatusCode': 200, 
         'HTTPHeaders': {
             'date': 'Thu, 18 Nov 2021 01:41:19 GMT', 
             'content-type': 'application/x-amz-json-1.1', 
             'content-length': '52', 
             'connection': 'keep-alive', 
             'x-amzn-requestid': '2cfxxxxx-e00a-0000-0000-00A000000A00'
         }, 
         'RetryAttempts': 0
     }
}

4.2 AWS Cloud9에서 확인

코드 실행 후 브라우저의 화면을 리프레쉬하면 Cloud9 개발 환경이 만들어져 있다.

AWS Cloud9에서 환경 삭제

콘솔을 사용하여 환경 삭제

1. AWS Cloud9 콘솔에 로그인 (AWS 계정 루트 사용자 또는 IAM 관리자)

2. 환경이 위치한 AWS 리전 선택

3. 삭제할 AWS Cloud9 환경을 선택하고 [Delete]를 선택

경고창에 'Delete'를 입력하면 [Delete]버튼이 활성화된다. 이것을 선택하여 삭제한다.
선택한 환경이 삭제되고 있다.

코드를 사용하여 환경 삭제

1. 삭제할 코드 작성

c9_delete.py

client = boto3.client('cloud9')

response = client.delete_environment(
  environmentId='caXXXXXXXXXXXXXXXXXXXXXXXXXXX',
)

print(response)

environmentId는 AWS Cloud9 환경을 생성할 때 반환된 값이다.

2. 코드 실행

python3 c9_delete.py

3. 결과 확인

{
    'ResponseMetadata': 
        {
            'RequestId': '9f2axxxx-0000-1111-2222-12345678901', 
            'HTTPStatusCode': 200, 
            'HTTPHeaders': {
                'date': 'Thu, 18 Nov 2021 02:29:38 GMT', 
                'content-type': 'application/x-amz-json-1.1', 
                'content-length': '2', 
                'connection': 'keep-alive', 
                'x-amzn-requestid': '9f2axxxx-0000-1111-2222-12345678901'
            }, 
            'RetryAttempts': 0
        }
}

 

반응형
0 Comments
댓글쓰기 폼