すべてのプロダクト
Search
ドキュメントセンター

Compute Nest:ECS イメージデプロイメントパッケージ

最終更新日:Sep 05, 2026

このトピックでは、ECS イメージデプロイメントパッケージの仕組みを説明し、作成と使用の手順をご案内します。

背景情報

  • ECS イメージデプロイメントパッケージを使用する理由

    サービスをデプロイする際、複数のリージョンでのデプロイをサポートするために ECS イメージを使用することがよくあります。しかし、ECS イメージはリージョン固有であるため、各ターゲットリージョンでこれらのイメージを複製し、リージョンごとにテンプレートで対応するイメージ ID を指定する必要があります。イメージの複製、マッピング、権限管理を含むこのプロセスは、新しいイメージバージョンごとに繰り返す必要があり、複雑で煩雑です。

  • ECS イメージデプロイメントパッケージのメリット

    サービスプロバイダーは、Compute Nest コンソールで ECS イメージデプロイメントパッケージの関連付けを設定するだけで済みます。

    • イメージの複製: Compute Nest は、ソースイメージを Compute Nest の共有アカウントに複製し、そのアカウント配下の複数のリージョンに複製します。

    • イメージマッピング: Compute Nest は、テンプレートに ImageId が設定されているかどうかを確認します。設定されている場合、サービス詳細ページで ImageId を ECS イメージデプロイメントパッケージに関連付けることができます。ユーザーがサービスをデプロイすると、Compute Nest はデプロイリージョンを識別し、テンプレート内の ImageId をそのリージョンの正しいイメージ ID に自動的に置き換え、動的なイメージマッピングを実現します。

    • 権限管理: デプロイメントパッケージの権限は、関連付けられたサービスによって決定されます。デプロイメントパッケージがどのサービスにも関連付けられていない場合、プライベートであり、サービスプロバイダーのみが利用できます。少なくとも 1 つの公開サービスに関連付けられている場合、デプロイメントパッケージは公開されます。プライベートサービスのみに関連付けられている場合は、プライベートのままです。この場合、サービスにホワイトリストを追加すると、ホワイトリストはデプロイメントパッケージにも適用されます。

制限事項

ECS イメージデプロイメントパッケージは、テンプレート内の以下のクラウドリソースのイメージ ID を置き換えることができます。

ROS

デプロイに Resource Orchestration Service (ROS) を使用する場合、ROS テンプレートの Resource セクションにイメージ ID ImageId を含める必要があります。

  • サポート対象のクラウドリソースタイプ:

  • リソースプロパティ: ImageId

  • リソース属性の値は文字列 (イメージ ID) である必要があります。テンプレートの入力パラメーターやその他の組み込みテンプレート関数は使用できません。

Terraform

デプロイに Terraform を使用する場合、テンプレートにイメージ ID image_id を含める必要があります。

  • サポート対象のクラウドリソースタイプ:

  • リソースプロパティ: image_id

  • リソース属性の値は文字列 (イメージ ID) である必要があります。テンプレートの入力パラメーターやその他の組み込みテンプレート関数は使用できません。

デプロイメントパッケージの作成と使用

前提条件

ECS イメージを準備します。Compute Nest は、カスタムイメージと Alibaba Cloud Marketplace イメージをサポートしています。ニーズに合ったタイプを選択してください。

ECS イメージデプロイメントパッケージの作成

  1. デプロイメントパッケージの基本情報を設定します。

    1. Compute Nest コンソールにログインします。左側のナビゲーションペインで、サービスアーティファクト を選択します。デプロイメントオブジェクト タブで、リソースの作成 をクリックします。

    2. 基本情報 セクションで、以下のパラメーターを設定します。

      パラメーター

      説明

      [リソース名]

      名前には、中国語、英字、数字、アンダースコア (_) を使用できます。名前は 3~128 文字で、中国語 1 文字は 2 文字としてカウントされます。デプロイメントパッケージ名は作成後に変更できません。

      [バージョン名]

      名前には、中国語、英字、数字、アンダースコア (_) を使用できます。名前は 3~50 文字で、中国語 1 文字は 2 文字としてカウントされます。

      [リソースの説明]

      説明は 10~500 文字である必要があります。中国語 1 文字は 2 文字としてカウントされます。

      [リソースグループ]

      デプロイメントパッケージが属するリソースグループを選択します。

      リソースグループを使用すると、クラウドリソースを用途、権限、所有権ごとにグループ化でき、組織内の複数のユーザーやプロジェクトの階層的なリソース管理が可能になります。詳細については、「リソースグループ」をご参照ください。

      [タグの設定]

      タグキーとタグ値を入力または選択して、デプロイメントパッケージにタグを追加します。リソースには最大 20 個のタグをバインドできます。使用可能なタグキーまたは値がない場合は、カスタムタグを作成できます。詳細については、「カスタムタグの作成とバインド」をご参照ください。

  2. ECS イメージデプロイメントパッケージを設定します。

    1. リソースの内容 セクションで、リソースタイプ を ECS イメージ に設定します。イメージタイプ と 商品の選択 には、前提条件で準備したイメージを選択します。

    2. イメージの配布 セクションで、イメージを配布するリージョンを 1 つ以上選択してください。 を選択します。この例では すべてのリージョン を使用します。

      重要

      ECS イメージデプロイメントパッケージには、少なくとも 1 つの配布リージョンを選択する必要があります。

    3. リソースの公開 をクリックします。

      公開されたデプロイメントパッケージバージョンは変更できません。変更するには、新しいバージョンまたは新しいデプロイメントパッケージを作成する必要があります。

      説明
      • デプロイパッケージをテストするには、リソースの保存 をクリックします。テストが完了したら、リソースの公開 をクリックします。

      • デプロイメントパッケージが公開されていない場合、設定された配布リージョンでテストできません。イメージが存在するリージョンでのみテストできます。

  3. デプロイメントパッケージを表示します。

    1. サービスデプロイパッケージ ページに戻ります。新しく作成したデプロイパッケージの名前をクリックして リソースの詳細 ページに移動し、デプロイの進捗を確認します。

    2. ステータスが 使用可能 に変わったら、表示 をクリックして ECS イメージデプロイパッケージの 配布結果 を取得します。

    説明

    イメージの配布には、リージョンとイメージサイズに応じて、数分から数時間かかる場合があります。

ECS イメージデプロイメントパッケージの使用

このセクションでは、プライベートサービスを例として、サービスを作成する際に ECS イメージデプロイメントパッケージを設定する方法について説明します。

  1. Compute Nest コンソールにログインします。

  2. 左側のナビゲーションペインで、[マイサービス] をクリックします。[マイサービス] ページの [作成済みサービス] タブで、[サービスの作成] をクリックします。

  3. 「新規サービス作成」ページで、作成方法として[カスタム起動]を、サービスタイプとしてプライベートデプロイサービスを選択し、次へ:サービスの設定をクリックします。

  4. サービスの設定ページで、基本的なサービス情報を入力し、テンプレートを設定します。このセクションでは、ROS テンプレートを例として使用します。

  5. テンプレートの内容 にイメージ ID ImageId が含まれている場合、[デプロイパッケージの関連付け] セクションが表示され、[イメージの関連付けを設定] できます。

    システムは、テンプレートからイメージ情報を自動的に解析し、[置き換えるイメージ] を centos_7、[関連付けられたリソース] を EcsInstanceGroup として表示します。[デプロイメントパッケージの選択] をクリックして関連付けを完了します。

    サンプルテンプレート

    説明

    このサンプルテンプレートはテスト目的のみです。

    ROSTemplateFormatVersion: '2015-09-01'
    Description:
      en: このテンプレートは、データディスクを持つカスタムイメージから単一のインスタンスをデプロイします。新規 VPC の作成または既存 VPC の指定をサポートします。パブリック IP はオプションです。
    Conditions:
      CreateVpcConditions:
        Fn::Equals:
        - true
        - Ref: WhetherCreateVpc
      IfAllocatePublicIP:
        Fn::Equals:
        - Ref: AllocatePublicIP
        - true
    Parameters:
      PayType:
        Type: String
        Label:
          en: ECS インスタンスの課金方法
        AssociationProperty: ChargeType
        AssociationPropertyMetadata:
          LocaleKey: InstanceChargeType
        Default: PostPaid
        AllowedValues:
          - PostPaid
          - PrePaid
      PayPeriodUnit:
        Type: String
        Label:
          en: 支払期間の単位
        AssociationProperty: PayPeriodUnit
        AssociationPropertyMetadata:
          Visible:
            Condition:
              Fn::Not:
                Fn::Equals:
                  - ${PayType}
                  - PostPaid
        Default: Month
        AllowedValues:
          - Month
          - Year
      PayPeriod:
        Type: Number
        Label:
          en: 期間
        AssociationProperty: PayPeriod
        AssociationPropertyMetadata:
          Visible:
            Condition:
              Fn::Not:
                Fn::Equals:
                  - ${PayType}
                  - PostPaid
        Default: 1
        AllowedValues:
          - 1
          - 2
          - 3
          - 4
          - 5
          - 6
          - 7
          - 8
          - 9
      EcsInstanceType:
        Type: String
        Label:
          en: インスタンスタイプ
        AssociationProperty: ALIYUN::ECS::Instance::InstanceType
        AssociationPropertyMetadata:
          ZoneId: ${ZoneId}
          InstanceChargeType: ${InstanceChargeType}
      ZoneId:
        Type: String
        Label:
          en: アベイラビリティゾーン
        AssociationProperty: ALIYUN::ECS::Instance::ZoneId
      WhetherCreateVpc:
        Type: Boolean
        Label:
          en: 新規 VPC の作成
        Default: false
      VpcCidrBlock:
        Type: String
        Label:
          en: VPC IPv4 CIDR ブロック
        Description:
          en: 'VPC の IPv4 CIDR ブロック。次の CIDR ブロックまたはそのサブネットを使用できます。10.0.0.0/8172.16.0.0/12192.168.0.0/16'
        AssociationProperty: ALIYUN::VPC::VPC::CidrBlock
        AssociationPropertyMetadata:
          Visible:
            Condition:
              Fn::Equals:
              - ${WhetherCreateVpc}
              - true
        Default: 192.168.0.0/16
      VSwitchCidrBlock:
        Type: String
        Label:
          en: VSwitch CIDR ブロック
        Description:
          en: VPC のサブネットである必要があります。
        AssociationProperty: ALIYUN::VPC::VSwitch::CidrBlock
        AssociationPropertyMetadata:
          VpcCidrBlock: VpcCidrBlock
          Visible:
            Condition:
              Fn::Equals:
              - ${WhetherCreateVpc}
              - true
        Default: 192.168.1.0/24
      VpcId:
        Type: String
        Label:
          en: VPC ID
        AssociationProperty: ALIYUN::ECS::VPC::VPCId
        AssociationPropertyMetadata:
          Visible:
            Condition:
              Fn::Equals:
              - ${WhetherCreateVpc}
              - false
        Default: ''
      VSwitchId:
        Type: String
        Label:
          en: VSwitch ID
        AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
        AssociationPropertyMetadata:
          VpcId: ${VpcId}
          ZoneId: ${ZoneId}
          Visible:
            Condition:
              Fn::Equals:
              - ${WhetherCreateVpc}
              - false
        Default: ''
      InstancePassword:
        Type: String
        Label:
          en: インスタンスのパスワード
        Description:
          en: インスタンスのログインパスワード。8~30 文字で、大文字、小文字、数字、特殊文字 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ のうち少なくとも 3 種類を含む必要があります。
        ConstraintDescription:
          en: パスワードは 8~30 文字で、大文字、小文字、数字、特殊文字 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ のうち少なくとも 3 種類を含む必要があります。
        AssociationProperty: ALIYUN::ECS::Instance::Password
        AllowedPattern: '[0-9A-Za-z\_\-\&:;''<>,=%`~!@#\(\)\$\^\*\+\|\{\}\[\]\.\?\/]+$'
        MinLength: 8
        MaxLength: 30
        NoEcho: true
      SystemDiskCategory:
        Type: String
        Label:
          en: システムディスクのカテゴリ
        AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory
        AssociationPropertyMetadata:
          LocaleKey: DiskCategory
          InstanceType: ${EcsInstanceType}
        AllowedValues:
        - cloud_efficiency
        - cloud_ssd
        - cloud_essd
      SystemDiskSize:
        Type: Number
        Label:
          en: システムディスクサイズ (GB)
        Default: 200
      DataDiskCategory:
        Type: String
        Label:
          en: データディスクタイプ
        AssociationProperty: ALIYUN::ECS::Disk::DataDiskCategory
        AssociationPropertyMetadata:
          InstanceType: EcsInstanceType
          ZoneId: ZoneId
          LocaleKey: DiskCategory
      DataDiskSize:
        Type: Number
        Label:
          en: データディスクサイズ (GB)
        Description:
          en: 'ECS インスタンスのデータディスクのサイズ (GiB)。値は 20~32,768 の範囲である必要があります。'
        Default: 200
        MinValue: 20
        MaxValue: 32768
      AllocatePublicIP:
        Type: Boolean
        Label:
          en: パブリック IP の割り当て
        Default: true
      InternetMaxBandwidthOut:
        Type: Number
        Label:
          en: インターネット最大帯域幅 (Mbit/s)
        Description:
          en: 値は 0~100 の範囲である必要があります。値が 0 の場合、パブリック IP は割り当てられません。
        AssociationPropertyMetadata:
          Visible:
            Condition:
              Fn::Equals:
              - ${AllocatePublicIP}
              - true
        Default: 5
        MinValue: 0
        MaxValue: 100
    Resources:
      EcsVpc:
        Type: ALIYUN::ECS::VPC
        Condition: CreateVpcConditions
        Properties:
          CidrBlock:
            Ref: VpcCidrBlock
          VpcName:
            Ref: ALIYUN::StackName
      EcsVSwitch:
        Type: ALIYUN::ECS::VSwitch
        Condition: CreateVpcConditions
        Properties:
          ZoneId:
            Ref: ZoneId
          VpcId:
            Ref: EcsVpc
          CidrBlock:
            Ref: VSwitchCidrBlock
      EcsSecurityGroup:
        Type: ALIYUN::ECS::SecurityGroup
        Properties:
          # ソフトウェア名に基づいてセキュリティグループ名を設定します。
          #SecurityGroupName: nginx-sg
          VpcId:
            Fn::If:
            - CreateVpcConditions
            - Ref: EcsVpc
            - Ref: VpcId
          # ソフトウェアがリッスンするポートに基づいてインバウンドルールを設定します。
          # デフォルトでは、セキュリティグループ内のすべてのアウトバウンドポートが開いています。
          #SecurityGroupIngress:
          #  - PortRange: 80/80
          #    Priority: 1
          #    SourceCidrIp: 0.0.0.0/0
          #    IpProtocol: tcp
      EcsInstanceGroup:
        Type: ALIYUN::ECS::InstanceGroup
        Properties:
          ZoneId:
            Ref: ZoneId
          VpcId:
            Fn::If:
            - CreateVpcConditions
            - Ref: EcsVpc
            - Ref: VpcId
          VSwitchId:
            Fn::If:
            - CreateVpcConditions
            - Ref: EcsVSwitch
            - Ref: VSwitchId
          SecurityGroupId:
            Ref: EcsSecurityGroup
          ImageId: centos_7
          IoOptimized: optimized
          InstanceChargeType:
            Ref: PayType
          PeriodUnit:
            Ref: PayPeriodUnit
          Period:
            Ref: PayPeriod
          SystemDiskCategory:
            Ref: SystemDiskCategory
          # 必要に応じてシステムディスクサイズを調整します。
          SystemDiskSize:
            Ref: SystemDiskSize
          # データディスク設定。
          DiskMappings:
          - Category:
              Ref: DataDiskCategory
            Size:
              Ref: DataDiskSize
          MaxAmount: 1
          InstanceType:
            Ref: EcsInstanceType
          Password:
            Ref: InstancePassword
          # パブリック帯域幅。値が 0 の場合、パブリック IP はありません。
          InternetMaxBandwidthOut:
            Fn::If:
            - IfAllocatePublicIP
            - Ref: InternetMaxBandwidthOut
            - 0
          InstanceName:
            Fn::Join:
            - '-'
            - - Ref: ALIYUN::StackName
              - '[1,4]'
      WaitConditionHandle:
        Type: ALIYUN::ROS::WaitConditionHandle
        Properties: {}
      WaitCondition:
        Type: ALIYUN::ROS::WaitCondition
        Properties:
          Count: 1
          Handle:
            Ref: WaitConditionHandle
          # コマンド実行完了のタイムアウト。
          Timeout: 300
      InstanceRunCommand:
        Type: ALIYUN::ECS::RunCommand
        Properties:
          InstanceIds:
            Fn::GetAtt:
            - EcsInstanceGroup
            - InstanceIds
          CommandContent:
            Fn::Sub:
            - |
              #!/bin/bash
              # 1. データディスクを使用する場合は、フォーマットして指定されたディレクトリにマウントします。
              #    この例では /data にマウントすることを想定しています。
              init_and_mount_data_disk() {
                local fs_type=$1
                local mount_point=$2
                # ディスクデバイスを検索します (パーティションを除く)。
                devices=(`lsblk -o NAME,FSTYPE --noheadings --nodeps | awk '$2 == "" {print $1}'`)
                # ファイルシステムを持たないディスクデバイスを検索します。
                for device in ${!devices[@]};
                do
                  lsblk -o NAME,FSTYPE --noheadings  | awk '$2 != "" {print $1}' | grep ${!device}
                  if [[ $? -eq 1 ]]; then
                    data_disk=${!device}
                    break
                  fi
                done
                # データディスクのファイルシステムを作成します。
                mkfs -t ${!fs_type} /dev/${!data_disk}
                cp /etc/fstab /etc/fstab.bak
                mkdir ${!mount_point}
                # /etc/fstab を更新し、ディスクをマウントします。
                echo `blkid /dev/${!data_disk} | awk '{print $2}' | sed 's/\\\"//g'` ${!mount_point} ext4 defaults 0 0 >> /etc/fstab
                mount -a
              }
              # ディスクを /data にマウントします。
              init_and_mount_data_disk ext4 /data
              # 2. ソフトウェアをインストールするか、データファイルディレクトリをデータディスクに向けるなどの初期設定を実行します。
              # yum install -y nginx
              # 3. ブート時の自動起動を有効にするには、システムサービスを追加して有効にします。
              # systemctl enable nginx.service
              # 4. 起動スクリプトを設定するか、システムサービスを起動します。
              # systemctl start nginx.service
              # 5. 成功したら、コールバックを送信して WaitCondition を終了します。
              ${CurlCli} -d "{\"Data\" : \"Success\", \"status\" : \"SUCCESS\"}"
              # スクリプトがいずれかの時点で失敗した場合は、次のコマンドを使用して FAILURE とエラーメッセージを返します。
              # ${CurlCli} -d "{\"Data\" : \"error message\", \"status\" : \"FAILURE\"}"
            - CurlCli:
                Fn::GetAtt:
                - WaitConditionHandle
                - CurlCli
          Type: RunShellScript
          # 予想されるコマンド実行時間に基づいてタイムアウトを秒単位で設定します。
          # コマンドがタイムアウトすると、デプロイは失敗します。
          Timeout: 300
    # 出力はソフトウェア要件に応じて定義されます。
    # 以下は NGINX の例で、Web サイトのパブリックアクセスアドレスを出力します。
    #Outputs:
    #  endpoint:
    #    Condition: IfAllocatePublicIP
    #    Description:
    #      en: パブリック IP アドレス
    #    Value:
    #      Fn::Sub:
    #        - http://${ServerAddress}
    #        - ServerAddress:
    #            Fn::Select:
    #              - 0
    #              - Fn::GetAtt:
    #                  - EcsInstanceGroup
    #                  - PublicIps
    Metadata:
      ALIYUN::ROS::Interface:
    ## パラメーターグループの順序によって、サービスインスタンス作成ページのパラメーター配置が決まります。
    ## ほとんどのインスタンスタイプが使用できる場合 (x86 アーキテクチャなど)、コメントに示すように、アベイラビリティゾーンの選択を最初に配置できます。
    #    ParameterGroups:
    #      - Parameters:
    #          - ZoneId
    #        Label:
    #          default:
    #            en: ゾーン設定
    #      - Parameters:
    #          - WhetherCreateVpc
    #          - VpcCidrBlock
    #          - VSwitchCidrBlock
    #          - VpcId
    #          - VSwitchId
    #        Label:
    #          default:
    #            en: VPC 設定
    #      - Parameters:
    #          - PayType
    #          - PayPeriodUnit
    #          - PayPeriod
    #        Label:
    #          default:
    #            en: 課金設定
    #      - Parameters:
    #          - EcsInstanceType
    #          - InstancePassword
    #          - SystemDiskCategory
    #          - SystemDiskSize
    #          - DataDiskCategory
    #          - DataDiskSize
    #          - AllocatePublicIP
    #          - InternetMaxBandwidthOut
    #        Label:
    #          default:
    #            en: インスタンス設定
        ParameterGroups:
        - Parameters:
            - PayType
            - PayPeriodUnit
            - PayPeriod
          Label:
            default:
              en: 課金設定
        - Parameters:
          - EcsInstanceType
          Label:
            default:
              en: ECS インスタンスタイプ設定
        - Parameters:
          - ZoneId
          Label:
            default:
              en: ゾーン設定
        - Parameters:
          - WhetherCreateVpc
          - VpcCidrBlock
          - VSwitchCidrBlock
          - VpcId
          - VSwitchId
          Label:
            default:
              en: VPC 設定
        - Parameters:
          - InstancePassword
          - SystemDiskCategory
          - SystemDiskSize
          - DataDiskCategory
          - DataDiskSize
          - AllocatePublicIP
          - InternetMaxBandwidthOut
          Label:
            default:
              en: インスタンス詳細設定
        TemplateTags:
        - acs:example:ISV software deployment:Single-instance custom image with optional data disk and public IP.
    
  6. [デプロイメントオブジェクト] の選択 をクリックしてデプロイパッケージとバージョンを選択し、確定する をクリックして ECS イメージデプロイパッケージを関連付けます。

    重要
    • ドラフトバージョン を選択した場合、そのバージョンの ECS イメージは配布されません。イメージは作成されたリージョンでのみ利用できます。

    • 公開済みバージョン を選択した場合、ECS イメージはソースリージョンとすべての配布リージョンで利用できます。

    この例では、置き換えるイメージは centos_7 です。ダイアログボックスで、デプロイメントパッケージ SpringBootEcsImage を選択し、バージョン 1 を選択します。

  7. サービスを作成してテストした後、Compute Nest のレビュー基準を満たしていることを確認してから、レビューに提出します。詳細については、「レビュー基準」をご参照ください。

  8. サービスが承認されたら、公開します。詳細については、「サービスの公開」をご参照ください。

    サービスインスタンスが作成されると、イメージ ID は自動的にデプロイメントパッケージの対応する [配布結果] に置き換えられます。

    • 置換前:

      SecurityGroupId:
                Ref: EcsSecurityGroup
              ImageId: centos_7
              IoOptimized: optimized
              InstanceChargeType:
                Ref: InstanceChargeType
    • 置換後:

      InternetMaxBandwidthOut:
                Ref: InternetMaxBandwidthOut
              ImageId: m-bp1dxxx
              PeriodUnit:
                Ref: PayPeriodUnit

関連ドキュメント

  • Compute Nest でサービスを作成する方法の詳細については、「サービスの作成」をご参照ください。

  • デプロイメントパッケージまたは特定のバージョンが不要になった場合は、削除できます。詳細については、「デプロイメントパッケージの削除」をご参照ください。

  • デプロイメントパッケージのコンテンツ、配布リージョン、その他の詳細を変更するには、新しいバージョンを作成します。詳細については、「新しいバージョンの作成」をご参照ください。

  • デプロイメントパッケージのアップグレード設定を構成するには、「サービスアップグレードの設定」をご参照ください。