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

Compute Nest:ファイル配置パッケージ

最終更新日:Apr 10, 2025

Compute Nestは、スクリプトベースの展開用のソフトウェアリソースをダウンロードするときに発生する可能性のある問題を解決するためのファイル展開パッケージを提供します。 たとえば、インターネット経由でクラウドリソースにアクセスできない、またはリソースのダウンロードソースが安定していないなどです。 このトピックでは、ファイル展開パッケージの仕組みについて説明します。 このトピックでは、ファイル配置パッケージを作成して使用する方法についても説明します。

背景情報

  • 目的

    Compute Nestは、スクリプトベースの展開用のソフトウェアリソースをダウンロードするときに発生する可能性のある問題を解決するためのファイル展開パッケージを提供します。 たとえば、クラウドリソースにインターネット経由でアクセスできない、ファイルが大きすぎる、リソースのダウンロードソースが安定していないなどです。 指定されたObject Storage Service (OSS) バケットにファイルをアップロードすると、Compute Nestは自動的にファイルを複数のリージョンにレプリケートし、テンプレートのファイル識別子を対応するリージョンのファイルの内部OSS URLに置き換えます。 これにより、データ伝送の安定性とセキュリティが確保されます。

  • メリット

    サービスプロバイダーは、テンプレートでファイル識別子を指定し、Compute Nestコンソールのサービス詳細ページでファイル展開パッケージをファイル識別子に関連付けるだけです。

    1. ファイルレプリケーション: Compute Nestは、Compute Nestの一般アカウントにアップロードしたファイルをレプリケートします。 次に、ファイルはアカウント内のさまざまなリージョンのOSSバケットにレプリケートされます。

    2. ファイルの関連付け: Compute Nestは、テンプレート内のファイル識別子 {{ computeneset:: File::xxx}} を識別し、サービスの作成時にその識別子をファイルデプロイパッケージに関連付けます。 顧客がサービスインスタンスを作成すると、Compute Nestは顧客がサービスインスタンスをデプロイするリージョンを識別し、そのリージョンのファイルのOSS URLを自動的に選択します。 このように、ファイルURLは地域によって動的に変化する。

    3. 権限管理: ファイル展開パッケージのパブリックまたはプライベート属性は、サービスの属性によって決まります。 ファイル展開パッケージがサービスに関連付けられていない場合、ファイル展開パッケージはプライベートです。 少なくとも1つのパブリックサービスがファイル展開パッケージに関連付けられている場合、ファイル展開パッケージはパブリックです。 ファイル展開パッケージに関連付けられているすべてのサービスがプライベートの場合、ファイル展開パッケージはプライベートです。

    4. 内部ネットワーク経由でダウンロード: Compute Nestは、内部ネットワーク経由でファイル展開パッケージをダウンロードします。 顧客がサービスインスタンスを作成すると、Compute Nestは、対応するリージョンのOSSバケット内のファイルの内部HTTP URLを自動的に生成して、ファイル識別子を置き換えます。 内部ネットワークを介したダウンロードは安定しており、安全です。

使用上の注意点

サービスをデプロイするためのResource Orchestration Service (ROS) テンプレートでファイル識別子を定義し、ファイルデプロイパッケージをファイル識別子に関連付けます。 顧客がサービスインスタンスを作成すると、Compute Nestはテンプレート内のファイル識別子を自動的に識別し、サービスインスタンスがデプロイされているリージョンのファイルURLに置き換えます。

次の固定式のいずれかを使用して、ファイル識別子を指定できます。

  • (推奨) ファイル展開パッケージでプライベートURLを使用する場合は、固定式 {{ computenest::file:: ${key }}}} を使用してファイル識別子を指定します。

  • ファイル展開パッケージでパブリックURLを使用する場合は、固定式 {{ computenest::publicfile ::${ key }}}} を使用してファイル識別子を指定します。

    説明

    上記の式では、${key} はスペースのない文字列を示します。

次のサンプルYAMLファイルは、ファイル配置パッケージを使用するためのファイル識別子を定義する方法を示しています。

重要
  • テンプレートでファイル識別子を定義する場合は、単一引用符 (') または二重引用符 (") を使用して識別子を囲むことを推奨します。

  • wgetコマンドを実行してファイルをダウンロードする場合は、-Oパラメーターを使用してダウンロードしたファイルのファイル名を指定することを推奨します。

  • 共通テンプレートにファイル識別子を定義する

    次のサンプルコードは、テンプレートのUserDataセクションでファイル識別子を定義してファイルをダウンロードし、ファイルの名前をTestFirst.txtおよびTestSecond.tarに変更する方法を示しています。

    TiDBServer:
        Type: ALIYUN::ECS::InstanceGroup
        Properties:
          ...
          UserData:
            Fn::Sub:
              - |
                #!/bin/sh
                sleep 10
                wget '{{ computenest::file::DemoFirst }}' -O TestFirst.txt
                wget '{{ computenest::file::DemoSecond }}' -O TestSecond.tar
                ......
  • MigrateTaskテンプレートでファイル識別子を定義する

    SQLDump:
        Type: ALIYUN::RDS::MigrateTask
        Properties:
            ...
          DBName: mytest
          DBInstanceId:
            Fn::GetAtt:
              - Database
              - DBInstanceId
          OssObjectPositions: {{ computenest::file::DemoFirst }}

ファイル配置パッケージの作成と使用

前提条件

アップロードするファイルを準備します。

ファイル展開パッケージの作成

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

    1. 最初に

      Compute Nestコンソール 左側のナビゲーションウィンドウで、[サービス展開パッケージ] を選択し、[展開パッケージ] セクションで [展開パッケージの作成] をクリックします。

    2. では、配置パッケージ情報セクションで、デプロイパッケージ情報を入力します。

      設定アイテム

      説明

      配置パッケージ名

      名前は、漢字、数字、文字、およびアンダースコアで構成されます。 長さは3〜128文字である必要があります。 各漢字は2文字としてカウントされます。 デプロイメントパッケージ名は作成後に変更できません。

      配置パッケージのバージョン名

      名前は、漢字、数字、文字、およびアンダースコアで構成されます。 長さは3〜50文字である必要があります。 各漢字は2文字としてカウントされます。

      配置パッケージの説明

      説明の長さは10〜500文字である必要があります。 各漢字は2文字としてカウントされます。

      リソースグループ

      作成したデプロイメントが属するリソースグループ名を選択します。

      リソースグループは、目的、権限、所有権によってクラウドリソースをグループ化し、企業内の複数のユーザーとプロジェクトのリソースの階層管理を実装します。 詳細については、「リソースグループ」をご参照ください。

      タグ設定

      完全なタグキーとタグ値を選択または入力して、展開パッケージのタグを定義します。 各リソースは最大20個のタグにバインドできます。 タグキーとタグ値が使用できない場合は、カスタムタグを作成できます。 カスタムタグの作成に関する詳細な操作については、「カスタムタグの作成とバインド」をご参照ください。

  2. ファイル展開パッケージを設定します。

    1. [デプロイメントパッケージの内容] セクションで、[デプロイメントパッケージの種類] パラメーターとして [ファイル] を選択します。

    2. [デプロイパッケージのアップロード] パラメーターで、ファイルをアップロードするリージョンを選択します。 次に、アップロードするローカルファイルのサイズに基づいて、[ローカルファイルのアップロード] または [5 GBを超えるファイルのアップロード] を選択します。

      オプション。 5 GBを超えるファイルをアップロードするには、次の操作を実行します。

      1. [アクセス資格の取得] をクリックします。 ローカルアップロードまたはElastic Compute Service (ECS) インスタンスから内部ネットワーク経由でアップロードするためのアップロードコマンドが表示されます。 アップロード環境に基づいてアップロードコマンドをコピーします。 次に、コマンドの <source_file><target_file> をソースファイルの名前とCompute Nestにアップロードした後のファイルの名前に置き換えます。

      2. Alibaba Cloud CLIを使用してファイルをアップロードします。

      3. [file Upload URL] パラメーターに、アップロードしたファイルの名前を入力します。

    3. オプション。 [スクリプトコマンドの設定] をオンまたはオフにします。 スクリプトコマンドは、サービスインスタンスを更新するために使用されます。 ファイルを関連付けるスクリプトコマンドを設定する必要はありません。

      このスイッチをオンにする場合は、次のパラメータを設定する必要があります。

      1. OS: サービスのオペレーティングシステムに基づいてオペレーティングシステムを選択します。

      2. ダウンロードディレクトリ: デプロイメントパッケージがダウンロードされるECSインスタンス上のディレクトリを選択します。 指定したディレクトリが存在しない場合は、配置パッケージをダウンロードする前にディレクトリを作成する必要があります。

      3. コマンドの種類: コマンドの種類を指定します。

      4. コマンドの内容: デプロイメントパッケージのダウンロード後に実行する必要があるコマンドを指定します。

        コマンドでサービスインスタンスの設定パラメーターを参照できます。 詳細については、「参照パラメーター」をご参照ください。

    4. [配布リージョン] パラメーターを設定します。 既定では、[すべてのリージョン] が選択されています。これは、ファイル展開パッケージがすべてのリージョンに配布されることを示します。

    5. クリック配置パッケージの発行.

      配置パッケージが公開された後、公開されたバージョンのコンテンツを変更することはできません。 コンテンツを変更するには、新しいバージョンまたは新しい展開パッケージを作成します。

  3. 配置パッケージを表示します。

    1. [サービス展開パッケージ] ページに戻ります。 表示するデプロイメントパッケージを見つけ、その名前をクリックします。 [パッケージ] タブで、デプロイの進行状況を表示できます。

    2. ファイル展開パッケージのステータスが利用可能になったら、[操作] 列の [表示] をクリックして、ファイル展開パッケージの配布結果を表示します。

      image

ファイル展開パッケージの使用

この例では、プライベートサービスを作成して、ファイル展開パッケージの使用方法を説明します。

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

    image

  2. プロンプトに従って基本サービス情報を入力します。 テンプレートの種類とテンプレートの作成方法を選択し、[デプロイ方法] パラメーターにROSを選択して、テンプレートの内容を入力します。

    ROSテンプレートに {{ computenest::file::test }} または {{ computenest::publicfile::test }}} が存在する場合、[配置パッケージの関連付け] セクションで [ファイルの関連付けの設定] パラメーターを設定できます。

    サンプルテンプレート

    説明

    このサンプルテンプレートは、テストにのみ使用されます。

    ROSTemplateFormatVersion: '2015-09-01'
    Description:
      en: new ack
      zh-cn: 新建ack部署
    Parameters:
      PayType:
        Type: String
        Label:
          en: ECS Instance Charge Type
          zh-cn: 付费类型
        Default: PostPaid
        AllowedValues:
          - PostPaid
          - PrePaid
        AssociationProperty: ChargeType
        AssociationPropertyMetadata:
          LocaleKey: InstanceChargeType
      PayPeriodUnit:
        Type: String
        Label:
          en: Pay Period Unit
          zh-cn: 购买资源时长周期
        Default: Month
        AllowedValues:
          - Month
          - Year
        AssociationProperty: PayPeriodUnit
        AssociationPropertyMetadata:
          Visible:
            Condition:
              Fn::Not:
                Fn::Equals:
                  - ${PayType}
                  - PostPaid
      PayPeriod:
        Type: Number
        Description:
          en: When the resource purchase duration is Month, the value of Period ranges from 1 to 9, 12, 24, 36, 48, or 60. <br><b><font color='red'> When ECS instance types are PrePaid valid </b></font>
          zh-cn: 当购买资源时长为Month时,Period取值:1~9 <br><b><font color='red'>当ECS实例类型为PrePaid有效</b></font>
        Label:
          en: Period
          zh-cn: 购买资源时长
        Default: 1
        AllowedValues:
          - 1
          - 2
          - 3
          - 4
          - 5
          - 6
          - 7
          - 8
          - 9
        AssociationProperty: PayPeriod
        AssociationPropertyMetadata:
          Visible:
            Condition:
              Fn::Not:
                Fn::Equals:
                  - ${PayType}
                  - PostPaid
      ZoneId:
        Type: String
        AssociationProperty: ALIYUN::ECS::Instance:ZoneId
        Label:
          en: Zone ID
          zh-cn: 可用区
        Default: cn-hangzhou-h
      VpcCidrBlock:
        Type: String
        Label:
          en: VPC CIDR IPv4 Block
          zh-cn: 专有网络IPv4网段
        Description:
          zh-cn: VPC的ip地址段范围,<br>您可以使用以下的ip地址段或其子网:<br><font color='green'>[10.0.0.0/8]</font><br><font color='green'>[172.16.0.0/12]</font><br><font color='green'>[192.168.0.0/16]</font>
          en: 'The ip address range of the VPC in the CidrBlock form; <br>You can use the following ip address ranges and their subnets: <br><font color=''green''>[10.0.0.0/8]</font><br><font color=''green''>[172.16.0.0/12]</font><br><font color=''green''>[192.168.0.0/16]</font>'
        Default: 192.168.0.0/16
        AssociationProperty: ALIYUN::VPC::VPC::CidrBlock
      VSwitchCidrBlock:
        Type: String
        Label:
          en: VSwitch CIDR Block
          zh-cn: 交换机子网网段
        Description:
          zh-cn: 必须属于VPC的子网段。 
          en: Must belong to the subnet segment of VPC.
        Default: 192.168.1.0/24
        AssociationProperty: ALIYUN::VPC::VSwitch::CidrBlock
        AssociationPropertyMetadata:
          VpcCidrBlock: VpcCidrBlock
      LoginPassword:
        NoEcho: true
        Type: String
        Description:
          en: Server login password, Length 8-30, must contain three(Capital letters, lowercase letters, numbers, ()`~!@#$%^&*_-+=|{}[]:;<>,.?/ Special symbol in)
          zh-cn: 服务器登录密码,长度8-30,必须包含三项(大写字母、小写字母、数字、 ()`~!@#$%^&*_-+=|{}[]:;<>,.?/ 中的特殊符号)
        Label:
          en: Instance Password
          zh-cn: 实例密码
        ConstraintDescription:
          en: Length 8-30, must contain three(Capital letters, lowercase letters, numbers, ()`~!@#$%^&*_-+=|{}[]:;<>,.?/ Special symbol in)
          zh-cn: 长度8-30,必须包含三项(大写字母、小写字母、数字、 ()`~!@#$%^&*_-+=|{}[]:;<>,.?/ 中的特殊符号)
        AssociationProperty: ALIYUN::ECS::Instance::Password
        AllowedPattern: ^[a-zA-Z0-9-\(\)\`\~\!\@\#\$\%\^\&\*\_\-\+\=\|\{\}\[\]\:\;\<\>\,\.\?\/]*$
        MinLength: 8
        MaxLength: 30
        Default: computenest*12345
      WorkerInstanceType:
        Type: String
        Label:
          en: Worker Nodes Types
          zh-cn: Worker节点规格
        AssociationProperty: ALIYUN::ECS::Instance::InstanceType
        AssociationPropertyMetadata:
          ZoneId: ${ZoneId}
        Default: ecs.g6.large
      WorkerSystemDiskCategory:
        Type: String
        AllowedValues:
          - cloud_efficiency
          - cloud_ssd
          - cloud_essd
        AssociationPropertyMetadata:
          LocaleKey: DiskCategory
          InstanceType: ${WorkerInstanceType}
        Label:
          en: Worker System Disk Category
          zh-cn: Worker 系统盘磁盘类型
        Default: cloud_essd
      WorkerSystemDiskSize:
        Type: Number
        Label:
          en: Worker System Disk Size(GB)
          zh-cn: Worker节点系统盘大小(GB)
        MinValue: 1
        Default: 120
      PodCidr:
        Type: String
        Description:
          zh-cn: 请填写有效的私有网段,即以下网段及其子网:10.0.0.0/8,172.16-31.0.0/12-16,192.168.0.0/16<br>不能与 VPC 及 VPC 内已有 Kubernetes 集群使用的网段重复。 <font color='blue'><b>创建成功后不能修改</b></font>
          en: 'Please fill in a valid private segment, i.e. the following segments and their subnets: 10.0.0.0/8, 172.16-31.0.0/12-16, 192.168.0.0/16<br> which cannot duplicate the network segments already used by clusters in VPC and VPC Kunetberes. <font color=''blue''><b>Cannot be modified after successful creation</b></font>'
        Label:
          zh-cn: Pod 网络 CIDR
          en: Pod Network CIDR
        AssociationProperty: ALIYUN::CS::ManagedKubernetesCluster::PodCidr
        Default: 10.0.0.0/16
      ServiceCidr:
        Type: String
        Description:
          zh-cn: 可选范围:10.0.0.0/16-24,172.16-31.0.0/16-24,192.168.0.0/16-24<br>不能与 VPC 及 VPC 内已有 Kubernetes 集群使用的网段重复。 <font color='blue'><b>创建成功后不能修改</b></font>
          en: 'Optional range: 10.0.0.0/16-24, 172.16-31.0.0/16-24, 192.168.0.0/16-24<br> cannot duplicate segments already used by existing Kubernetes clusters in VPC and VPC.<font color=''blue''><b>Cannot be modified after successful creation</b></font>'
        Label:
          zh-cn: Service CIDR
          en: Service CIDR
        AssociationProperty: ALIYUN::CS::ManagedKubernetesCluster::ServiceCidr
        Default: 172.16.0.0/16
    Resources:
      EcsVpc:
        Type: ALIYUN::ECS::VPC
        Properties:
          VpcName:
            Ref: ALIYUN::StackName
          CidrBlock:
            Ref: VpcCidrBlock
      EcsVSwitch:
        Type: ALIYUN::ECS::VSwitch
        Properties:
          VSwitchName:
            Ref: ALIYUN::StackName
          VpcId:
            Ref: EcsVpc
          ZoneId:
            Ref: ZoneId
          CidrBlock:
            Ref: VSwitchCidrBlock
      EcsSecurityGroup:
        Type: ALIYUN::ECS::SecurityGroup
        Properties:
          SecurityGroupName:
            Ref: ALIYUN::StackName
          VpcId:
            Ref: EcsVpc
          SecurityGroupEgress:
            - PortRange: '-1/-1'
              Priority: 1
              IpProtocol: all
              DestCidrIp: 0.0.0.0/0
              NicType: intranet
          SecurityGroupIngress:
            - PortRange: '-1/-1'
              Priority: 1
              IpProtocol: all
              SourceCidrIp:
                Ref: PodCidr
              Description: access to the pod network
              NicType: intranet
            - PortRange: '-1/-1'
              Priority: 1
              IpProtocol: all
              SourceCidrIp:
                Ref: VpcCidrBlock
              Description: access to the VPC
              NicType: intranet
            - PortRange: '-1/-1'
              Priority: 1
              IpProtocol: icmp
              SourceCidrIp: 0.0.0.0/0
              Description: access to the ICMP port
              NicType: intranet
      ManagedKubernetesCluster:
        Type: ALIYUN::CS::ManagedKubernetesCluster
        Properties:
          Name:
            Ref: ALIYUN::StackName
          ChargeType:
            Ref: PayType
          Period:
            Ref: PayPeriod
          PeriodUnit:
            Ref: PayPeriodUnit
          VSwitchIds:
            - Ref: EcsVSwitch
          VpcId:
            Ref: EcsVpc
          WorkerInstanceTypes:
            - Ref: WorkerInstanceType
          NumOfNodes: 3
          ClusterSpec: ack.pro.small
          ContainerCidr:
            Ref: PodCidr
          ServiceCidr:
            Ref: ServiceCidr
          ZoneIds:
            - Ref: ZoneId
          SecurityGroupId:
            Ref: EcsSecurityGroup
          WorkerSystemDiskCategory:
            Ref: WorkerSystemDiskCategory
          WorkerSystemDiskSize:
            Ref: WorkerSystemDiskSize
          LoginPassword:
            Ref: LoginPassword
          SnatEntry: true
          Addons:
            - Name: flannel
              Config: ''
      ComputenestHelmApplication:
        Type: MODULE::SHARE::1563457855438522::HelmDeploy
        Version: v5
        DependsOn:
          - ManagedKubernetesCluster
        Properties:
          ClusterId:
            Fn::GetAtt:
              - ManagedKubernetesCluster
              - ClusterId
          ChartIdentifier: '{{ computenest::helmpull::springBoot }}'
          ChartValues:
            image:
              fullname: '{{ computenest::acrimage::springBootDemo }}'
            dockerConfigJson: '{{ computenest::acr::dockerconfigjson }}'
            service:
              type: LoadBalancer
              port: 8080
          Namespace:
            Ref: ALIYUN::StackName
          ReleaseName: spring-boot-chart
      # Sleep for 1 minute to wait for the resources to be ready.
      HelmSleep:
        Type: ALIYUN::ROS::Sleep
        DependsOn:
          - ComputenestHelmApplication
        Properties:
          CreateDuration: 60
      # Query the service information and display the information in the output.
      ClusterApplicationResources:
        Type: DATASOURCE::CS::ClusterApplicationResources
        DependsOn:
          - HelmSleep
        Properties:
          ClusterId:
           Fn::GetAtt:
            - ManagedKubernetesCluster
            - ClusterId
          Kind: Service
          Name: spring-boot-chart
          Namespace:
            Ref: ALIYUN::StackName
          JsonPath: $.status.loadBalancer.ingress[0].ip
          FirstMatch: true
    Outputs:
      # Display the public IP address as the returned HTTP URL in the console.
      Endpoint:
        Description:
          zh-cn: 对外暴露的公网IP地址
          en: Public IP Addresses
        Value:
          Fn::Sub:
            - "http://${ServerAddress}:8080"
            - ServerAddress:
                Fn::GetAtt:
                  - ClusterApplicationResources
                  - Response
    Metadata:
      ALIYUN::ROS::Interface:
        ParameterGroups:
          - Parameters:
              - PayType
              - PayPeriodUnit
              - PayPeriod
            Label:
              en: PayType Configuration
              zh-cn: 付费类型配置
          - Parameters:
              - ZoneId
              - VpcCidrBlock
              - VSwitchCidrBlock
              - LoginPassword
            Label:
              en: Basic Configuration
              zh-cn: 基础配置
          - Parameters:
              - WorkerInstanceType
              - WorkerSystemDiskCategory
              - WorkerSystemDiskSize
              - ServiceCidr
              - PodCidr
            Label:
              en: Kubernetes
              zh-cn: Kubernetes配置
  3. [ソフトウェアパッケージの関連付け] セクションの [展開パッケージの関連付け] をクリックします。 表示されるダイアログボックスで、デプロイパッケージとバージョンを選択し、[OK] をクリックします。

    image

    image

  4. サービスが作成され、テストに合格した後、サービスがCompute Nestのレビュー基準を満たしているかどうかを確認し、レビューのためにサービスを送信します。 詳細については、「レビュー基準」をご参照ください。

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

    顧客がサービスインスタンスを作成すると、Compute Nestは、テンプレート内のコンテンツを、サービスインスタンスがデプロイされているリージョンのファイルURLに自動的に置き換えて、ファイルデプロイパッケージを使用します。

    • 次の図は、共通テンプレートのファイル識別子を置き換えた後の結果を示しています。

      • プライベートファイルURLの置き換え結果を次の図に示します。

        image

      • パブリックファイルURLの置き換え結果を次の図に示します。

        image

    • MigrateTaskテンプレートで定義されたファイル識別子の場合、Compute NestはファイルデプロイパッケージのファイルURLをOssObjectPositionsパラメーターに指定された形式に変換します。

      OssObjectPositionsパラメーターの値は、OSSエンドポイント、OSSバケット名、およびOSSのバックアップファイルキーで構成されます。 3つのセグメントはコロン (:) で区切られています。 例: oss-ap-southeast-1.aliyuncs.com:rdsmssqlsingapore:autotest_2008R2_TestMigration_FULL.bak 詳細については、「ALIYUN::RDS::MigrateTask」をご参照ください。 次の図は、MigrateTaskテンプレートのファイルURLの置き換え結果を示しています。

      image

関連ドキュメント

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

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

  • 配布領域やコンテンツなどの配置パッケージを変更する必要がある場合は、新しいバージョンを作成できます。 詳細については、「バージョンの作成」をご参照ください。