ファイルデプロイパッケージは、スクリプトベースのデプロイメントでよく発生する問題を解決します。具体的には、デプロイメントスクリプトがソフトウェアファイルをダウンロードする必要があるものの、そのファイルが大きすぎる、ダウンロード元が不安定である、またはファイルがパブリックインターネット経由でアクセスできないといったケースです。一度ファイルをアップロードすれば、Compute Nest が自動的に各リージョンへのディストリビューションと内部ネットワーク経由のセキュアな配信を処理します。
仕組み
ファイルデプロイパッケージを公開すると、Compute Nest はアップロードされたファイルを、Compute Nest の汎用アカウント下にあるすべてのターゲットリージョンの Object Storage Service (OSS) バケットに複製します。
Resource Orchestration Service (ROS) テンプレートでは、ファイル URL が必要な箇所に {{ computenest::file::mykey }} のようなファイル識別子を記述します。サービスを作成する際、Compute Nest はこの識別子を指定したファイルデプロイパッケージに関連付けます。お客様がサービスインスタンスを作成すると、Compute Nest はターゲットリージョンを検出し、そのリージョンに対応する OSS URL を選択し、テンプレート内の識別子を内部 HTTP URL に置き換えます。これにより、すべてのダウンロードが高速かつ安定し、内部ネットワーク内に閉じ込められます。
権限モデル:ファイルデプロイパッケージの可視性は、関連付けられたサービスに従います。
| 関連付け状態 | パッケージの可視性 |
|---|---|
| どのサービスにも関連付けられていない | 非公開 |
| 少なくとも 1 つのパブリックサービスに関連付けられている | 公開 |
| プライベートサービスのみに関連付けられている | 非公開 |
ファイル識別子の構文
ROS テンプレート内で以下の固定式のいずれかを使用します。${key} は空白を含まない文字列です。
| 使用ケース | 識別子 |
|---|---|
| プライベート URL(推奨) | {{ computenest::file:: ${key}}} |
| パブリック URL | {{ computenest::publicfile::${key}}} |
テンプレート内では、識別子をシングルクォートまたはダブルクォートで囲んでください。wget を使用してファイルをダウンロードする場合は、-O パラメーターを使用して出力ファイル名を指定します。
例:共通テンプレート (UserData)
以下のスニペットは、Elastic Compute Service (ECS) インスタンスの UserData セクションで 2 つのファイル識別子を定義しています。お客様がサービスをデプロイすると、Compute Nest は各識別子をリージョン固有の内部 OSS URL に置き換えます。
TiDBServer:
Type: ALIYUN::ECS::InstanceGroup
Properties:
...
UserData:
Fn::Sub:
- |
#!/bin/sh
sleep 10
wget '{{ computenest::file::DemoFirst }}' -O TestFirst.txt # デプロイ時に内部 OSS URL に置き換えられます
wget '{{ computenest::file::DemoSecond }}' -O TestSecond.tar
......例:MigrateTask テンプレート
ALIYUN::RDS::MigrateTask リソースでは、OssObjectPositions フィールドに識別子を使用します。Compute Nest はファイル URL を、パラメーターで必要な形式である {OSS endpoint}:{OSS bucket name}:{backup file key in OSS} に変換します。
SQLDump:
Type: ALIYUN::RDS::MigrateTask
Properties:
...
DBName: mytest
DBInstanceId:
Fn::GetAtt:
- Database
- DBInstanceId
OssObjectPositions: {{ computenest::file::DemoFirst }} # OSS endpoint:bucket:key 形式に変換されますたとえば、Compute Nest は識別子を oss-ap-southeast-1.aliyuncs.com:rdsmssqlsingapore:autotest_2008R2_TestMigration_FULL.bak のような値に変換します。パラメーターの完全な仕様については、「ALIYUN::RDS::MigrateTask」をご参照ください。
ファイルデプロイパッケージの作成
前提条件
作業を開始する前に、次の要件を満たしていることを確認してください。
アップロードするファイル
ステップ 1:基本情報の設定
Compute Nest コンソール にログインします。左側のナビゲーションウィンドウで、サービスデプロイパッケージ をクリックします。
デプロイパッケージ セクションで、デプロイパッケージの作成 をクリックします。
デプロイパッケージ情報 セクションで、次のパラメーターを設定します。
パラメーター 説明 デプロイパッケージ名 3~128 文字。英数字およびアンダースコア (_) のみ使用可能。作成後は変更できません。 バージョン名 3~50 文字。英数字およびアンダースコア (_) のみ使用可能。 説明 10~500 文字。 リソースグループ デプロイメントパッケージが属するリソースグループ。リソースグループを使用すると、リソースを使用量、権限、およびリージョン別に整理できます。詳細については、「リソースグループの管理」をご参照ください。 タグ設定 デプロイメントパッケージに追加するタグ。1つのパッケージにつき最大20個のタグを使用できます。カスタムタグを作成するには、「カスタムタグを追加する」をご参照ください。
ステップ 2:ファイルのアップロード
デプロイパッケージコンテンツ セクションで、デプロイパッケージタイプ を ファイル に設定します。
デプロイパッケージのアップロード のアップロードリージョンを選択し、ファイルサイズに応じてアップロード方法を選択します。5 GB を超えるファイルの場合:
アクセス認証情報を取得 をクリックします。ローカルからのアップロードまたは ECS インスタンスから内部ネットワーク経由でのアップロード用のコマンドが表示されます。
表示されたコマンドをコピーし、
<source_file>をソースファイル名に、<target_file>を Compute Nest 内のターゲットファイル名に置き換えます。Alibaba Cloud CLI を使用してコマンドを実行します。
アップロードしたファイル名を ファイルアップロード URL フィールドに入力します。
ファイルサイズ 方法 5 GB 以下 ローカルファイルをアップロード を選択し、ファイルを直接アップロードします。 5 GB 超 5 GB 超のファイルをアップロード を選択し、以下の手順に従います。 
(オプション)スクリプトコマンドを設定 をオンにして、サービスインスタンスの更新中にデプロイパッケージがダウンロードされた際に実行されるコマンドを定義します。ファイルの関連付けにはスクリプトコマンドは必須ではありません。有効にした場合、次のパラメーターを設定します。
パラメーター 説明 OS ご利用のサービスのオペレーティングシステム。 ダウンロードディレクトリ ファイルをダウンロードする ECS インスタンス上のディレクトリ。存在しない場合はディレクトリを作成します。 コマンドタイプ 実行するコマンドのタイプ。 コマンド内容 ダウンロード後に実行するコマンド。コマンド内ではサービスインスタンスの構成パラメーターを参照できます。 ディストリビューションリージョン はデフォルトで すべてのリージョン に設定されています。特定のリージョンに限定する必要がある場合にのみ変更してください。
デプロイパッケージを公開 をクリックします。
デプロイパッケージバージョンを公開すると、そのコンテンツは変更できません。コンテンツを更新するには、新しいバージョンまたは新しいデプロイパッケージを作成してください。
ステップ 3:ディストリビューションの確認
サービスデプロイパッケージ ページに戻り、作成したデプロイパッケージの名前をクリックします。
パッケージ タブで、デプロイの進捗状況をモニターします。
ステータスが 利用可能 に変わったら、操作 列の 表示 をクリックして、各リージョンでのディストリビューション結果を確認します。

ファイルデプロイパッケージをサービスに関連付ける
このセクションでは、ファイルデプロイパッケージをプライベートサービスに関連付ける手順を説明します。
サービスの作成 ページで、サービス作成方法の選択 を カスタム起動 に、サービスタイプの選択 を プライベートサービス に設定し、次へ:設定項目の構成 をクリックします。

サービスの基本情報を入力します。テンプレートタイプとテンプレート作成方法を選択し、デプロイ方法 を ROS に設定して、テンプレートの内容を入力します。テンプレートに
{{ computenest::file::test }}または{{ computenest::publicfile::test }}が含まれている場合、デプロイパッケージ関連付け セクションに ファイル関連付けの設定 パラメーターが表示されます。<details> <summary>サンプル ROS テンプレート</summary>以下のサンプルテンプレートはテスト専用です。
ROSTemplateFormatVersion: '2015-09-01' Description: en: 新規 ack zh-cn: 新建ack部署 Parameters: PayType: Type: String Label: en: ECS インスタンス課金タイプ zh-cn: 付费类型 Default: PostPaid AllowedValues: - PostPaid - PrePaid AssociationProperty: ChargeType AssociationPropertyMetadata: LocaleKey: InstanceChargeType PayPeriodUnit: Type: String Label: en: 支払期間単位 zh-cn: 购买资源时长周期 Default: Month AllowedValues: - Month - Year AssociationProperty: PayPeriodUnit AssociationPropertyMetadata: Visible: Condition: Fn::Not: Fn::Equals: - ${PayType} - PostPaid PayPeriod: Type: Number Description: en: リソースの購入期間が月の場合、Period の値は 1~9、12、24、36、48、または 60 です。<b><font color='red'> ECS インスタンスタイプが PrePaid の場合に有効です </font> zh-cn: 当购买资源时长为Month时,Period取值:1~9 <b><font color='red'>当ECS实例类型为PrePaid有效</font> Label: en: 期間 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: ゾーン ID zh-cn: 可用区 Default: cn-hangzhou-h VpcCidrBlock: Type: String Label: en: VPC CIDR IPv4 ブロック zh-cn: 专有网络IPv4网段 Description: zh-cn: VPC的ip地址段范围,您可以使用以下的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: 'VPC の IP アドレス範囲 (CidrBlock 形式)。<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>' Default: 192.168.0.0/16 AssociationProperty: ALIYUN::VPC::VPC::CidrBlock VSwitchCidrBlock: Type: String Label: en: VSwitch CIDR ブロック zh-cn: 交换机子网网段 Description: zh-cn: 必须属于VPC的子网段。 en: VPC のサブネットセグメントに属している必要があります。 Default: 192.168.1.0/24 AssociationProperty: ALIYUN::VPC::VSwitch::CidrBlock AssociationPropertyMetadata: VpcCidrBlock: VpcCidrBlock LoginPassword: NoEcho: true Type: String Description: en: サーバーログインパスワード。長さは 8~30 文字で、大文字、小文字、数字、および特殊文字 (()\`~!@#$%^&*_-+=|{}[]:;<>,.?/) のうち 3 種類を含める必要があります。 zh-cn: 服务器登录密码,长度8-30,必须包含三项(大写字母、小写字母、数字、 ()`~!@#$%^&*_-+=|{}[]:;<>,.?/ 中的特殊符号) Label: en: インスタンスのパスワード zh-cn: 实例密码 ConstraintDescription: en: 長さは 8~30 文字で、大文字、小文字、数字、および特殊文字 (()\`~!@#$%^&*_-+=|{}[]:;<>,.?/) のうち 3 種類を含める必要があります。 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 ノードタイプ 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 システムディスクカテゴリ zh-cn: Worker 系统盘磁盘类型 Default: cloud_essd WorkerSystemDiskSize: Type: Number Label: en: Worker システムディスクサイズ (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>创建成功后不能修改</font> en: '有効なプライベートセグメント (つまり、次のセグメントとそのサブネット) を入力してください: 10.0.0.0/8、172.16-31.0.0/12-16、192.168.0.0/16VPC および VPC 内の Kubernetes クラスターで使用されているネットワークセグメントと重複することはできません。<font color=''blue''><b>作成後は変更できません</font>' Label: zh-cn: Pod 网络 CIDR en: Pod ネットワーク 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不能与 VPC 及 VPC 内已有 Kubernetes 集群使用的网段重复。 <font color='blue'><b>创建成功后不能修改</font> en: '選択可能な範囲: 10.0.0.0/16-24、172.16-31.0.0/16-24、192.168.0.0/16-24VPC および VPC 内の既存の Kubernetes クラスターで使用されているセグメントと重複することはできません。<font color=''blue''><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: Pod ネットワークへのアクセス NicType: intranet - PortRange: '-1/-1' Priority: 1 IpProtocol: all SourceCidrIp: Ref: VpcCidrBlock Description: VPC へのアクセス NicType: intranet - PortRange: '-1/-1' Priority: 1 IpProtocol: icmp SourceCidrIp: 0.0.0.0/0 Description: ICMP ポートへのアクセス 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 # リソースの準備が完了するまで 1 分間スリープします。 HelmSleep: Type: ALIYUN::ROS::Sleep DependsOn: - ComputenestHelmApplication Properties: CreateDuration: 60 # サービス情報を照会し、その情報を出力に表示します。 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: # コンソールで、返された HTTP URL としてパブリック IP アドレスを表示します。 Endpoint: Description: zh-cn: 对外暴露的公网IP地址 en: パブリック IP アドレス Value: Fn::Sub: - "http://${ServerAddress}:8080" - ServerAddress: Fn::GetAtt: - ClusterApplicationResources - Response Metadata: ALIYUN::ROS::Interface: ParameterGroups: - Parameters: - PayType - PayPeriodUnit - PayPeriod Label: en: PayType 設定 zh-cn: 付费类型配置 - Parameters: - ZoneId - VpcCidrBlock - VSwitchCidrBlock - LoginPassword Label: en: 基本設定 zh-cn: 基础配置 - Parameters: - WorkerInstanceType - WorkerSystemDiskCategory - WorkerSystemDiskSize - ServiceCidr - PodCidr Label: en: Kubernetes 設定 zh-cn: Kubernetes配置</details>
ソフトウェアパッケージの関連付け セクションで、デプロイパッケージ関連付け をクリックします。ダイアログボックスでデプロイパッケージとバージョンを選択し、OK をクリックします。


サービスのテストが完了したら、レビューのために提出します。レビュー基準については、「レビュー基準」をご参照ください。
承認後、サービスを公開します。詳細については、「サービスの公開」をご参照ください。
お客様がサービスインスタンスを作成すると、Compute Nest はテンプレート内のすべてのファイル識別子を、お客様のターゲットリージョンに対応する内部 OSS URL に自動的に置き換えます。
共通テンプレート:以下の図は、プライベートおよびパブリックファイル URL の識別子置き換え結果を示しています。プライベートファイル URL の置き換え:パブリックファイル URL の置き換え:


MigrateTask テンプレート:Compute Nest はファイル URL を、
{OSS endpoint}:{OSS bucket name}:{backup file key in OSS}形式に変換し、OssObjectPositionsパラメーターで必要な形式にします。
次のステップ
サービスの作成 — Compute Nest サービスの作成に関する完全ガイド
バージョンの作成 — 新しいバージョンを作成してデプロイパッケージのコンテンツを更新
デプロイパッケージの削除 — 不要になったデプロイパッケージまたはバージョンを削除