AWS Outposts의 Amazon Elastic Container Service
AWS Outposts는 온프레미스 시설의 기본 AWS 서비스, 인프라 및 운영 모델을 지원합니다. AWS Outposts 환경에서는 AWS 클라우드에서 사용하는 것과 동일한 AWS API, 도구, 인프라를 사용할 수 있습니다.
AWS Outposts의 Amazon ECS는 온프레미스 데이터 및 애플리케이션과 매우 가까운 거리에서 실행해야 하는 대기 시간이 짧은 워크로드에 이상적입니다.
AWS Outposts에 대한 자세한 내용은 AWS Outposts 사용 설명서를 참조하세요.
고려 사항
다음은 AWS Outposts에서 Amazon ECS를 사용할 때 고려해야 할 사항입니다.
-
Amazon Elastic Container Registry, AWS Identity and Access Management 및 Network Load Balancer는 AWS Outposts가 아닌 AWS 리전에서 실행됩니다. 이렇게 하면 이러한 서비스와 컨테이너 간의 지연 시간이 증가합니다.
-
AWS Fargate는 AWS Outposts에서 사용할 수 없습니다.
다음은 AWS Outposts에 대한 네트워크 연결 고려 사항입니다.
-
AWS Outposts와 AWS 리전 간의 네트워크 연결이 끊어지면 클러스터는 계속 실행됩니다. 하지만 연결이 복원될 때까지 새 클러스터를 생성하거나 기존 클러스터에 대해 새 태스크를 수행할 수 없습니다. 인스턴스에 장애가 발생한 경우 인스턴스는 자동으로 교체되지 않습니다. CloudWatch Logs 에이전트가 로그 및 이벤트 데이터를 업데이트할 수 없습니다.
-
AWS Outposts와 AWS 리전 간에 안정적이고 가용성이 높으며 지연 시간이 짧은 연결을 제공하는 것이 좋습니다.
사전 조건
다음은 AWS Outposts에서 Amazon ECS를 사용하기 위한 사전 조건입니다.
-
온프레미스 데이터 센터에 Outpost가 설치 및 구성되어 있어야 합니다.
-
Outpost와 AWS 리전 간에 안정적인 네트워크 연결이 있어야 합니다.
AWS Outposts에서 클러스터 생성 개요
다음은 구성 개요입니다.
-
AWS Outposts에 대한 권한으로 역할 및 정책을 생성합니다.
-
AWS Outposts에 대한 권한이 있는 IAM 인스턴스 프로필을 생성합니다.
-
VPC를 생성하거나 AWS Outposts와 동일한 리전에 있는 기존 VPC를 사용합니다.
-
서브넷을 생성하거나 AWS Outposts와 연결된 기존 서브넷을 사용합니다.
이는 컨테이너 인스턴스가 실행되는 서브넷입니다.
-
클러스터의 컨테이너 인스턴스에 대한 보안 그룹을 생성합니다.
-
Amazon ECS 클러스터를 생성합니다.
-
인스턴스를 클러스터로 시작하기 위해 Amazon ECS 컨테이너 에이전트 환경 변수를 정의합니다.
-
컨테이너를 실행합니다.
Amazon ECS와 AWS Outposts의 통합 방법에 대한 자세한 내용은 Extend Amazon ECS across two AWS Outposts racks
다음 예제에서는 AWS Outposts에서 Amazon ECS 클러스터를 생성합니다.
-
AWS Outposts에 대한 권한으로 역할 및 정책을 생성합니다.
role-policy.json
파일은 리소스에 대한 효과 및 작업이 포함된 정책 문서입니다. 파일 형식에 대한 자세한 내용은 IAM API Reference(IAM API 참조)의 PutRolePolicy를 참조하세요.aws iam create-role –-role-name
ecsRole
\ --assume-role-policy-document file://ecs-policy.json aws iam put-role-policy --role-nameecsRole
--policy-nameecsRolePolicy
\ --policy-document file://role-policy.json -
AWS Outposts에 대한 권한이 있는 IAM 인스턴스 프로필을 생성합니다.
aws iam create-instance-profile --instance-profile-name
outpost
aws iam add-role-to-instance-profile --instance-profile-nameoutpost
\ --role-nameecsRole
-
VPC를 생성합니다.
aws ec2 create-vpc --cidr-block
10.0.0.0/16
-
AWS Outposts와 연결된 서브넷을 생성합니다.
aws ec2 create-subnet \ --cidr-block
10.0.3.0/24
\ --vpc-idvpc-xxxxxxxx
\ --outpost-arn arn:aws:outposts:us-west-2
:123456789012:outpost/op-xxxxxxxxxxxxxxxx
\ --availability-zone-idusw2-az1
-
컨테이너 인스턴스에 대한 보안 그룹을 생성하여 AWS Outposts를 위한 적절한 CIDR 범위를 지정합니다. (이 단계는 AWS Outposts에 대해 다릅니다.)
aws ec2 create-security-group --group-name
MyOutpostSG
aws ec2 authorize-security-group-ingress --group-nameMyOutpostSG
--protocol tcp \ --port 22 --cidr10.0.3.0/24
aws ec2 authorize-security-group-ingress --group-nameMyOutpostSG
--protocol tcp \ --port 80 --cidr10.0.3.0/24
-
클러스터를 생성합니다.
-
Amazon ECS 컨테이너 에이전트 환경 변수를 정의하여 이전 단계에서 생성한 클러스터로 인스턴스를 시작하고 클러스터를 식별하는 데 도움이 되게 추가하려는 태그를 정의합니다(예: 클러스터가 Outpost용임을 나타내기 위해
Outpost
).#! /bin/bash cat << ‘EOF’ >> /etc/ecs/ecs.config ECS_CLUSTER=MyCluster ECS_IMAGE_PULL_BEHAVIOR=prefer-cached ECS_CONTAINER_INSTANCE_TAGS={“environment”: ”Outpost”} EOF
참고
해당 리전의 Amazon ECR에서 컨테이너 이미지를 가져와 지연이 발생하는 것을 방지하려면 이미지 캐시를 사용합니다. 이렇게 하려면 작업이 실행될 때마다
ECS_IMAGE_PULL_BEHAVIOR
를prefer-cached
로 설정하여 인스턴스 자체에서 캐시된 이미지를 사용하도록 Amazon ECS 에이전트를 구성합니다. -
이 인스턴스가 실행되어야 하는 AWS Outposts의 VPC와 서브넷과 AWS Outposts에서 사용할 수 있는 인스턴스 유형을 지정하여 컨테이너 인스턴스를 생성합니다. (이 단계는 AWS Outposts에 대해 다릅니다.)
userdata.txt
파일에는 인스턴스가 일반적인 자동 구성 태스크를 수행하고 인스턴스가 시작된 후 스크립트를 실행하는 데 사용할 수 있는 사용자 데이터가 포함되어 있습니다. API 직접 호출용 파일에 대한 자세한 내용은 Amazon EC2 사용 설명서의 시작 시 Linux 인스턴스에서 명령 실행을 참조하세요.aws ec2 run-instances --count 1 --image-id
ami-xxxxxxxx
--instance-typec5.large
\ --key-nameaws-outpost-key
–-subnet-idsubnet-xxxxxxxxxxxxxxxxx
\ --iam-instance-profile Nameoutpost
--security-group-idsg-xxxxxx
\ --associate-public-ip-address --user-datafile://userdata.txt
참고
이 명령은 클러스터에 인스턴스를 추가할 때도 사용됩니다. 클러스터에 배포된 모든 컨테이너는 해당 특정 AWS Outposts에 배치됩니다.