

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AppSpec の「リソース」セクション (Amazon ECS と AWS Lambda デプロイのみ)
<a name="reference-appspec-file-structure-resources"></a>

 AppSpec ファイルの `'resources'` セクションの内容は、デプロイのコンピューティングプラットフォームによって異なります。Amazon ECS デプロイの `'resources'` セクションには、Amazon ECS タスク定義、最新の Amazon ECS タスクセットにトラフィックをルーティングするためのコンテナとポート、およびその他のオプション情報が含まれています。 AWS Lambda デプロイ`'resources'`のセクションには、Lambda 関数の名前、エイリアス、現在のバージョン、およびターゲットバージョンが含まれています。

**Topics**
+ [AWS Lambda デプロイの AppSpec 'resources' セクション](#reference-appspec-file-structure-resources-lambda)
+ [Amazon ECS デプロイ用の AppSpec の「resources」セクション](#reference-appspec-file-structure-resources-ecs)

## AWS Lambda デプロイの AppSpec 'resources' セクション
<a name="reference-appspec-file-structure-resources-lambda"></a>

`'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 関数のバージョンです。値は有効な正の整数である必要があります。

## Amazon ECS デプロイ用の AppSpec の「resources」セクション
<a name="reference-appspec-file-structure-resources-ecs"></a>

 `'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 サービス名前空間](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)」を参照してください。
**注記**  
ARN の `:task-definition-revision` の割り当ては任意です。省略した場合、Amazon ECS はタスク定義の最新の ACTIVE リビジョンを使用します。
+ `ContainerName` – 必須。これは、Amazon ECS アプリケーションを含む Amazon ECS コンテナの名前です。Amazon ECS タスク定義で指定されたコンテナにする必要があります。
+ `ContainerPort` – 必須。これは、トラフィックのルーティング先となるコンテナ上のポートです。
+ `PlatformVersion`: オプション。デプロイされた Amazon ECS サービス内の、Fargate タスクのプラットフォームのバージョン。詳細については、の「[AWS Fargate プラットフォームバージョン](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html)」を参照してください。指定されない場合、デフォルトで `LATEST` が使用されます。
+  `NetworkConfiguration`: オプション。`AwsvpcConfiguration` で、以下を指定することができます。詳細については、*Amazon ECS Container Service API リファレンス* の「[AwsVpcConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_AwsVpcConfiguration.html)」を参照してください。
  + `Subnets`: オプション。Amazon ECS サービス内の、1 つ以上のサブネットのカンマ区切りリスト。
  + `SecurityGroups`: オプション。Amazon Elastic Container Service にある、1 つ以上のセキュリティグループのカンマ区切りリスト。
  + `AssignPublicIp`: オプション。Amazon ECS サービスの Elastic Network Interface がパブリック IP アドレスを受け取るかどうかを指定する文字列。有効な値は `ENABLED` および `DISABLED` です。
**注記**  
 `NetworkConfiguration` の下にあるすべての設定を指定するか、何も指定しない必要があります。たとえば、`Subnets` を指定する場合は、 `SecurityGroups` と `AssignPublicIp` も指定する必要があります。何も指定しない場合、CodeDeploy は現在のネットワーク Amazon ECS の設定を使用します。
+ `CapacityProviderStrategy`: オプション。デプロイに使用したい Amazon ECS キャパシティプロバイダーのリスト。詳細については、*Amazon Elastic Container Service デベロッパーガイド* の「[Amazon ECS キャパシティープロバイダー](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-capacity-providers.html)」を参照してください。キャパシティプロバイダーごとに、次の設定を指定できます。これらの設定の詳細については、*AWS CloudFormation ユーザーガイド* の「[AWS::ECS::ServiceCapacityProviderStrategyItem](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-capacityproviderstrategyitem.html)」を参照してください。
  + `Base`: オプション。ベース値は、指定されたキャパシティープロバイダーで実行するタスクの最小限の数を指定します。キャパシティープロバイダー戦略では、ベースを定義できるキャパシティープロバイダーは 1 つだけです。値が指定されていない場合は、デフォルト値の 0 が使用されます。
  + `CapacityProvider`: オプション。容量プロバイダーの短い名前。例: *capacityProviderA*
  + `Weight`: オプション。

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

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

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