AWS Cloud9 는 더 이상 신규 고객이 사용할 수 없습니다. AWS Cloud9 의 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. 자세히 알아보기
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
를 사용하여 수신되지 않는 EC2 인스턴스 액세스 AWS Systems Manager
EC2 환경을 위해 생성된 '노인그레스 EC2 인스턴스'를 사용하면 EC2 해당 인스턴스에서 인바운드 포트를 열 필요 없이 가 Amazon 인스턴스에 AWS Cloud9 연결할 수 있습니다. 콘솔, 명령줄 인터페이스 또는 AWS CloudFormation 스택을 사용하여 EC2 환경을 생성할 때 수신 거부 옵션을 선택할 수 있습니다. 콘솔 또는 명령줄 인터페이스를 사용하여 환경을 생성하는 방법에 대한 자세한 내용은 섹션을 참조하세요단계 1: 환경 조성.
중요
Systems Manager Session Manager를 사용하여 EC2 인스턴스에 대한 연결을 관리하는 경우 추가 요금이 부과되지 않습니다.
콘솔의 환경 생성 페이지에서 환경 유형을 선택할 때 인바운드 연결이 필요한 새 EC2 인스턴스 또는 다음이 필요하지 않은 새 수신 거부 EC2 인스턴스를 선택할 수 있습니다.
-
새 EC2 인스턴스 - 이 설정을 사용하면 인스턴스의 보안 그룹에 들어오는 네트워킹 트래픽을 허용하는 규칙이 있습니다. 수신 네트워크 트래픽은 AWS Cloud9 연결용으로 승인된 IP 주소로 제한됩니다. 열린 인바운드 포트를 사용하면 AWS Cloud9 가 인스턴스에 연결할 SSH 수 있습니다. AWS Systems Manager Session Manager를 사용하는 경우 인바운드 포트를 열지 SSM 않고도 를 통해 Amazon EC2 인스턴스에 액세스할 수 있습니다(수신 금지). 이 방법은 새 Amazon EC2 인스턴스에만 적용됩니다. 자세한 내용은 EC2 환경에 Systems Manager를 사용할 때의 이점 단원을 참조하십시오.
-
기존 컴퓨팅 - 이 설정을 사용하면 EC2 인스턴스에 인바운드 보안 그룹 규칙이 있어야 하는 SSH 로그인 세부 정보가 필요한 기존 Amazon 인스턴스에 액세스할 수 있습니다. 이 옵션을 선택하면 서비스 역할이 자동으로 생성됩니다. 설정 화면 하단에 표시되는 메모에서 서비스 역할의 이름을 확인할 수 있습니다.
를 사용하여 환경을 생성하는 경우 create-environment-ec2
명령을 호출할 때 --connection-type CONNECT_SSM
옵션을 설정하여 수신되지 않는 EC2 인스턴스를 구성할 AWS CLI수 있습니다. 필요한 서비스 역할 및 인스턴스 프로파일을 생성하는 방법에 대한 자세한 내용은 를 사용하여 Systems Manager의 인스턴스 프로파일 관리 AWS CLI 섹션을 참조하세요.
수신 거부 EC2 인스턴스를 사용하는 환경 생성을 완료한 후 다음을 확인합니다.
-
Systems Manager Session Manager에는 사용자를 대신하여 EC2 인스턴스에 대한 작업을 수행할 수 있는 권한이 있습니다. 자세한 내용은 Systems Manager 권한 관리 단원을 참조하십시오.
-
AWS Cloud9 사용자는 Session Manager에서 관리하는 인스턴스에 액세스할 수 있습니다. 자세한 내용은 사용자에게 세션 관리자에서 관리하는 인스턴스에 대한 액세스 권한 부여 단원을 참조하십시오.
EC2 환경에 Systems Manager를 사용할 때의 이점
Session Manager가 AWS Cloud9 와 EC2 인스턴스 간의 보안 연결을 처리하도록 허용하면 두 가지 주요 이점이 있습니다.
-
인스턴스를 위해 인바운드 포트를 열어야 하는 요구 사항 없음
-
퍼블릭 또는 프라이빗 서브넷으로 인스턴스를 시작하는 옵션
Systems Manager 권한 관리
기본적으로 Systems Manager에는 EC2 인스턴스에 대한 작업을 수행할 수 있는 권한이 없습니다. 액세스는 AWS Identity and Access Management (IAM) 인스턴스 프로파일을 통해 제공됩니다. (인스턴스 프로필은 시작 시 EC2 인스턴스에 IAM 역할 정보를 전달하는 컨테이너입니다.)
AWS Cloud9 콘솔을 사용하여 수신 거부 EC2 인스턴스를 생성하면 서비스 역할(AWSCloud9SSMAccessRole
)과 IAM 인스턴스 프로필(AWSCloud9SSMInstanceProfile
)이 모두 자동으로 생성됩니다. (IAM관리 콘솔AWSCloud9SSMAccessRole
에서 볼 수 있습니다. 인스턴스 프로필은 IAM 콘솔에 표시되지 않습니다.)
중요
를 사용하여 수신 거부 EC2 환경을 처음 생성하는 경우 필요한 서비스 역할 및 인스턴스 프로파일을 명시적으로 정의 AWS CLI해야 합니다. 자세한 내용은 를 사용하여 Systems Manager의 인스턴스 프로파일 관리 AWS CLI 단원을 참조하십시오.
중요
AWS Cloud9 환경을 생성하고 AWSCloud9Administrator
또는 AWSCloud9User
정책이 연결된 Amazon EC2 Systems Manager를 사용하는 경우 특정 IAM 권한이 있는 사용자 지정 정책도 연결해야 합니다. 섹션을 참조하세요SSM 환경 생성을 위한 사용자 지정 IAM 정책. 이는 AWSCloud9Administrator
및 AWSCloud9User
정책의 권한 문제 때문입니다.
추가 보안 보호를 위해 AWS Cloud9 서비스 연결 역할인 는 AWSCloud9ServiceRolePolicy
정책에 PassRole
제한을 AWSServiceRoleforAWSCloud9
적용합니다. 서비스에 IAM 역할을 전달하면 해당 서비스가 역할을 수임하고 사용자를 대신하여 작업을 수행할 수 있습니다. 이 경우 PassRole
권한은 가 AWSCloud9SSMAccessRole
역할(및 권한)만 EC2 인스턴스에 전달할 AWS Cloud9 수 있도록 합니다. 이렇게 하면 EC2 인스턴스에서 수행할 수 있는 작업이 에 필요한 작업으로 제한됩니다 AWS Cloud9.
참고
인스턴스에 액세스하기 위해 Systems Manager를 더 이상 사용할 필요가 없는 경우 AWSCloud9SSMAccessRole
서비스 역할을 삭제할 수 있습니다. 자세한 내용은 IAM 사용 설명서의 역할 또는 인스턴스 프로파일 삭제를 참조하세요.
를 사용하여 Systems Manager의 인스턴스 프로파일 관리 AWS CLI
를 사용하여 수신 금지 EC2 환경을 생성할 수도 있습니다 AWS CLI. create-environment-ec2
를 호출할 때 --connection-type
옵션을 CONNECT_SSM
으로 설정합니다.
이 옵션을 사용하면 AWSCloud9SSMAccessRole
서비스 역할 및 AWSCloud9SSMInstanceProfile
이 자동으로 생성되지 않습니다. 따라서 다음 중 하나를 수행하여 필요한 서비스 프로파일과 인스턴스 프로파일을 생성합니다.
-
콘솔을 사용하여 EC2 환경을 생성합니다.
AWSCloud9SSMAccessRole
서비스 역할이 있으면 나중에 자동으로AWSCloud9SSMInstanceProfile
생성됩니다. 생성된 후에는 를 사용하여 생성된 추가 EC2 환경에 대해 서비스 역할 및 인스턴스 프로파일을 사용할 수 있습니다 AWS CLI. -
다음 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
사용자에게 세션 관리자에서 관리하는 인스턴스에 대한 액세스 권한 부여
Systems Manager를 통해 EC2 인스턴스에 연결된 AWS Cloud9 환경을 열려면 사용자에게 API 작업에 대한 권한이 있어야 합니다StartSession
. 이 작업은 Session Manager 세션의 관리형 EC2 인스턴스에 대한 연결을 시작합니다. AWS Cloud9 특정 관리형 정책(권장)을 사용하거나 IAM 정책을 편집하고 필요한 권한을 추가하여 사용자에게 액세스 권한을 부여할 수 있습니다.
메서드 | 설명 |
---|---|
AWS Cloud9특정 관리형 정책 사용 |
AWS 사용자가 Systems Manager에서 관리하는 EC2 인스턴스에 액세스할 수 있도록 관리형 정책을 사용하는 것이 좋습니다. 관리형 정책은 표준 AWS Cloud9 사용 사례에 대한 일련의 권한을 제공하며 IAM엔터티에 쉽게 연결할 수 있습니다. 모든 관리형 정책에는
중요 AWS Cloud9 환경을 생성하고 자세한 내용은 AWS 에 대한 관리형 정책 AWS Cloud9 단원을 참조하십시오. |
IAM 정책 편집 및 필수 정책 설명 추가 |
기존 정책을 편집하려면 정책을 편집할 때 |
다음 권한을 사용하여 StartSession
API 작업을 실행할 수 있습니다. ssm:resourceTag
조건 키는 인스턴스가 개발 환경(Resource: arn:aws:ec2:*:*:instance/*
)이라는 조건 하에 모든 인스턴스 AWS Cloud9 EC2()에 대해 Session Manager 세션을 시작할 수 있도록 지정합니다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/*" ] }
AWS CloudFormation 를 사용하여 수신되지 않는 EC2 환경 생성
AWS CloudFormation 템플릿을 사용하여 수신되지 않는 Amazon EC2 개발 환경을 정의할 때는 스택을 생성하기 전에 다음을 수행합니다.
-
AWSCloud9SSMAccessRole
서비스 역할 및AWSCloud9SSMInstanceProfile
인스턴스 프로파일을 생성합니다. 자세한 내용은 AWS CloudFormation 템플릿을 사용하여 서비스 역할 및 인스턴스 프로필 생성 단원을 참조하십시오. -
를 호출하는 IAM엔터티에 대한 정책을 업데이트합니다 AWS CloudFormation. 이렇게 하면 엔터티가 EC2 인스턴스에 연결하는 Session Manager 세션을 시작할 수 있습니다. 자세한 내용은 IAM 정책에 Systems Manager 권한 추가 단원을 참조하십시오.
AWS CloudFormation 템플릿을 사용하여 서비스 역할 및 인스턴스 프로필 생성
Systems Manager가 개발 환경을 지원하는 인스턴스를 관리할 AWSCloud9SSMInstanceProfile
수 있도록 서비스 역할 AWSCloud9SSMAccessRole
및 EC2 인스턴스 프로파일을 생성해야 합니다.
이전에 수신 금지 EC2 환경을 생성with the console하거나 AWS CLI 명령을 실행AWSCloud9SSMInstanceProfile
하여 AWSCloud9SSMAccessRole
및 를 생성한 경우 서비스 역할 및 인스턴스 프로파일을 이미 사용할 수 있습니다.
참고
수신되지 않는 EC2 환경에 대한 AWS CloudFormation 스택을 생성하려고 했지만 먼저 필요한 서비스 역할 및 인스턴스 프로파일을 생성하지 않았다고 가정해 보겠습니다. 그러면 스택이 생성되지 않고 다음과 같은 오류 메시지가 표시됩니다.
인스턴스 프로필 AWSCloud9SSMInstanceProfile 이 계정에 존재하지 않습니다.
를 사용하여 수신 거부 EC2 환경을 처음 생성할 때 템플릿에서 AWSCloud9SSMAccessRole
및 를 IAM 리소스AWSCloud9SSMInstanceProfile
로 정의할 AWS 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 권한 추가
AWS CloudFormation 템플릿 에서 서비스 역할 및 인스턴스 프로파일을 정의한 후 스택을 생성하는 IAM 엔터티에 Session Manager 세션을 시작할 수 있는 권한이 있는지 확인합니다. 세션은 Session Manager를 사용하여 EC2 인스턴스에 연결하는 것입니다.
참고
수신되지 않는 EC2 환경에 대한 스택을 생성하기 전에 Session Manager 세션을 시작할 수 있는 권한을 추가하지 않으면 AccessDeniedException
오류가 반환됩니다.
를 호출하여 IAM엔터티에 대한 정책에 다음 권한을 추가합니다 AWS CloudFormation.
{ "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 엔드포인트 구성
AWS Cloud9 환경의 EC2 인스턴스가 인터넷에 액세스할 수 없는 경우 지정된 Amazon S3 버킷에 대한 VPC 엔드포인트를 생성합니다. 이 버킷에는 를 유지하는 데 필요한 종속 항목이 포함되어 있습니다IDE up-to-date.
Amazon S3용 VPC 엔드포인트를 설정하려면 액세스 정책을 사용자 지정해야 합니다. 액세스 정책에서는 다운로드할 종속 구성 요소가 포함된 신뢰할 수 있는 S3 버킷에 대한 액세스만 허용하고자 합니다.
참고
AWS Management Console AWS CLI, 또는 Amazon 를 사용하여 VPC 엔드포인트를 생성하고 구성할 수 있습니다VPCAPI. 다음 절차에서는 콘솔 인터페이스를 사용하여 VPC 엔드포인트를 생성하는 방법을 보여줍니다.
Amazon S3용 VPC 엔드포인트 생성 및 구성
-
에서 Amazon 의 콘솔 페이지로 AWS Management Console이동합니다VPC.
-
탐색 모음에서 [엔드포인트(Endpoints)]를 선택합니다.
-
[엔드포인트(Endpoints)] 페이지에서 [엔드포인트 생성(Create Endpoint)]을 선택합니다.
-
Create Endpoint(엔드포인트 생성) 페이지에서 검색 필드에 ‘s3’를 입력하고 Return 키를 눌러 현재 AWS 리전의 Amazon S3에 사용 가능한 엔드포인트를 나열합니다.
-
반환된 Amazon S3 엔드포인트 목록에서 [게이트웨이(Gateway)] 유형을 선택합니다.
-
그런 다음 환경 EC2 인스턴스VPC가 포함된 를 선택합니다.
-
이제 의 라우팅 테이블VPC을 선택합니다. 이렇게 하면 연결된 서브넷이 엔드포인트에 액세스할 수 있습니다. 환경의 EC2 인스턴스가 이러한 서브넷 중 하나에 있습니다.
-
Policy(정책) 섹션에서 Custom(사용자 지정) 옵션을 선택하고 표준 정책을 다음으로 바꿉니다.
{ "Version": "2008-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 버킷 AWS 리전 버킷 이름 미국 동부(오하이오)
static-us-east-2-prod-static-1c3sfcvf9hy4m
미국 동부(버지니아 북부)
static-us-east-1-prod-static-mft1klnkc4hl
미국 서부(오리건)
static-us-west-2-prod-static-p21mksqx9zlr
미국 서부(캘리포니아 북부)
static-us-west-1-prod-static-16d59zrrp01z0
아프리카(케이프타운)
static-af-south-1-prod-static-v6v7i5ypdppv
아시아 태평양(홍콩)
static-ap-east-1-prod-static-171xhpfkrorh6
아시아 태평양(뭄바이) static-ap-south-1-prod-static-ykocre202i9d
아시아 태평양(오사카) static-ap-northeast-3-prod-static-ivmxqzrx2ioi
아시아 태평양(서울) static-ap-northeast-2-prod-static-1wxyctlhwiajm
아시아 태평양(싱가포르) static-ap-southeast-1-prod-static-13ibpyrx4vk6d
아시아 태평양(시드니)
static-ap-southeast-2-prod-static-1cjsl8bx27rfu
아시아 태평양(도쿄)
static-ap-northeast-1-prod-static-4fwvbdisquj8
캐나다(중부)
static-ca-central-1-prod-static-g80lpejy486c
유럽(프랑크푸르트)
static-eu-central-1-prod-static-14lbgls2vrkh
유럽(아일랜드)
static-eu-west-1-prod-static-hld3vzaf7c4h
유럽(런던)
static-eu-west-2-prod-static-36lbg202837x
유럽(밀라노)
static-eu-south-1-prod-static-1379tzkd3ni7d
유럽(파리)
static-eu-west-3-prod-static-1rwpkf766ke58
유럽(스톡홀름)
static-eu-north-1-prod-static-1qzw982y7yu7e
중동(바레인)
static-me-south-1-prod-static-gmljex38qtqx
남아메리카(상파울루)
static-sa-east-1-prod-static-1cl8k0y7opidt
이스라엘(텔아비브)
static-il-central-1-prod-static-k02vrnhcesue
-
엔드포인트 생성을 선택합니다.
올바른 구성 정보를 제공한 경우, 생성된 엔드포인트의 ID가 메시지에 표시됩니다.
-
가 Amazon S3 버킷에 액세스할 IDE 수 있는지 확인하려면 메뉴 모음에서 창 , 새 터미널을 선택하여 터미널 세션을 시작합니다. 그리고 나서 다음 명령을 실행하여
{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용 엔드포인트를 참조하세요.
프라이빗 연결을 위한 VPC 엔드포인트 구성
Systems Manager를 이용한 액세스 옵션을 사용하여 서브넷에서 인스턴스를 시작할 경우, 해당 보안 그룹에는 들어오는 네트워크 트래픽을 허용하는 인바운드 규칙이 없습니다. 하지만 이 보안 그룹에는 인스턴스의 아웃바운드 트래픽을 허용하는 아웃바운드 규칙이 있습니다. 이는 를 최신 상태로 유지하는 데 필요한 패키지와 라이브러리를 AWS Cloud9 IDE 다운로드하는 데 필요합니다.
인스턴스의 아웃바운드 및 인바운드 트래픽을 방지하려면 Systems Manager용 Amazon VPC 엔드포인트를 생성하고 구성합니다. 인터페이스 VPC 엔드포인트(인터페이스 엔드포인트)를 사용하면 에서 제공하는 서비스에 연결할 수 있습니다AWS PrivateLink. AWS PrivateLink 는 프라이빗 IP 주소를 사용하여 Amazon EC2 및 Systems Manager에 비공개APIs로 액세스하는 데 사용할 수 있는 기술입니다. Systems Manager를 사용하도록 VPC 엔드포인트를 구성하려면 이 지식 센터 리소스
주의
인바운드 또는 아웃바운드 네트워킹 트래픽을 허용하지 않는 보안 그룹을 구성한다고 가정해 보겠습니다. 그러면 를 지원하는 EC2 AWS Cloud9 IDE 인스턴스에 인터넷 액세스 권한이 없습니다. 신뢰할 수 있는 S3 버킷에 포함된 종속 항목에 대한 액세스를 허용하려면 에 대한 Amazon S3 엔드포인트VPC를 생성해야 합니다. S3 또한 AWS 서비스와 같은 일부 는 인터넷 액세스 없이 의도한 대로 작동하지 않을 AWS Lambda수 있습니다.
AWS PrivateLink를 사용하면 VPC 엔드포인트를 통해 처리된 각 기가바이트에 대한 데이터 처리 요금이 발생합니다. 이는 트래픽의 소스 또는 대상에 관계없이 적용됩니다. 자세한 내용은 AWS PrivateLink 요금