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를 사용하기 위한 사전 조건입니다.

  • 온프레미스 데이터 센터에서 AWS Outposts를 설치하고 구성해야 합니다.

  • AWS Outposts와 AWS 리전 간에 안정적인 네트워크 연결이 있어야 합니다.

  • AWS Outposts에서 사용 가능한 인스턴스 유형의 용량이 충분해야 합니다.

  • 모든 Amazon ECS 컨테이너 인스턴스에는 Amazon ECS 컨테이너 에이전트 1.33.0 이상이 있어야 합니다.

제한 사항

AWS Outposts에서 Amazon ECS를 사용하는 경우 제한 사항은 다음과 같습니다.

  • Amazon Elastic Container Registry, AWS Identity and Access Management, Network Load Balancer, Classic Load Balancer 및 Amazon Route 53는 AWS Outposts가 아닌 AWS 리전에서 실행됩니다. 이렇게 하면 이러한 서비스와 컨테이너 간의 지연 시간이 증가합니다.

  • AWS Fargate는 AWS Outposts에서 사용할 수 없습니다.

네트워크 연결 고려 사항

다음은 AWS Outposts에 대한 네트워크 연결 고려 사항입니다.

  • AWS Outposts와 AWS 리전 간의 네트워크 연결이 끊어지면 클러스터는 계속 실행됩니다. 하지만 연결이 복원될 때까지 새 클러스터를 생성하거나 기존 클러스터에 대해 새 태스크를 수행할 수 없습니다. 인스턴스에 장애가 발생한 경우 인스턴스는 자동으로 교체되지 않습니다. CloudWatch Logs 에이전트가 로그 및 이벤트 데이터를 업데이트할 수 없습니다.

  • AWS Outposts와 AWS 리전 간에 안정적이고 가용성이 높으며 지연 시간이 짧은 연결을 제공하는 것이 좋습니다.

AWS Outposts에서 Amazon ECS 클러스터 생성

AWS Outposts에서 Amazon ECS 클러스터를 생성하는 것은 AWS 클라우드에서 Amazon ECS 클러스터를 생성하는 것과 유사합니다. AWS Outposts에서 Amazon ECS 클러스터를 생성할 때 AWS Outposts와 연결된 서브넷을 지정해야 합니다.

AWS Outposts는 AWS 리전의 확장이며, 계정의 Amazon VPC를 여러 가용 영역 및 연결된 AWS Outposts에 걸쳐 확장할 수 있습니다. AWS Outposts를 구성할 때 리전 환경을 온프레미스 시설로 확장하려면 서브넷과 연결합니다. AWS Outposts의 인스턴스는 연결된 서브넷이 있는 가용 영역과 유사하게 리전 VPC의 일부로 나타납니다.

AWS CLI

AWS CLI를 사용하여 AWS Outposts에서 Amazon ECS 클러스터를 생성하려면 AWS Outposts와 연결할 서브넷과 보안 그룹을 지정합니다.

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

다음 예제에서는 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를 위한 적절한 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
  5. 클러스터를 생성합니다.

  6. 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 에이전트를 구성합니다.

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

    userdata.txt 파일에는 인스턴스가 일반적인 자동 구성 태스크를 수행하고 인스턴스가 시작된 후 스크립트를 실행하는 데 사용할 수 있는 사용자 데이터가 포함되어 있습니다. API 호출용 파일에 대한 자세한 내용은 Amazon EC2 Linux 인스턴스용 사용 설명서시작 시 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에 배치됩니다.

  8. 태스크 정의를 등록합니다. 다음 명령을 사용하고 ecs-task.json을 태스크 정의의 이름으로 바꿉니다.

    aws ecs register-task-definition --cli-input-json file://ecs-task.json
  9. 태스크를 실행하거나 서비스를 생성합니다.

    Run the task
    aws ecs run-task --cluster mycluster --count 1 --task-definition outpost-app:1
    Create the service
    aws ecs create-service –-cluster mycluster --service-name outpost-service \ --task-definition outpost-app:1 --desired-count 1