AWS Outposts의 Amazon Elastic Container Service - Amazon Elastic Container Service

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에서 클러스터 생성 개요

다음은 구성 개요입니다.

  1. AWS Outposts에 대한 권한으로 역할 및 정책을 생성합니다.

  2. AWS Outposts에 대한 권한이 있는 IAM 인스턴스 프로필을 생성합니다.

  3. VPC를 생성하거나 AWS Outposts와 동일한 리전에 있는 기존 VPC를 사용합니다.

  4. 서브넷을 생성하거나 AWS Outposts와 연결된 기존 서브넷을 사용합니다.

    이는 컨테이너 인스턴스가 실행되는 서브넷입니다.

  5. 클러스터의 컨테이너 인스턴스에 대한 보안 그룹을 생성합니다.

  6. Amazon ECS 클러스터를 생성합니다.

  7. 인스턴스를 클러스터로 시작하기 위해 Amazon ECS 컨테이너 에이전트 환경 변수를 정의합니다.

  8. 컨테이너를 실행합니다.

Amazon ECS와 AWS Outposts의 통합 방법에 대한 자세한 내용은 Extend Amazon ECS across two AWS Outposts racks를 참조하세요.

다음 예제에서는 AWS Outposts에서 Amazon ECS 클러스터를 생성합니다.

  1. 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-name ecsRole --policy-name ecsRolePolicy \ --policy-document file://role-policy.json
  2. AWS Outposts에 대한 권한이 있는 IAM 인스턴스 프로필을 생성합니다.

    aws iam create-instance-profile --instance-profile-name outpost aws iam add-role-to-instance-profile --instance-profile-name outpost \ --role-name ecsRole
  3. VPC를 생성합니다.

    aws ec2 create-vpc --cidr-block 10.0.0.0/16
  4. AWS Outposts와 연결된 서브넷을 생성합니다.

    aws ec2 create-subnet \ --cidr-block 10.0.3.0/24 \ --vpc-id vpc-xxxxxxxx \ --outpost-arn arn:aws:outposts:us-west-2:123456789012:outpost/op-xxxxxxxxxxxxxxxx \ --availability-zone-id usw2-az1
  5. 컨테이너 인스턴스에 대한 보안 그룹을 생성하여 AWS Outposts를 위한 적절한 CIDR 범위를 지정합니다. (이 단계는 AWS Outposts에 대해 다릅니다.)

    aws ec2 create-security-group --group-name MyOutpostSG aws ec2 authorize-security-group-ingress --group-name MyOutpostSG --protocol tcp \ --port 22 --cidr 10.0.3.0/24 aws ec2 authorize-security-group-ingress --group-name MyOutpostSG --protocol tcp \ --port 80 --cidr 10.0.3.0/24
  6. 클러스터를 생성합니다.

  7. 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_BEHAVIORprefer-cached로 설정하여 인스턴스 자체에서 캐시된 이미지를 사용하도록 Amazon ECS 에이전트를 구성합니다.

  8. 이 인스턴스가 실행되어야 하는 AWS Outposts의 VPC와 서브넷과 AWS Outposts에서 사용할 수 있는 인스턴스 유형을 지정하여 컨테이너 인스턴스를 생성합니다. (이 단계는 AWS Outposts에 대해 다릅니다.)

    userdata.txt 파일에는 인스턴스가 일반적인 자동 구성 태스크를 수행하고 인스턴스가 시작된 후 스크립트를 실행하는 데 사용할 수 있는 사용자 데이터가 포함되어 있습니다. API 직접 호출용 파일에 대한 자세한 내용은 Amazon EC2 사용 설명서의 시작 시 Linux 인스턴스에서 명령 실행을 참조하세요.

    aws ec2 run-instances --count 1 --image-id ami-xxxxxxxx --instance-type c5.large \ --key-name aws-outpost-key –-subnet-id subnet-xxxxxxxxxxxxxxxxx \ --iam-instance-profile Name outpost --security-group-id sg-xxxxxx \ --associate-public-ip-address --user-data file://userdata.txt
    참고

    이 명령은 클러스터에 인스턴스를 추가할 때도 사용됩니다. 클러스터에 배포된 모든 컨테이너는 해당 특정 AWS Outposts에 배치됩니다.