시작하기 AWS CLI - AWS Proton

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

시작하기 AWS CLI

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

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

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

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

환경 템플릿을 등록하려면
  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단계: 서비스 템플릿 등록하기

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

서비스 템플릿을 등록하려면
  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 계정의 AWS Proton 환경 리소스를 프로비저닝합니다.

    $ 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/AWS ProtonServiceRole" \ --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"