자습서: Amazon에 애플리케이션 배포 ECS - 아마존 CodeCatalyst

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

자습서: Amazon에 애플리케이션 배포 ECS

이 자습서에서는 워크플로, Amazon 및 기타 몇 가지 AWS 서비스를 사용하여 Amazon Elastic Container Service (AmazonECS) 에 서버리스 애플리케이션을 배포하는 방법을 알아봅니다. ECS 배포된 애플리케이션은 Apache 웹 서버 Docker 이미지를 기반으로 구축된 간단한 Hello World 웹 사이트입니다. 이 자습서에서는 클러스터 설정과 같은 필수 준비 작업을 안내한 다음 애플리케이션을 빌드하고 배포하기 위한 워크플로를 만드는 방법을 설명합니다.

작은 정보

이 튜토리얼을 따라가는 대신 완전한 Amazon ECS 설정을 수행하는 블루프린트를 사용할 수 있습니다. API블루프린트와 함께 Node.js 또는 AWS Fargate블루프린트와 API 함께 AWS Fargate Java를 사용해야 합니다. 자세한 내용은 블루프린트로 프로젝트 생성 단원을 참조하십시오.

사전 조건

시작하기 전:

  • 연결된 AWS 계정이 있는 CodeCatalyst 공간이 필요합니다. 자세한 내용은 스페이스 만들기 단원을 참조하십시오.

  • 스페이스에 다음과 같은 빈 프로젝트가 필요합니다.

    codecatalyst-ecs-project

    처음부터 시작 옵션을 사용하여 이 프로젝트를 만들 수 있습니다.

    자세한 내용은 Amazon에서 빈 프로젝트 생성 CodeCatalyst 단원을 참조하십시오.

  • 프로젝트에는 다음과 같은 CodeCatalyst 환경이 필요합니다.

    codecatalyst-ecs-environment

    이 환경을 다음과 같이 구성하십시오.

    • 원하는 유형 (예: 비프로덕션) 을 선택합니다.

    • AWS 계정을 여기에 연결하십시오.

    • 기본 IAM 역할의 경우 원하는 역할을 선택합니다. 나중에 다른 역할을 지정하게 됩니다.

    자세한 내용은 및 에 AWS 계정 배포 VPCs 단원을 참조하십시오.

1단계: AWS 사용자 설정 및 AWS CloudShell

이 자습서의 첫 번째 단계는 에서 AWS IAM Identity Center사용자를 생성하고 이 사용자로 AWS CloudShell 인스턴스를 시작하는 것입니다. 이 자습서를 진행하는 동안 CloudShell 는 개발용 컴퓨터이며 AWS 리소스와 서비스를 구성하는 곳입니다. 자습서를 완료한 후 이 사용자를 삭제하십시오.

참고

이 자습서에는 루트 사용자를 사용하지 마십시오. 별도의 사용자를 만들어야 합니다. 그렇지 않으면 나중에 AWS Command Line Interface (CLI) 에서 작업을 수행할 때 문제가 발생할 수 있습니다.

IAMIdentity Center 사용자에 대한 자세한 내용은 AWS IAM Identity Center 사용 설명서 및AWS CloudShell 사용 설명서를 참조하십시오. CloudShell

IAM아이덴티티 센터 사용자를 만들려면
  1. 에 AWS Management Console 로그인하고 에서 AWS IAM Identity Center 콘솔을 엽니다 https://console.aws.amazon.com/singlesignon/.

    참고

    CodeCatalyst스페이스에 AWS 계정 연결된 계정을 사용하여 로그인해야 합니다. 스페이스로 이동하고 계정 탭을 선택하면 어떤 계정이 연결되어 있는지 확인할 수 있습니다. AWS 자세한 내용은 스페이스 만들기 단원을 참조하십시오.

  2. 탐색 창에서 UsersAdd user를 차례대로 선택합니다.

  3. 사용자 이름에 다음을 입력합니다.

    CodeCatalystECSUser
  4. 비밀번호에서 이 사용자와 공유할 수 있는 일회용 비밀번호 생성을 선택합니다.

  5. 이메일 주소이메일 주소 확인에 IAM Identity Center에 아직 없는 이메일 주소를 입력합니다.

  6. 이름과 성에 다음을 입력합니다.

    CodeCatalystECSUser
  7. 표시 이름에 자동으로 생성된 이름을 유지합니다.

    CodeCatalystECSUser CodeCatalystECSUser
  8. Next(다음)를 선택합니다.

  9. 그룹에 사용자 추가 페이지에서 다음을 선택합니다.

  10. 사용자 검토 및 추가 페이지에서 정보를 검토하고 사용자 추가를 선택합니다.

    일회용 암호 대화 상자가 나타납니다.

  11. 복사를 선택한 다음 AWS 액세스 포털 URL 및 일회용 비밀번호를 포함한 로그인 정보를 붙여넣습니다.

  12. 닫기를 선택하세요.

권한 집합을 생성하려면

나중에 이 권한 세트를 할당할 CodeCatalystECSUser 것입니다.

  1. 탐색 창에서 권한 세트를 선택한 다음 권한 세트 생성을 선택합니다.

  2. 사전 정의된 권한 집합을 선택한 다음 선택합니다 AdministratorAccess. 이 정책은 모든 AWS 서비스사람에게 전체 권한을 제공합니다.

  3. Next(다음)를 선택합니다.

  4. 권한 세트 이름에 다음을 입력합니다.

    CodeCatalystECSPermissionSet
  5. Next(다음)를 선택합니다.

  6. 검토 및 생성 페이지에서 정보를 검토하고 생성을 선택합니다.

권한 세트를 할당하려면 CodeCatalyst ECSUser
  1. 탐색 창에서 선택한 다음 현재 로그인되어 AWS 계정 있는 권한 옆의 확인란을 선택합니다. AWS 계정

  2. 사용자 또는 그룹 할당을 선택합니다.

  3. 사용자 탭을 선택합니다.

  4. CodeCatalystECSUser 옆의 확인란을 선택합니다.

  5. Next(다음)를 선택합니다.

  6. CodeCatalystECSPermissionSet 옆의 확인란을 선택합니다.

  7. Next(다음)를 선택합니다.

  8. 정보를 검토하고 제출을 선택합니다.

    이제 두 개를 하나로 CodeCatalystECSUser AWS 계정묶어 CodeCatalystECSPermissionSet 자신에게 할당했습니다.

다음과 같이 로그아웃하고 다시 로그인하려면 CodeCatalyst ECSUser
  1. 로그아웃하기 전에 AWS 액세스 URL 포털과 사용자 이름, 일회용 비밀번호가 있는지 확인하세요. CodeCatalystECSUser 이전에 이 정보를 텍스트 편집기에 복사했어야 합니다.

    참고

    이 정보가 없는 경우 IAM Identity Center의 CodeCatalystECSUser 세부 정보 페이지로 이동하여 암호 재설정, 일회용 암호 생성 [...] 을 선택합니다. 그리고 암호를 다시 재설정하여 화면에 정보를 표시하십시오.

  2. AWS로그아웃하세요.

  3. AWS 액세스 URL 포털을 브라우저의 주소 표시줄에 붙여넣습니다.

  4. 사용자 이름과 일회용 비밀번호로 로그인합니다. CodeCatalystECSUser

  5. 새 비밀번호에 비밀번호를 입력하고 새 비밀번호 설정을 선택합니다.

    화면에 AWS 계정 상자가 나타납니다.

  6. 선택한 AWS 계정다음 CodeCatalystECSUser 사용자에게 할당한 AWS 계정 이름과 권한 집합을 선택합니다.

  7. CodeCatalystECSPermissionSet 옆에 있는 관리 콘솔을 선택합니다.

    가 AWS Management Console 나타납니다. 이제 적절한 CodeCatalystECSUser 권한으로 로그인했습니다.

AWS CloudShell 인스턴스를 시작하려면
  1. CodeCatalystECSUser마찬가지로 상단 내비게이션 바에서 AWS 아이콘 ( AWS icon ) 을 선택합니다.

    의 메인 페이지가 AWS Management Console 나타납니다.

  2. 상단 내비게이션 바에서 AWS CloudShell 아이콘 ( CloudShell icon ) 을 선택합니다.

    CloudShell 열립니다. CloudShell 환경이 만들어지는 동안 기다려 주세요.

    참고

    CloudShell 아이콘이 보이지 않는 경우 에서 지원하는 지역에 있는지 확인하세요 CloudShell. 이 자습서에서는 사용자가 미국 서부(오레곤) 리전에 있다고 가정합니다.

가 AWS CLI 설치되었는지 확인하려면
  1. CloudShell 터미널에서 다음을 입력합니다.

    aws --version
  2. 버전이 나타나는지 확인합니다.

    AWS CLI 는 이미 현재 사용자에 맞게 구성되어 있으므로 일반적으로 그렇듯이 AWS CLI 키와 자격 증명을 구성할 필요가 없습니다. CodeCatalystECSUser

2단계: Amazon에 플레이스홀더 애플리케이션 배포 ECS

이 섹션에서는 ECS Amazon에 플레이스홀더 애플리케이션을 수동으로 배포합니다. 이 플레이스홀더 애플리케이션은 워크플로에서 배포한 Hello World 애플리케이션으로 대체됩니다. 자리 표시자 응용 프로그램은 Apache 웹 서버입니다.

Amazon에 대한 자세한 내용은 Amazon ECS Elastic 컨테이너 서비스 개발자 안내서를 참조하십시오.

다음 일련의 절차를 완료하여 플레이스홀더 애플리케이션을 배포하십시오.

작업 실행 역할을 만들려면

이 역할은 ECS Amazon과 사용자를 대신하여 API 전화를 걸 수 있는 AWS Fargate (Fargate) 권한을 부여합니다.

  1. 신뢰 정책 생성:

    1. 에서 AWS CloudShell다음 명령을 입력합니다.

      cat > codecatalyst-ecs-trust-policy.json

      CloudShell 터미널에 깜박이는 프롬프트가 나타납니다.

    2. 프롬프트에 다음 코드를 입력합니다.

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    3. 마지막 중괄호 (}) 뒤에 커서를 놓습니다.

    4. 버튼을 누른 Enter 다음 Ctrl+d 파일을 저장하고 cat을 종료합니다.

  2. 작업 실행 역할 생성:

    aws iam create-role \ --role-name codecatalyst-ecs-task-execution-role \ --assume-role-policy-document file://codecatalyst-ecs-trust-policy.json
  3. AWS 관리형 AmazonECSTaskExecutionRolePolicy 정책을 역할에 연결합니다.

    aws iam attach-role-policy \ --role-name codecatalyst-ecs-task-execution-role \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy
  4. 역할 세부 정보 표시:

    aws iam get-role \ --role-name codecatalyst-ecs-task-execution-role
  5. 역할의 "Arn": 값 (예:) 을 기록해 둡니다arn:aws:iam::111122223333:role/codecatalyst-ecs-task-execution-role. 나중에 이 Amazon 리소스 이름 (ARN) 이 필요합니다.

Amazon ECS 클러스터를 만들려면

이 클러스터에는 Apache 플레이스홀더 애플리케이션이 포함되며 나중에는 Hello World 애플리케이션이 포함됩니다.

  1. 에서와 CodeCatalystECSUser AWS CloudShell같이 빈 클러스터를 생성합니다.

    aws ecs create-cluster --cluster-name codecatalyst-ecs-cluster
  2. (선택 사항) 클러스터가 성공적으로 생성되었는지 확인합니다.

    aws ecs list-clusters

    codecatalyst-ecs-cluster클러스터가 목록에 나타나야 하는데, 이는 성공적으로 생성되었음을 나타냅니다. ARN

작업 정의 파일을 만들려면

작업 정의 파일은 가져온 Apache 2.4 웹 서버 Docker 이미지 (httpd:2.4) 를 실행하도록 지정합니다. DockerHub

  1. 에서와 CodeCatalystECSUser AWS CloudShell같이 작업 정의 파일을 생성합니다.

    cat > taskdef.json
  2. 프롬프트에 다음 코드를 붙여넣습니다.

    { "executionRoleArn": "arn:aws:iam::111122223333:role/codecatalyst-ecs-task-execution-role", "containerDefinitions": [ { "name": "codecatalyst-ecs-container", "image": "httpd:2.4", "essential": true, "portMappings": [ { "hostPort": 80, "protocol": "tcp", "containerPort": 80 } ] } ], "requiresCompatibilities": [ "FARGATE" ], "cpu": "256", "family": "codecatalyst-ecs-task-def", "memory": "512", "networkMode": "awsvpc" }

    위 코드에서 다음을 대체하십시오.arn:aws:iam::111122223333:role/codecatalyst-ecs-task-execution-role

    에서 ARN 작업 실행 역할을 만들려면 언급한 작업 실행 역할로 바꾸십시오.

  3. 마지막 중괄호 (}) 뒤에 커서를 놓습니다.

  4. 버튼을 누른 Enter 다음 Ctrl+d 파일을 저장하고 cat을 종료합니다.

Amazon에 작업 정의 파일을 등록하려면 ECS
  1. 에서와 CodeCatalystECSUser AWS CloudShell같이 작업 정의를 등록하십시오.

    aws ecs register-task-definition \ --cli-input-json file://taskdef.json
  2. (선택 사항) 작업 정의가 등록되었는지 확인합니다.

    aws ecs list-task-definitions

    codecatalyst-ecs-task-def작업 정의가 목록에 나타나야 합니다.

Amazon ECS 서비스를 만들려면

Amazon ECS 서비스는 Apache 플레이스홀더 애플리케이션의 작업 (및 관련 Docker 컨테이너) 을 실행하고 나중에는 Hello World 애플리케이션을 실행합니다.

  1. 마찬가지로CodeCatalystECSUser, 아직 전환하지 않았다면 Amazon Elastic Container Service 콘솔로 전환하십시오.

  2. 앞서 만든 클러스터를 선택하세요codecatalyst-ecs-cluster.

  3. [서비스] 탭에서 [Create] 를 선택합니다.

  4. 만들기 페이지에서 다음을 수행합니다.

    1. 다음에 나열된 설정을 제외한 모든 기본 설정을 유지합니다.

    2. 시작 유형에서 선택합니다 FARGATE.

    3. 작업 정의의 패밀리 드롭다운 목록에서 다음을 선택합니다.

      codecatalyst-ecs-task-def

    4. 서비스 이름에 다음을 입력합니다.

      codecatalyst-ecs-service
    5. 원하는 작업에 다음을 입력합니다.

      3

      이 자습서에서는 각 작업이 단일 Docker 컨테이너를 시작합니다.

    6. 네트워킹 섹션을 확장하세요.

    7. 원하는 VPC항목을 선택하십시오VPC.

    8. 서브넷의 경우 원하는 서브넷을 선택합니다.

      참고

      서브넷을 하나만 지정하십시오. 이 자습서에 필요한 것은 여기까지입니다.

      참고

      AND 서브넷이 없는 경우 해당 VPC 서브넷을 생성하십시오. Amazon VPC 사용 설명서의 서브넷 생성 및 서브넷 생성을 참조하십시오. VPC VPC

    9. 보안 그룹의 경우 새 보안 그룹 생성을 선택하고 다음을 수행하십시오.

      1. 보안 그룹 이름에 다음을 입력합니다.

        codecatalyst-ecs-security-group
      2. 보안 그룹 설명에 다음을 입력합니다.

        CodeCatalyst ECS security group
      3. 규칙 추가를 선택합니다. 유형에서 선택하고 HTTP, 소스에 대해서는 Anywhere를 선택합니다.

    10. 하단에서 [만들기] 를 선택합니다.

    11. 서비스가 생성되는 동안 잠시 기다려 주세요. 몇 분 정도 소요될 수 있습니다.

  5. 태스크 탭을 선택한 다음 새로 고침 버튼을 선택합니다. 세 작업 모두의 [마지막 상태] 열이 [실행 중] 으로 설정되어 있는지 확인하십시오.

(선택 사항) Apache 플레이스홀더 애플리케이션이 실행 중인지 확인하려면
  1. 태스크 탭에서 세 가지 작업 중 하나를 선택합니다.

  2. 퍼블릭 IP 필드에서 오픈 주소를 선택합니다.

    It Works!페이지가 나타납니다. 이는 Amazon ECS 서비스가 Apache 이미지를 사용하여 Docker 컨테이너를 시작하는 작업을 성공적으로 시작했음을 나타냅니다.

    자습서의 이 시점에서는 Amazon ECS 클러스터, 서비스, 작업 정의와 Apache 플레이스홀더 애플리케이션을 수동으로 배포했습니다. 이 모든 항목이 준비되었으므로 이제 Apache 자리 표시자 애플리케이션을 자습서의 Hello World 애플리케이션으로 대체할 워크플로를 만들 준비가 되었습니다.

3단계: Amazon ECR 이미지 리포지토리 생성

이 섹션에서는 Amazon Elastic 컨테이너 레지스트리 (AmazonECR) 에 프라이빗 이미지 리포지토리를 생성합니다. 이 리포지토리에는 이전에 배포한 Apache 플레이스홀더 이미지를 대체할 자습서의 Docker 이미지가 저장됩니다.

Amazon에 대한 자세한 내용은 Amazon ECR Elastic 컨테이너 레지스트리 사용 설명서를 참조하십시오.

Amazon에서 이미지 리포지토리를 만들려면 ECR
  1. 에서와 ECR 같이 CodeCatalystECSUser Amazon에 AWS CloudShell빈 리포지토리를 생성하십시오.

    aws ecr create-repository --repository-name codecatalyst-ecs-image-repo
  2. Amazon ECR 리포지토리의 세부 정보를 표시합니다.

    aws ecr describe-repositories \ --repository-names codecatalyst-ecs-image-repo
  3. “repositoryUri”:값을 기록해 둡니다 (예:)111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-ecs-image-repo.

    나중에 워크플로에 리포지토리를 추가할 때 필요합니다.

4단계: AWS 역할 생성

이 섹션에서는 CodeCatalyst 워크플로가 작동하는 데 필요한 AWS IAM 역할을 생성합니다. 이러한 역할은 다음과 같습니다.

  • 빌드 역할 - (워크플로의) CodeCatalyst 빌드 작업에 AWS 계정에 액세스하고 Amazon ECR 및 Amazon에 글을 쓸 수 있는 권한을 EC2 부여합니다.

  • 배포 역할 - 사용자 AWS 계정ECS, Amazon 및 기타 몇 가지 AWS 서비스에 액세스할 수 있는 CodeCatalyst Deploy to ECS Action (워크플로의) 권한을 부여합니다.

IAM역할에 대한 자세한 내용은 AWS Identity and Access Management 사용 설명서의 IAM 역할을 참조하십시오.

참고

시간을 절약하기 위해 앞서 나열한 두 역할 대신 CodeCatalystWorkflowDevelopmentRole-spaceName 역할이라는 단일 역할을 만들 수 있습니다. 자세한 내용은 계정 및 스페이스에 대한 CodeCatalystWorkflowDevelopmentRole-spaceName역할 만들기 단원을 참조하십시오. CodeCatalystWorkflowDevelopmentRole-spaceName역할에는 보안 위험을 초래할 수 있는 매우 광범위한 권한이 있다는 점을 이해하세요. 보안이 덜 우려되는 자습서 및 시나리오에서만 이 역할을 사용하는 것이 좋습니다. 이 자습서에서는 앞서 나열한 두 개의 역할을 생성한다고 가정합니다.

빌드 및 배포 역할을 만들려면 AWS Management Console 또는 를 AWS CLI사용할 수 있습니다.

AWS Management Console

빌드 및 배포 역할을 만들려면 다음 일련의 절차를 완료하세요.

빌드 역할을 만들려면
  1. 다음과 같이 역할에 대한 정책을 생성합니다.

    1. 로그인 AWS.

    2. 에서 IAM 콘솔을 엽니다 https://console.aws.amazon.com/iam/.

    3. 탐색 창에서 정책을 선택합니다.

    4. 정책 생성을 선택합니다.

    5. JSON탭을 선택합니다.

    6. 기존 코드를 삭제합니다.

    7. 다음 코드를 붙여넣습니다.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:*", "ec2:*" ], "Resource": "*" } ] }
      참고

      이 역할을 사용하여 워크플로 작업을 처음 실행할 때는 리소스 정책 설명에 와일드카드를 사용하고, 사용 가능한 상태가 되면 리소스 이름을 지정하여 정책의 범위를 좁히십시오.

      "Resource": "*"
    8. 다음: 태그를 선택합니다.

    9. 다음: 검토를 선택합니다.

    10. 이름에 다음을 입력합니다.

      codecatalyst-ecs-build-policy
    11. 정책 생성을 선택합니다.

      이제 권한 정책을 생성했습니다.

  2. 다음과 같이 빌드 역할을 생성합니다.

    1. 탐색 창에서 역할을 선택한 후 역할 생성을 선택합니다.

    2. 사용자 지정 신뢰 정책을 선택합니다.

    3. 기존 사용자 지정 신뢰 정책을 삭제합니다.

    4. 다음 사용자 지정 신뢰 정책을 추가합니다.

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
    5. Next(다음)를 선택합니다.

    6. 권한 정책에서 해당 확인란을 검색하여 선택합니다. codecatalyst-ecs-build-policy

    7. Next(다음)를 선택합니다.

    8. 역할 이름에 다음을 입력합니다.

      codecatalyst-ecs-build-role
    9. 역할 설명에 다음을 입력합니다.

      CodeCatalyst ECS build role
    10. 역할 생성을 선택합니다.

    이제 권한 정책과 신뢰 정책이 포함된 빌드 역할을 만들었습니다.

  3. 다음과 같이 빌드 역할을 ARN 확보하세요.

    1. 탐색 창에서 역할을 선택합니다.

    2. 검색 상자에 방금 생성한 역할의 이름을 입력합니다 (codecatalyst-ecs-build-role).

    3. 목록에서 역할을 선택합니다.

      역할의 요약 페이지가 나타납니다.

    4. 상단에서 ARN값을 복사합니다. 나중에 필요합니다.

배포 역할을 만들려면
  1. 다음과 같이 역할에 대한 정책을 생성합니다.

    1. 로그인 AWS.

    2. 에서 IAM 콘솔을 엽니다 https://console.aws.amazon.com/iam/.

    3. 탐색 창에서 정책을 선택합니다.

    4. 정책 생성(Create Policy)을 선택합니다.

    5. JSON탭을 선택합니다.

    6. 기존 코드를 삭제합니다.

    7. 다음 코드를 붙여넣습니다.

      { "Version": "2012-10-17", "Statement": [{ "Action":[ "ecs:DescribeServices", "ecs:CreateTaskSet", "ecs:DeleteTaskSet", "ecs:ListClusters", "ecs:RegisterTaskDefinition", "ecs:UpdateServicePrimaryTaskSet", "ecs:UpdateService", "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeListeners", "elasticloadbalancing:ModifyListener", "elasticloadbalancing:DescribeRules", "elasticloadbalancing:ModifyRule", "lambda:InvokeFunction", "lambda:ListFunctions", "cloudwatch:DescribeAlarms", "sns:Publish", "sns:ListTopics", "s3:GetObject", "s3:GetObjectVersion", "codedeploy:CreateApplication", "codedeploy:CreateDeployment", "codedeploy:CreateDeploymentGroup", "codedeploy:GetApplication", "codedeploy:GetDeployment", "codedeploy:GetDeploymentGroup", "codedeploy:ListApplications", "codedeploy:ListDeploymentGroups", "codedeploy:ListDeployments", "codedeploy:StopDeployment", "codedeploy:GetDeploymentTarget", "codedeploy:ListDeploymentTargets", "codedeploy:GetDeploymentConfig", "codedeploy:GetApplicationRevision", "codedeploy:RegisterApplicationRevision", "codedeploy:BatchGetApplicationRevisions", "codedeploy:BatchGetDeploymentGroups", "codedeploy:BatchGetDeployments", "codedeploy:BatchGetApplications", "codedeploy:ListApplicationRevisions", "codedeploy:ListDeploymentConfigs", "codedeploy:ContinueDeployment" ], "Resource":"*", "Effect":"Allow" },{"Action":[ "iam:PassRole" ], "Effect":"Allow", "Resource":"*", "Condition":{"StringLike":{"iam:PassedToService":[ "ecs-tasks.amazonaws.com", "codedeploy.amazonaws.com" ] } } }] }
      참고

      이 역할을 사용하여 워크플로 작업을 처음 실행할 때는 리소스 정책 설명에 와일드카드를 사용하십시오. 그런 다음 사용할 수 있게 되면 리소스 이름을 사용하여 정책의 범위를 좁힐 수 있습니다.

      "Resource": "*"
    8. 다음: 태그를 선택합니다.

    9. 다음: 검토를 선택합니다.

    10. 이름에 다음을 입력합니다.

      codecatalyst-ecs-deploy-policy
    11. 정책 생성을 선택합니다.

      이제 권한 정책을 생성했습니다.

  2. 다음과 같이 배포 역할을 생성합니다.

    1. 탐색 창에서 역할을 선택한 후 역할 생성을 선택합니다.

    2. 사용자 지정 신뢰 정책을 선택합니다.

    3. 기존 사용자 지정 신뢰 정책을 삭제합니다.

    4. 다음 사용자 지정 신뢰 정책을 추가합니다.

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
    5. Next(다음)를 선택합니다.

    6. 권한 정책에서 해당 확인란을 검색하여 선택합니다. codecatalyst-ecs-deploy-policy

    7. Next(다음)를 선택합니다.

    8. 역할 이름에 다음을 입력합니다.

      codecatalyst-ecs-deploy-role
    9. 역할 설명에 다음을 입력합니다.

      CodeCatalyst ECS deploy role
    10. 역할 생성을 선택합니다.

    이제 신뢰 정책을 사용하여 배포 역할을 생성했습니다.

  3. 다음과 같이 배포 역할을 ARN 확보하십시오.

    1. 탐색 창에서 역할을 선택합니다.

    2. 검색 상자에 방금 생성한 역할의 이름을 입력합니다 (codecatalyst-ecs-deploy-role).

    3. 목록에서 역할을 선택합니다.

      역할의 요약 페이지가 나타납니다.

    4. 상단에서 ARN값을 복사합니다. 나중에 필요합니다.

AWS CLI

빌드 및 배포 역할을 만들려면 다음 일련의 절차를 완료하세요.

두 역할 모두에 대한 신뢰 정책을 만들려면

에서와 CodeCatalystECSUser AWS CloudShell같이 신뢰 정책 파일을 생성하십시오.

  1. 파일 생성:

    cat > codecatalyst-ecs-trust-policy.json
  2. 터미널 프롬프트에 다음 코드를 붙여넣습니다.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  3. 마지막 중괄호 (}) 뒤에 커서를 놓습니다.

  4. 버튼을 누른 Enter 다음 Ctrl+d 파일을 저장하고 cat을 종료합니다.

빌드 정책 및 빌드 역할을 만들려면
  1. 빌드 정책 만들기:

    1. 에서 AWS CloudShell빌드 정책 파일을 생성하는 것처럼CodeCatalystECSUser:

      cat > codecatalyst-ecs-build-policy.json
    2. 프롬프트에 다음 코드를 입력합니다.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:*", "ec2:*" ], "Resource": "*" } ] }
    3. 마지막 중괄호 (}) 뒤에 커서를 놓습니다.

    4. 버튼을 누른 Enter 다음 Ctrl+d 파일을 저장하고 cat을 종료합니다.

  2. 빌드 정책을 AWS다음에 추가합니다.

    aws iam create-policy \ --policy-name codecatalyst-ecs-build-policy \ --policy-document file://codecatalyst-ecs-build-policy.json
  3. 명령 출력에서 "arn": 값 (예:) 을 기록해 둡니다arn:aws:iam::111122223333:policy/codecatalyst-ecs-build-policy. ARN나중에 이 정보가 필요합니다.

  4. 빌드 역할을 만들고 여기에 신뢰 정책을 연결합니다.

    aws iam create-role \ --role-name codecatalyst-ecs-build-role \ --assume-role-policy-document file://codecatalyst-ecs-trust-policy.json
  5. 빌드 정책을 빌드 역할에 연결:

    aws iam attach-role-policy \ --role-name codecatalyst-ecs-build-role \ --policy-arn arn:aws:iam::111122223333:policy/codecatalyst-ecs-build-policy

    위치 arn:aws:iam::111122223333:policy/codecatalyst-ecs-build-policy 앞에서 언급한 빌드 정책으로 대체됩니다. ARN

  6. 빌드 역할의 세부 정보 표시:

    aws iam get-role \ --role-name codecatalyst-ecs-build-role
  7. 역할의 "Arn": 값 (예:) 을 기록해 둡니다arn:aws:iam::111122223333:role/codecatalyst-ecs-build-role. ARN나중에 필요합니다.

배포 정책 및 배포 역할을 만들려면
  1. 배포 정책 생성:

    1. 에서 AWS CloudShell배포 정책 파일을 생성합니다.

      cat > codecatalyst-ecs-deploy-policy.json
    2. 프롬프트에 다음 코드를 입력합니다.

      { "Version": "2012-10-17", "Statement": [{ "Action":[ "ecs:DescribeServices", "ecs:CreateTaskSet", "ecs:DeleteTaskSet", "ecs:ListClusters", "ecs:RegisterTaskDefinition", "ecs:UpdateServicePrimaryTaskSet", "ecs:UpdateService", "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeListeners", "elasticloadbalancing:ModifyListener", "elasticloadbalancing:DescribeRules", "elasticloadbalancing:ModifyRule", "lambda:InvokeFunction", "lambda:ListFunctions", "cloudwatch:DescribeAlarms", "sns:Publish", "sns:ListTopics", "s3:GetObject", "s3:GetObjectVersion", "codedeploy:CreateApplication", "codedeploy:CreateDeployment", "codedeploy:CreateDeploymentGroup", "codedeploy:GetApplication", "codedeploy:GetDeployment", "codedeploy:GetDeploymentGroup", "codedeploy:ListApplications", "codedeploy:ListDeploymentGroups", "codedeploy:ListDeployments", "codedeploy:StopDeployment", "codedeploy:GetDeploymentTarget", "codedeploy:ListDeploymentTargets", "codedeploy:GetDeploymentConfig", "codedeploy:GetApplicationRevision", "codedeploy:RegisterApplicationRevision", "codedeploy:BatchGetApplicationRevisions", "codedeploy:BatchGetDeploymentGroups", "codedeploy:BatchGetDeployments", "codedeploy:BatchGetApplications", "codedeploy:ListApplicationRevisions", "codedeploy:ListDeploymentConfigs", "codedeploy:ContinueDeployment" ], "Resource":"*", "Effect":"Allow" },{"Action":[ "iam:PassRole" ], "Effect":"Allow", "Resource":"*", "Condition":{"StringLike":{"iam:PassedToService":[ "ecs-tasks.amazonaws.com", "codedeploy.amazonaws.com" ] } } }] }
      참고

      이 역할을 사용하여 워크플로 작업을 처음 실행할 때는 리소스 정책 설명에 와일드카드를 사용하고 사용 가능한 상태가 되면 리소스 이름을 지정하여 정책의 범위를 좁히십시오.

      "Resource": "*"
    3. 마지막 중괄호 () } 뒤에 커서를 놓습니다.

    4. 버튼을 누른 Enter 다음 Ctrl+d 파일을 저장하고 cat을 종료합니다.

  2. 배포 정책을 AWS다음에 추가합니다.

    aws iam create-policy \ --policy-name codecatalyst-ecs-deploy-policy \ --policy-document file://codecatalyst-ecs-deploy-policy.json
  3. 명령 출력에서 배포 정책의 "arn": 값 (예:) 을 기록해 둡니다arn:aws:iam::111122223333:policy/codecatalyst-ecs-deploy-policy. ARN나중에 이 정보가 필요합니다.

  4. 배포 역할을 만들고 여기에 신뢰 정책을 연결합니다.

    aws iam create-role \ --role-name codecatalyst-ecs-deploy-role \ --assume-role-policy-document file://codecatalyst-ecs-trust-policy.json
  5. 배포 정책을 배포 역할에 연결합니다. 여기서 arn:aws:iam::111122223333:policy/codecatalyst-ecs-deploy-policy 앞에서 언급한 배포 정책으로 대체됩니다. ARN

    aws iam attach-role-policy \ --role-name codecatalyst-ecs-deploy-role \ --policy-arn arn:aws:iam::111122223333:policy/codecatalyst-ecs-deploy-policy
  6. 배포 역할의 세부 정보를 표시합니다.

    aws iam get-role \ --role-name codecatalyst-ecs-deploy-role
  7. 역할의 "Arn": 값 (예:) 을 기록해 둡니다arn:aws:iam::111122223333:role/codecatalyst-ecs-deploy-role. ARN나중에 필요합니다.

5단계: AWS 역할 추가 CodeCatalyst

이 단계에서는 스페이스의 CodeCatalyst 계정 연결에 빌드 역할 (codecatalyst-ecs-build-rolecodecatalyst-ecs-deploy-role) 과 배포 역할 () 을 추가합니다.

계정 연결에 빌드 및 배포 역할을 추가하려면
  1. CodeCatalyst에서 스페이스로 이동합니다.

  2. AWS 계정을 선택하세요. 계정 연결 목록이 나타납니다.

  3. 빌드 및 배포 역할을 생성한 AWS 계정을 나타내는 계정 연결을 선택합니다.

  4. 관리 콘솔에서 역할 AWS 관리를 선택합니다.

    Amazon CodeCatalyst 스페이스에 IAM 역할 추가 페이지가 나타납니다. 페이지에 액세스하려면 로그인해야 할 수 있습니다.

  5. 에서 생성한 기존 역할 추가를 선택합니다IAM.

    드롭다운 목록이 나타납니다. 목록에는 codecatalyst-runner.amazonaws.comcodecatalyst.amazonaws.com 서비스 주체를 포함하는 신뢰 정책이 적용된 모든 IAM 역할이 표시됩니다.

  6. 드롭다운 목록에서 역할을 선택하고 역할 codecatalyst-ecs-build-role 추가를 선택합니다.

    참고

    표시되는 The security token included in the request is invalid 경우 적절한 권한이 없기 때문일 수 있습니다. 이 문제를 해결하려면 CodeCatalyst 스페이스를 만들 때 사용한 AWS 계정으로 로그아웃하고 다시 로그인하세요. AWS

  7. IAM역할 추가를 선택하고 에서 IAM 생성한 기존 역할 추가를 선택한 다음 드롭다운 목록에서 선택합니다codecatalyst-ecs-deploy-role. [Add role]을 선택합니다.

    이제 스페이스에 빌드 및 배포 역할을 추가했습니다.

  8. Amazon CodeCatalyst 디스플레이 이름의 값을 복사합니다. 이 값은 나중에 워크플로를 만들 때 필요합니다.

6단계: 소스 리포지토리 만들기

이 단계에서는 에서 소스 리포지토리를 생성합니다 CodeCatalyst. 이 저장소에는 자습서의 소스 파일 (예: 작업 정의 파일) 이 저장됩니다.

소스 리포지토리에 대한 자세한 내용은 을 참조하십시오. 소스 리포지토리 생성

소스 리포지토리를 생성하려면
  1. https://codecatalyst.aws/ 에서 CodeCatalyst 콘솔을 엽니다.

  2. 프로젝트로 이동합니다codecatalyst-ecs-project.

  3. 탐색 창에서 코드를 선택한 다음 소스 리포지토리를 선택합니다.

  4. 리포지토리 추가를 선택하고 리포지토리 생성을 선택합니다.

  5. 리포지토리 이름에 다음을 입력합니다.

    codecatalyst-ecs-source-repository
  6. 생성(Create)을 선택합니다.

7단계: 소스 파일 추가

이 섹션에서는 Hello World 소스 파일을 리포지토리에 추가합니다. CodeCatalyst codecatalyst-ecs-source-repository 파일은 다음과 같이 구성됩니다.

  • index.html파일 — 브라우저에 Hello World 메시지를 표시합니다.

  • Dockerfile — Docker 이미지에 사용할 기본 이미지와 여기에 적용할 Docker 명령을 설명합니다.

  • taskdef.json파일 - 클러스터에서 작업을 시작할 때 사용할 Docker 이미지를 정의합니다.

폴더 구조는 다음과 같습니다.

. |— public-html | |— index.html |— Dockerfile |— taskdef.json
참고

다음 지침은 CodeCatalyst 콘솔을 사용하여 파일을 추가하는 방법을 보여 주지만 원하는 경우 Git을 사용할 수 있습니다. 세부 정보는 소스 리포지토리 복제을 참조하세요.

index.html

index.html파일은 브라우저에 Hello World 메시지를 표시합니다.

index.html 파일을 추가하려면
  1. CodeCatalyst 콘솔에서 소스 리포지토리로 이동합니다codecatalyst-ecs-source-repository.

  2. 파일에서 파일 생성을 선택합니다.

  3. 파일 이름에 다음을 입력합니다.

    public-html/index.html
    중요

    같은 이름의 폴더를 만들려면 public-html/ 접두사를 포함해야 합니다. index.html이 폴더에 있을 것으로 예상됩니다.

  4. 텍스트 상자에 다음 코드를 입력합니다.

    <html> <head> <title>Hello World</title> <style> body { background-color: black; text-align: center; color: white; font-family: Arial, Helvetica, sans-serif; } </style> </head> <body> <h1>Hello World</h1> </body> </html>
  5. [커밋] 을 선택한 다음 [커밋] 을 다시 선택합니다.

    저장소의 public-html 폴더에 index.html 추가됩니다.

Dockerfile

Dockerfile은 사용할 기본 Docker 이미지와 여기에 적용할 Docker 명령을 설명합니다. Dockerfile에 대한 자세한 내용은 Dockerfile 참조를 참조하십시오.

여기에 지정된 Dockerfile은 Apache 2.4 기본 이미지 () 를 사용하도록 나타냅니다. httpd 또한 웹 페이지를 제공하는 Apache 서버의 폴더에 호출된 소스 파일을 index.html 복사하기 위한 지침도 포함되어 있습니다. Dockerfile의 EXPOSE 지침은 컨테이너가 포트 80에서 수신 중임을 Docker에 알립니다.

도커파일을 추가하려면
  1. 소스 리포지토리에서 파일 생성을 선택합니다.

  2. 파일 이름에 다음을 입력합니다.

    Dockerfile

    파일 확장자를 포함하지 마십시오.

    중요

    Dockerfile은 리포지토리의 루트 폴더에 있어야 합니다. 워크플로의 Docker build 명령에서는 해당 파일이 있을 것으로 예상합니다.

  3. 텍스트 상자에 다음 코드를 입력합니다.

    FROM httpd:2.4 COPY ./public-html/index.html /usr/local/apache2/htdocs/index.html EXPOSE 80
  4. [커밋] 을 선택한 다음 [커밋] 을 다시 선택합니다.

    Dockerfile이 리포지토리에 추가됩니다.

taskdef.json

이 단계에서 추가하는 taskdef.json 파일은 이미 지정한 파일과 동일하지만 다음과 같은 차이점이 있습니다. 2단계: Amazon에 플레이스홀더 애플리케이션 배포 ECS

여기의 작업 정의에서는 image: 필드 (httpd:2.4) 에 하드코딩된 Docker 이미지 이름을 지정하는 대신 두 개의 변수를 사용하여 이미지를 나타냅니다: 및. $REPOSITORY_URI $IMAGE_TAG 이러한 변수는 이후 단계에서 워크플로를 실행할 때 워크플로의 빌드 작업에서 생성된 실제 값으로 대체됩니다.

작업 정의 파라미터에 대한 자세한 내용은 Amazon Elastic Container Service 개발자 안내서의 작업 정의 파라미터를 참조하십시오.

taskdef.json 파일을 추가하려면
  1. 소스 리포지토리에서 파일 생성을 선택합니다.

  2. 파일 이름에 다음을 입력합니다.

    taskdef.json
  3. 텍스트 상자에 다음 코드를 입력합니다.

    { "executionRoleArn": "arn:aws:iam::account_ID:role/codecatalyst-ecs-task-execution-role", "containerDefinitions": [ { "name": "codecatalyst-ecs-container", # The $REPOSITORY_URI and $IMAGE_TAG variables will be replaced # by the workflow at build time (see the build action in the # workflow) "image": $REPOSITORY_URI:$IMAGE_TAG, "essential": true, "portMappings": [ { "hostPort": 80, "protocol": "tcp", "containerPort": 80 } ] } ], "requiresCompatibilities": [ "FARGATE" ], "networkMode": "awsvpc", "cpu": "256", "memory": "512", "family": "codecatalyst-ecs-task-def" }

    위 코드에서 다음을 대체하십시오.

    arn:aws:iam::account_ID:role/codecatalyst-ecs-task-execution-role

    에서 ARN 작업 실행 역할을 만들려면 언급한 작업 실행 역할로 바꾸십시오.

  4. [커밋] 을 선택한 다음 [커밋] 을 다시 선택합니다.

    taskdef.json파일이 저장소에 추가됩니다.

8단계: 워크플로우 생성 및 실행

이 단계에서는 소스 파일을 가져와 Docker 이미지로 빌드한 다음 Amazon ECS 클러스터에 이미지를 배포하는 워크플로를 생성합니다. 이 배포는 기존 Apache 플레이스홀더 애플리케이션을 대체합니다.

워크플로는 순차적으로 실행되는 다음과 같은 구성 요소로 구성됩니다.

  • 트리거 - 이 트리거는 소스 리포지토리에 변경 내용을 푸시할 때 워크플로가 자동으로 실행됩니다. 트리거에 대한 자세한 내용은 트리거를 사용하여 자동으로 워크플로 실행 시작 주제를 참조하십시오.

  • 빌드 작업 (BuildBackend) — 트리거 시 작업은 Dockerfile을 사용하여 Docker 이미지를 빌드하고 Amazon에 이미지를 푸시합니다. ECR 또한 빌드 작업은 를 taskdef.json 올바른 image 필드 값으로 업데이트한 다음 이 파일의 출력 아티팩트를 생성합니다. 이 아티팩트는 다음 단계인 배포 작업의 입력으로 사용됩니다.

    빌드 작업에 대한 자세한 내용은 을 참조하십시오워크플로를 사용한 구축.

  • 배포 작업 (DeployToECS) — 빌드 작업이 완료되면 배포 작업은 빌드 작업 (TaskDefArtifact) 에서 생성된 출력 아티팩트를 찾아 그 taskdef.json 내부를 찾아 Amazon ECS 서비스에 등록합니다. 그러면 서비스가 taskdef.json 파일의 지침에 따라 Amazon 클러스터 내에서 세 개의 Amazon ECS 작업과 관련 Hello World Docker 컨테이너를 실행합니다. ECS

워크플로 생성 방법
  1. CodeCatalyst 콘솔의 탐색 창에서 CI/CD를 선택한 다음 워크플로를 선택합니다.

  2. 워크플로 만들기를 선택합니다.

  3. 소스 리포지토리의 경우 선택합니다codecatalyst-ecs-source-repository.

  4. Branch의 경우 선택하십시오main.

  5. 생성(Create)을 선택합니다.

  6. YAML샘플 코드를 삭제합니다.

  7. 다음 YAML 코드를 추가합니다.

    참고

    다음 YAML 코드에서는 원하는 경우 Connections: 섹션을 생략할 수 있습니다. 이러한 섹션을 생략하는 경우 환경의 기본 역할 필드에 지정된 역할에 에서 설명한 두 IAM 역할의 권한 및 신뢰 정책이 포함되는지 확인해야 합니다. 5단계: AWS 역할 추가 CodeCatalyst 기본 IAM 역할을 사용하여 환경을 설정하는 방법에 대한 자세한 내용은 을 참조하십시오환경 생성.

    Name: codecatalyst-ecs-workflow SchemaVersion: 1.0 Triggers: - Type: PUSH Branches: - main Actions: BuildBackend: Identifier: aws/build@v1 Environment: Name: codecatalyst-ecs-environment Connections: - Name: codecatalyst-account-connection Role: codecatalyst-ecs-build-role Inputs: Sources: - WorkflowSource Variables: - Name: REPOSITORY_URI Value: 111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-ecs-image-repo - Name: IMAGE_TAG Value: ${WorkflowSource.CommitId} Configuration: Steps: #pre_build: - Run: echo Logging in to Amazon ECR... - Run: aws --version - Run: aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-west-2.amazonaws.com #build: - Run: echo Build started on `date` - Run: echo Building the Docker image... - Run: docker build -t $REPOSITORY_URI:latest . - Run: docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG #post_build: - Run: echo Build completed on `date` - Run: echo Pushing the Docker images... - Run: docker push $REPOSITORY_URI:latest - Run: docker push $REPOSITORY_URI:$IMAGE_TAG # Replace the variables in taskdef.json - Run: find taskdef.json -type f | xargs sed -i "s|\$REPOSITORY_URI|$REPOSITORY_URI|g" - Run: find taskdef.json -type f | xargs sed -i "s|\$IMAGE_TAG|$IMAGE_TAG|g" - Run: cat taskdef.json # The output artifact will be a zip file that contains a task definition file. Outputs: Artifacts: - Name: TaskDefArtifact Files: - taskdef.json DeployToECS: DependsOn: - BuildBackend Identifier: aws/ecs-deploy@v1 Environment: Name: codecatalyst-ecs-environment Connections: - Name: codecatalyst-account-connection Role: codecatalyst-ecs-deploy-role Inputs: Sources: [] Artifacts: - TaskDefArtifact Configuration: region: us-west-2 cluster: codecatalyst-ecs-cluster service: codecatalyst-ecs-service task-definition: taskdef.json

    위 코드에서 다음을 바꾸십시오.

    • 두 인스턴스 모두 codecatalyst-ecs-environment 만든 환경의 이름을 사용하세요사전 조건.

    • 두 인스턴스 모두 codecatalyst-account-connection 계정 연결의 디스플레이 이름과 함께. 표시 이름은 숫자일 수 있습니다. 자세한 내용은 5단계: AWS 역할 추가 CodeCatalyst 단원을 참조하십시오.

    • codecatalyst-ecs-build-role 에서 만든 빌드 역할의 이름을 사용합니다4단계: AWS 역할 생성.

    • 111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-ecs-image-repo (Value:속성에) 생성한 Amazon ECR 리포지토리의 정보를 포함합니다3단계: Amazon ECR 이미지 리포지토리 생성. URI

    • 111122223333.dkr.ecr.us-west-2.amazonaws.com (Run: aws ecr명령에서) 이미지 접미사 (/codecatalyst-ecs-image-repo) 가 없는 Amazon ECR 리포지토리를 사용합니다. URI

    • codecatalyst-ecs-deploy-role 에서 생성한 배포 역할의 이름을 사용합니다. 4단계: AWS 역할 생성

    • 의 두 인스턴스 모두 us-west-2 AWS 지역 코드를 사용하세요. 지역 코드 목록은 의 지역 엔드포인트를 참조하십시오. AWS 일반 참조

    참고

    빌드 및 배포 역할을 생성하지 않기로 결정했다면 다음을 대체하세요.codecatalyst-ecs-build-role 그리고 codecatalyst-ecs-deploy-role CodeCatalystWorkflowDevelopmentRole-spaceName역할 이름을 입력하세요. 이에 대한 자세한 내용은 4단계: AWS 역할 생성 섹션을 참조하세요.

    작은 정보

    이전 워크플로 코드에 표시된 findsed 명령을 사용하여 리포지토리와 이미지 이름을 업데이트하는 대신 Render Amazon ECS 작업 정의 작업을 이 용도로 사용할 수 있습니다. 자세한 내용은 Amazon ECS 작업 정의 수정 단원을 참조하십시오.

  8. (선택 사항) [Validate] 를 선택하여 커밋하기 전에 YAML 코드가 유효한지 확인하십시오.

  9. 커밋을 선택합니다.

  10. 워크플로 커밋 대화 상자에 다음을 입력합니다.

    1. 커밋 메시지의 경우 텍스트를 제거하고 다음을 입력합니다.

      Add first workflow
    2. 리포지토리의 경우 선택합니다codecatalyst-ecs-source-repository.

    3. 브랜치 이름으로 main을 선택합니다.

    4. 커밋을 선택합니다.

    이제 워크플로가 생성되었습니다. 워크플로 맨 위에 정의된 트리거로 인해 워크플로 실행이 자동으로 시작됩니다. 특히, workflow.yaml 파일을 소스 리포지토리에 커밋 (및 푸시) 하면 트리거가 워크플로 실행을 시작했습니다.

워크플로 실행 진행 상황을 보려면
  1. CodeCatalyst 콘솔의 탐색 창에서 CI/CD를 선택한 다음 워크플로를 선택합니다.

  2. 방금 만든 워크플로를 선택합니다. codecatalyst-ecs-workflow

  3. 빌드 진행 상황을 BuildBackend확인하도록 선택합니다.

  4. DeployToECS선택하여 배포 진행 상황을 확인하세요.

    실행 세부 정보 보기에 대한 자세한 내용은 을 참조하십시오워크플로 실행 상태 및 세부 정보 보기.

배포를 확인하려면
  1. 에서 Amazon ECS 클래식 콘솔을 엽니다 https://console.aws.amazon.com/ecs/.

  2. 클러스터를 선택하세요codecatalyst-ecs-cluster.

  3. 작업 탭을 선택합니다.

  4. 세 가지 작업 중 하나를 선택합니다.

  5. 퍼블릭 IP 필드에서 공개 주소를 선택합니다.

    브라우저에 Amazon ECS 서비스가 애플리케이션을 성공적으로 배포했음을 나타내는 “Hello World” 페이지가 나타납니다.

9단계: 소스 파일 변경

이 섹션에서는 소스 리포지토리의 index.html 파일을 변경합니다. 이 변경으로 인해 워크플로우는 새 Docker 이미지를 빌드하고, 커밋 ID로 태그를 지정하고, Amazon으로 푸시하고ECR, ECS Amazon에 배포합니다.

index.html 변경하기
  1. CodeCatalyst 콘솔의 탐색 창에서 코드를 선택한 다음 소스 리포지토리를 선택한 다음 리포지토리를 선택합니다. codecatalyst-ecs-source-repository

  2. [public-html]를 선택한 다음 [index.html]를 선택합니다.

    의 내용이 나타납니다. index.html

  3. 편집을 선택합니다.

  4. 14번째 줄에서 Hello World 텍스트를 로 변경합니다Tutorial complete!.

  5. [커밋] 을 선택한 다음 [커밋] 을 다시 선택합니다.

    커밋하면 새 워크플로가 실행됩니다.

  6. (선택 사항) 소스 리포지토리의 기본 페이지로 이동하여 커밋 보기를 선택한 다음 index.html 변경 사항의 커밋 ID를 기록해 둡니다.

  7. 배포 진행 상황 보기:

    1. 탐색 창에서 CI/CD를 선택한 다음 워크플로를 선택합니다.

    2. 최근 codecatalyst-ecs-workflow 실행을 보도록 선택합니다.

    3. 선택하고 BuildBackend워크플로우 실행 진행 DeployToECS상황을 확인하세요.

  8. 다음과 같이 애플리케이션이 업데이트되었는지 확인하십시오.

    1. 에서 Amazon ECS 클래식 콘솔을 엽니다 https://console.aws.amazon.com/ecs/.

    2. 클러스터를 선택하세요codecatalyst-ecs-cluster.

    3. 작업 탭을 선택합니다.

    4. 세 가지 작업 중 하나를 선택합니다.

    5. 퍼블릭 IP 필드에서 공개 주소를 선택합니다.

      Tutorial complete!페이지가 나타납니다.

  9. (선택 사항) 에서 AWS Amazon ECR 콘솔로 전환하여 새 Docker 이미지에 6단계의 커밋 ID 태그가 지정되었는지 확인합니다.

정리

요금이 부과되지 않도록 이 자습서에서 사용되는 파일 및 서비스를 정리하세요.

AWS Management Console에서는 다음과 같은 순서로 정리하십시오.

  1. ECSAmazon에서는 다음을 수행하십시오.

    1. 삭제codecatalyst-ecs-service.

    2. 삭제codecatalyst-ecs-cluster.

    3. codecatalyst-ecs-task-definition 등록을 취소합니다.

  2. ECRAmazon에서는 삭제하십시오codecatalyst-ecs-image-repo.

  3. EC2Amazon에서는 삭제하십시오codecatalyst-ecs-security-group.

  4. IAMID 센터에서 삭제:

    1. CodeCatalystECSUser

    2. CodeCatalystECSPermissionSet

CodeCatalyst 콘솔에서 다음과 같이 정리합니다.

  1. 삭제codecatalyst-ecs-workflow.

  2. 삭제codecatalyst-ecs-environment.

  3. 삭제codecatalyst-ecs-source-repository.

  4. 삭제codecatalyst-ecs-project.

이 자습서에서는 CodeCatalyst 워크플로와 Amazon에 배포 ECS 작업을 사용하여 Amazon ECS 서비스에 애플리케이션을 배포하는 방법을 배웠습니다.