AppSpec '리소스' 섹션 (Amazon ECS 및 AWS Lambda 배포만 해당) - AWS CodeDeploy

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

AppSpec '리소스' 섹션 (Amazon ECS 및 AWS Lambda 배포만 해당)

AppSpec 파일 'resources' 섹션의 콘텐츠는 배포의 컴퓨팅 플랫폼에 따라 다릅니다. Amazon ECS 배포의 'resources' 섹션에는 Amazon ECS 작업 정의, 업데이트된 Amazon ECS 작업 세트로 트래픽을 라우팅하기 위한 포트 및 컨테이너, 기타 선택적 정보가 포함되어 있습니다. AWS Lambda 배포의 'resources' 섹션에는 Lambda 함수의 이름, 별칭, 현재 버전 및 대상 버전이 포함되어 있습니다.

AppSpec AWSLambda 배포를 위한 '리소스' 섹션

'resources' 섹션은 배포할 Lambda 함수를 지정하며 다음과 같은 구조를 갖습니다.

YAML:

resources: - name-of-function-to-deploy: type: "AWS::Lambda::Function" properties: name: name-of-lambda-function-to-deploy alias: alias-of-lambda-function-to-deploy currentversion: version-of-the-lambda-function-traffic-currently-points-to targetversion: version-of-the-lambda-function-to-shift-traffic-to

JSON:

"resources": [ { "name-of-function-to-deploy" { "type": "AWS::Lambda::Function", "properties": { "name": "name-of-lambda-function-to-deploy", "alias": "alias-of-lambda-function-to-deploy", "currentversion": "version-of-the-lambda-function-traffic-currently-points-to", "targetversion": "version-of-the-lambda-function-to-shift-traffic-to" } } } ]

각 속성은 문자열로 지정됩니다.

  • name - 필수. 배포할 Lambda 함수의 이름입니다.

  • alias - 필수. Lambda 함수에 대한 별칭 이름입니다.

  • currentversion - 필수. 현재 가리키는 Lambda 함수 트래픽의 버전입니다. 값은 유효한 양의 정수여야 합니다.

  • targetversion - 필수. 전환되는 Lambda 함수 트래픽의 버전입니다. 값은 유효한 양의 정수여야 합니다.

AppSpec Amazon ECS 배포를 위한 '리소스' 섹션

'resources' 섹션은 배포할 Amazon ECS 서비스를 지정하며 다음과 같은 구조를 갖습니다.

YAML:

Resources: - TargetService: Type: AWS::ECS::Service Properties: TaskDefinition: "task-definition-arn" LoadBalancerInfo: ContainerName: "ecs-container-name" ContainerPort: "ecs-application-port" # Optional properties PlatformVersion: "ecs-service-platform-version" NetworkConfiguration: AwsvpcConfiguration: Subnets: ["ecs-subnet-1","ecs-subnet-n"] SecurityGroups: ["ecs-security-group-1","ecs-security-group-n"] AssignPublicIp: "ENABLED | DISABLED" CapacityProviderStrategy: - Base: integer CapacityProvider: "capacityProviderA" Weight: integer - Base: integer CapacityProvider: "capacityProviderB" Weight: integer

JSON:

"Resources": [ { "TargetService": { "Type": "AWS::ECS::Service", "Properties": { "TaskDefinition": "task-definition-arn", "LoadBalancerInfo": { "ContainerName": "ecs-container-name", "ContainerPort": "ecs-application-port" }, "PlatformVersion": "ecs-service-platform-version", "NetworkConfiguration": { "AwsvpcConfiguration": { "Subnets": [ "ecs-subnet-1", "ecs-subnet-n" ], "SecurityGroups": [ "ecs-security-group-1", "ecs-security-group-n" ], "AssignPublicIp": "ENABLED | DISABLED" } }, "CapacityProviderStrategy": [ { "Base": integer, "CapacityProvider": "capacityProviderA", "Weight": integer }, { "Base": integer, "CapacityProvider": "capacityProviderB", "Weight": integer } ] } } } ]

각 속성은 숫자인 ContainerPort을(를) 제외하고 문자열로 지정됩니다.

  • TaskDefinition - 필수. 배포할 Amazon ECS 서비스의 작업 정의입니다. 작업 정의의 ARN으로 지정됩니다. ARN 형식은 arn:aws:ecs:aws-region:account-id:task-definition/task-definition-family:task-definition-revision입니다. 자세한 내용은 Amazon 리소스 이름(ARN) 및 AWS 서비스 네임스페이스를 참조하세요.

    참고

    ARN의 :task-definition-revision 부분은 선택 사항입니다. 생략할 경우 Amazon ECS는 작업 정의의 최신 ACTIVE 개정 버전을 사용합니다.

  • ContainerName - 필수. Amazon ECS 애플리케이션이 포함된 Amazon ECS 컨테이너의 이름입니다. Amazon ECS 작업 정의에 지정된 컨테이너여야 합니다.

  • ContainerPort - 필수. 트래픽이 라우팅되는 컨테이너의 포트입니다.

  • PlatformVersion: 선택 사항입니다. 배포된 Amazon ECS 서비스의 Fargate 작업의 플랫폼 버전입니다. 자세한 내용은 AWS Fargate 플랫폼 버전을 참조하세요. 지정하지 않으면 기본적으로 LATEST이(가) 사용됩니다.

  • NetworkConfiguration: 선택 사항입니다. AwsvpcConfiguration에서 다음을 지정할 수 있습니다. 자세한 내용은 Amazon ECS 컨테이너 서비스 API 참조를 참조하십시오 AwsVpcConfiguration.

    • Subnets: 선택 사항입니다. Amazon ECS 서비스의 쉼표로 구분된 하나 이상의 서브넷 목록.

    • SecurityGroups: 선택 사항입니다. Amazon Elastic Container Service의 쉼표로 구분된 하나 이상의 보안 그룹 목록.

    • AssignPublicIp: 선택 사항입니다. Amazon ECS 서비스의 탄력적 네트워크 인터페이스가 퍼블릭 IP 주소를 수신하는지 여부를 지정하는 문자열. 유효 값은 ENABLEDDISABLED입니다.

    참고

    NetworkConfiguration 아래의 설정을 모두 지정하거나 아무 것도 지정하지 않아야 합니다. 예를 들어, Subnets를 지정하려는 경우 SecurityGroupsAssignPublicIp도 지정해야 합니다. 아무것도 지정하지 않으면 현재 네트워크 Amazon ECS 설정을 CodeDeploy 사용합니다.

  • CapacityProviderStrategy: 선택 사항입니다. 배포에 사용할 Amazon ECS 용량 공급자 목록입니다. 자세한 내용은 Amazon Elastic Container Service 개발자 안내서Amazon ECS 용량 공급자를 참조하세요. 각 용량 공급자에 대해 다음 설정을 지정할 수 있습니다. 이러한 설정에 대한 자세한 내용은 AWS CloudFormation사용 AWS::ECS::ServiceCapacityProviderStrategyItem설명서를 참조하십시오.

    • Base: 선택 사항입니다. 최소한 기준 값은 지정된 용량 공급자에서 실행할 태스크 수를 지정합니다. 용량 공급자 전략에서 하나의 용량 공급자만 기준을 정의할 수 있습니다. 값을 지정하지 않으면 기본값 0이 사용됩니다.

    • CapacityProvider: 선택 사항입니다. 용량 공급자의 짧은 이름입니다. 예: capacityProviderA

    • Weight: 선택 사항입니다.

      가중치 값은 지정된 용량 공급자를 사용해야 하는 시작된 총 작업 수의 상대 백분율을 지정합니다. base 값이 정의되어 있다면 이 값이 만족된 다음 weight 값을 고려합니다.

      weight 값을 지정하지 않으면 0의 기본값이 사용됩니다. 용량 공급자 전략 내에서 여러 용량 공급자가 지정된 경우 하나 이상의 용량 공급자가 0보다 큰 가중치 값을 가져야 하며 가중치가 0인 모든 용량 공급자는 태스크를 배치하는 데 사용되지 않습니다. 가중치가 모두 0인 전략에 여러 용량 공급자를 지정하면 용량 공급자 전략을 사용하는 모든 RunTask 또는 CreateService 작업이 실패합니다.

      예를 들면 둘 다 1의 가중치를 갖는 경우 base가 충족되면 작업이 두 용량 공급자에 균등하게 분할되는 두 개의 용량 공급자를 포함하는 전략을 정의하는 가중치를 사용하는 시나리오입니다. 동일한 논리를 사용하여 capacityProviderA1의 가중치를 지정하고 capacityProviderB4의 가중치를 지정하면 capacityProviderA를 사용하여 실행되는 모든 태스크에 대해 네 가지 태스크에서 capacityProviderB를 사용합니다.