AWS CLI 시작하기 - AWS Proton

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

AWS CLI 시작하기

AWS CLI 사용하여 AWS Proton을 시작하려면 이 자습서를 따릅니다. 이 자습서에서는에서는 AWS Fargate를 기반으로 하는 퍼블릭 대면 부하 분산 AWS Proton 서비스를 시연합니다. 또한 이 튜토리얼에서는 표시된 이미지가 있는 정적 웹사이트를 배포하는 CI/CD 파이프라인을 제공합니다.

시작하기 전에 제대로 설정했는지 확인합니다. 자세한 내용은 필수 조건 단원을 참조하세요.

1단계: 환경 템플릿을 등록합니다.

이 단계에서는 관리자로서 두 개의 퍼블릭/프라이빗 서브넷이 있는 Amazon Elastic Container Service(Amazon ECS) 클러스터와 Amazon Virtual Private Cloud(VPC)가 포함된 예제 환경 템플릿을 등록합니다.

환경 템플릿을 등록하려면
  1. AWS Proton샘플 CloudFormation 템플릿 리포지토리를 GitHub 계정 또는 조직에 포크합니다. 이 리포지토리에는 이 튜토리얼에서 사용하는 환경 및 서비스 템플릿이 포함되어 있습니다.

    그런 다음 포크된 리포지토리를 AWS Proton에 등록합니다. 자세한 내용은 리포지토리로 연결되는 링크를 생성합니다. 단원을 참조하세요.

  2. 환경 템플릿을 생성합니다.

    환경 템플릿 리소스는 환경 템플릿 버전을 추적합니다.

    $ aws proton create-environment-template \ --name "fargate-env" \ --display-name "Public VPC Fargate" \ --description "VPC with public access and ECS cluster"
  3. 템플릿 동기화 구성을 생성합니다.

    AWS Proton은 리포지토리와 환경 템플릿 간의 동기화 관계를 설정합니다. 그런 다음 DRAFT 상태의 템플릿 버전 1.0을 생성합니다.

    $ aws proton create-template-sync-config \ --template-name "fargate-env" \ --template-type "ENVIRONMENT" \ --repository-name "your-forked-repo" \ --repository-provider "GITHUB" \ --branch "your-branch" \ --subdirectory "environment-templates/fargate-env"
  4. 환경 템플릿 버전이 성공적으로 등록될 때까지 기다리십시오.

    이 명령이 종료 상태인 0로 반환되면 버전 등록이 완료된 것입니다. 이 기능은 스크립트에서 다음 단계에서 명령을 성공적으로 실행할 수 있도록 하는 데 유용합니다.

    $ aws proton wait environment-template-version-registered \ --template-name "fargate-env" \ --major-version "1" \ --minor-version "0"
  5. 환경 템플릿 버전을 게시하여 환경 생성에 사용할 수 있도록 합니다.

    $ aws proton update-environment-template-version \ --template-name "fargate-env" \ --major-version "1" \ --minor-version "0" \ --status "PUBLISHED"

2단계: 서비스 템플릿 등록하기

이 단계에서는 관리자가 로드 밸런서 뒤에 있는 Amazon ECS Fargate 서비스를 프로비저닝하는 데 필요한 모든 리소스와 AWS CodePipeline를 사용하는 CI/CD 파이프라인이 포함된 예제 서비스 템플릿을 등록합니다.

서비스 템플릿을 등록하려면
  1. 서비스 템플릿을 생성합니다.

    서비스 템플릿 리소스는 서비스 템플릿 버전을 추적합니다.

    $ aws proton create-service-template \ --name "load-balanced-fargate-svc" \ --display-name "Load balanced Fargate service" \ --description "Fargate service with an application load balancer"
  2. 템플릿 동기화 구성을 생성합니다.

    AWS Proton은 리포지토리와 서비스 템플릿 간의 동기화 관계를 설정합니다. 그런 다음 DRAFT 상태의 템플릿 버전 1.0을 생성합니다.

    $ aws proton create-template-sync-config \ --template-name "load-balanced-fargate-svc" \ --template-type "SERVICE" \ --repository-name "your-forked-repo" \ --repository-provider "GITHUB" \ --branch "your-branch" \ --subdirectory "service-templates/load-balanced-fargate-svc"
  3. 서비스 템플릿 버전이 성공적으로 등록될 때까지 기다립니다.

    이 명령이 종료 상태인 0로 반환되면 버전 등록이 완료된 것입니다. 이 기능은 스크립트에서 다음 단계에서 명령을 성공적으로 실행할 수 있도록 하는 데 유용합니다.

    $ aws proton wait service-template-version-registered \ --template-name "load-balanced-fargate-svc" \ --major-version "1" \ --minor-version "0"
  4. 서비스 템플릿 버전을 게시하여 서비스 생성에 사용할 수 있도록 합니다.

    $ aws proton update-service-template-version \ --template-name "load-balanced-fargate-svc" \ --major-version "1" \ --minor-version "0" \ --status "PUBLISHED"

3단계: 환경 배포

이 단계에서는 관리자가 환경 템플릿에서 AWS Proton 환경을 인스턴스화합니다.

환경 배포하려면
  1. 등록한 환경 템플릿의 예제 사양 파일을 가져옵니다.

    템플릿 예제 리포지토리에서 environment-templates/fargate-env/spec/spec.yaml 파일을 다운로드할 수 있습니다. 또는 전체 리포지토리를 로컬로 가져와서 environment-templates/fargate-env 디렉터리에서 create-environment 명령을 실행할 수도 있습니다.

  2. 환경을 생성합니다.

    AWS Proton 환경 사양에서 입력 값을 읽고, 이를 환경 템플릿과 결합하고, AWS Proton 서비스 역할을 사용하여 AWS 계정의 환경 리소스를 프로비저닝합니다.

    $ aws proton create-environment \ --name "fargate-env-prod" \ --template-name "fargate-env" \ --template-major-version 1 \ --proton-service-role-arn "arn:aws:iam::123456789012:role/AWSProtonServiceRole" \ --spec "file://spec/spec.yaml"
  3. 환경이 성공적으로 배포될 때까지 기다리세요.

    $ aws proton wait environment-deployed --name "fargate-env-prod"

4단계: 서비스 배포 [애플리케이션 개발자]

이전 단계에서 관리자는 서비스 템플릿을 등록 및 게시하고 환경을 배포했습니다. 애플리케이션 개발자는 이제 AWS Proton 서비스를 생성하여 AWS Proton 환경에 배포할 수 있습니다.

서비스를 배포하려면
  1. 관리자가 등록한 서비스 템플릿의 예제 사양 파일을 가져오십시오.

    템플릿 예제 리포지토리에서 service-templates/load-balanced-fargate-svc/spec/spec.yaml 파일을 다운로드할 수 있습니다. 또는 전체 리포지토리를 로컬로 가져와서 service-templates/load-balanced-fargate-svc 디렉터리에서 create-service 명령을 실행할 수도 있습니다.

  2. AWS Proton샘플 서비스 리포지토리를 GitHub 계정 또는 조직으로 포크합니다. 이 리포지토리에는 이 튜토리얼에서 사용하는 애플리케이션 소스 코드가 포함되어 있습니다.

  3. 서비스 생성.

    AWS Proton 는 서비스 스펙에서 입력 값을 읽고, 이를 서비스 템플릿과 결합하여 스펙에 지정된 환경에서 AWS 계정의 서비스 리소스를 프로비저닝합니다. AWS CodePipeline 파이프라인은 명령에서 지정한 리포지토리에서 애플리케이션 코드를 배포합니다.

    $ aws proton create-service \ --name "static-website" \ --repository-connection-arn \ "arn:aws:codestar-connections:us-east-1:123456789012:connection/your-codestar-connection-id" \ --repository-id "your-GitHub-account/aws-proton-sample-services" \ --branch-name "main" \ --template-major-version 1 \ --template-name "load-balanced-fargate-svc" \ --spec "file://spec/spec.yaml"
  4. 서비스가 성공적으로 배포될 때까지 기다립니다.

    $ aws proton wait service-created --name "static-website"
  5. 출력을 검색하고 새 웹 사이트를 확인합니다.

    다음 명령을 실행합니다.

    $ aws proton list-service-instance-outputs \ --service-name "static-website" \ --service-instance-name load-balanced-fargate-svc-prod

    명령 출력은 은 다음과 유사해야 합니다.

    { "outputs": [ { "key": "ServiceURL", "valueString": "http://your-service-endpoint.us-east-1.elb.amazonaws.com" } ] }

    ServiceURL 인스턴스 출력 값은 새 서비스 웹 사이트의 엔드포인트입니다. 브라우저를 사용하여 탐색하세요. 정적 페이지에 다음 그래픽이 표시되어야 합니다:

    
              CLI 시작하기 절차의 결과로 생성된 정적 이미지 사이트를 보여주는 웹 브라우저

5단계: 정리(선택 사항)

이 단계에서는 이 튜토리얼의 일부로 생성한 AWS 리소스를 탐색한 후 이러한 리소스와 관련된 비용을 절약하기 위해 해당 리소스를 삭제합니다.

튜토리얼 리소스 삭제
  1. 서비스를 다시 시작하려면 다음 명령을 실행합니다.

    $ aws proton delete-service --name "static-website"
  2. 환경을 삭제하려면 다음 명령을 실행합니다.

    $ aws proton delete-environment --name "fargate-env-prod"
  3. 서비스 템플릿을 삭제하려면 다음 명령을 실행합니다.

    $ aws proton delete-template-sync-config \ --template-name "load-balanced-fargate-svc" \ --template-type "SERVICE" $ aws proton delete-service-template --name "load-balanced-fargate-svc"
  4. 환경 템플릿을 삭제하려면 다음 명령을 실행합니다:

    $ aws proton delete-template-sync-config \ --template-name "fargate-env" \ --template-type "ENVIRONMENT" $ aws proton delete-environment-template --name "fargate-env"