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 AWS Lambda デプロイの「リソース」セクション

'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 リソースネーム (ARNs 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 Container Service API リファレンスAwsVpcConfiguration」の「」を参照してください。

    • Subnets: オプション。Amazon ECS サービス内の、1 つ以上のサブネットのカンマ区切りリスト。

    • SecurityGroups: オプション。Amazon Elastic Container Service にある、1 つ以上のセキュリティグループのカンマ区切りリスト。

    • AssignPublicIp: オプション。Amazon ECS サービスの Elastic Network Interface がパブリック IP アドレスを受け取るかどうかを指定する文字列。有効な値は ENABLED および DISABLED です。

    注記

    NetworkConfiguration の下にあるすべての設定を指定するか、何も指定しない必要があります。たとえば、Subnets を指定する場合は、 SecurityGroupsAssignPublicIp も指定する必要があります。何も指定しない場合、現在のネットワーク Amazon ECS 設定 CodeDeploy を使用します。

  • CapacityProviderStrategy: オプション。デプロイに使用したい Amazon ECS キャパシティプロバイダーのリスト。詳細については、Amazon Elastic Container Service デベロッパーガイド の「Amazon ECS キャパシティープロバイダー」を参照してください。キャパシティプロバイダーごとに、次の設定を指定できます。これらの設定の詳細については、「 ユーザーガイドAWS::ECS::ServiceCapacityProviderStrategyItem」のAWS CloudFormation 「」を参照してください。

    • Base: オプション。ベース値は、指定されたキャパシティープロバイダーで実行するタスクの最小限の数を指定します。キャパシティープロバイダー戦略では、ベースを定義できるキャパシティープロバイダーは 1 つだけです。値が指定されていない場合は、デフォルト値の 0 が使用されます。

    • CapacityProvider: オプション。容量プロバイダーの短い名前。例: capacityProviderA

    • Weight: オプション。

      ウエイト値は、指定したキャパシティープロバイダーを使用する起動済みタスクの総数に対する相対的な割合を示します。weight 値は、base 値が、もし定義されている場合、満たされた後に、考慮されます。

      weight 値が指定されていない場合は、デフォルト値の 0 が使用されます。キャパシティープロバイダー戦略内で複数のキャパシティープロバイダーを指定する場合、少なくとも 1 つのキャパシティープロバイダーのウェイト値が 0 より大きい必要があり、ウェイトが 0 のキャパシティープロバイダーはタスクを配置するのに使用しません。すべてのキャパシティープロバイダーが 0 のウェイトを持つ戦略で複数のキャパシティープロバイダーを指定すると、キャパシティープロバイダー戦略を使用する RunTask または CreateService アクションは失敗します。

      例えば、加重を使用するシナリオが 2 つのキャパシティープロバイダーを含む戦略を定義し、両方の加重が 1 である場合、base が満たされたとき、タスクは 2 つのキャパシティープロバイダー間で均等に分割されます。同じロジックを使用して、キャパシティープロバイダー capacityProviderA1 のウエイトを指定し、capacityProviderB4 のウエイトを指定すると、capacityProviderA を使用して実行されるタスクごとに、4 つのタスクが capacityProviderB を使用します。