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

DataWorks:カスタムイメージ

最終更新日:Oct 12, 2025

デフォルトの DataWorks ランタイムに、PyODPS や Shell タスクに必要な依存関係 (pandas や jieba などの Python ライブラリなど) がない場合は、カスタムイメージを作成します。カスタムイメージは、すべての依存関係を再利用可能で標準化されたランタイム環境にパッケージ化し、一貫性を確保し、開発効率を大幅に向上させます。

使用上の注意

  • エディション要件:

  • リソースグループのサポート: カスタムイメージはサーバーレスリソースグループでのみ機能します。

    レガシーリソースグループ: 外部の依存関係をインストールするには、O&M Assistant を使用します。
  • 必要な権限: 次のいずれかのポリシーが必要です: AliyunDataWorksFullAccess または ModifyResourceGroup

    詳細については、「プロダクトとコンソールのアクセス制御: RAM ポリシー」をご参照ください。

クォータと制限

  • イメージ数の制限:

    • Basic および Standard エディション: 10。

    • Professional Edition: 50。

    • Enterprise Edition: 100。

  • ビルドの同時実行数: リージョンごとに最大 2 つの同時ビルド。

  • ACR イメージの要件:

    • インスタンスエディション: Enterprise Edition。

    • アーキテクチャ: AMD64。

    • イメージサイズ: イメージあたり最大 5 GB。

  • 永続ビルド: DataWorks 公式イメージからビルドされたイメージ (ACR イメージではない) のみがサポートされます。

  • サポートされているノードタイプ:

    ノードタイプ

    公式イメージからのビルド

    ACR イメージからのビルド

    PyODPS2

    サポートされています

    サポートされていません

    PyODPS3

    サポートされています

    サポートされていません

    EMR Spark

    サポートされています

    サポートされていません

    EMR Spark SQL

    サポートされています

    サポートされていません

    EMR SHELL

    サポートされています

    サポートされていません

    シェル

    サポートされています

    サポートされています

    Python

    サポートされています

    サポートされています

    ノートブック

    サポートされていません

    サポートされています

    CDH

    サポートされています

    サポートされていません

    Assignment node

    サポートされています

    サポートされていません

手順

カスタムイメージの作成

次の 3 つの方法のいずれかを選択して、カスタムイメージを作成します:

オプション 1: DataWorks 公式イメージからビルド

  1. DataWorks コンソールにログインし、左側のナビゲーションウィンドウで [イメージ管理] をクリックします。

  2. [DataWorks 公式イメージ] タブで、ベースイメージを選択し、[アクション] 列の [カスタムイメージの作成] をクリックします。

  3. 次のパラメーターを構成します:

    パラメーター

    説明

    イメージ名 / ID

    選択された公式イメージ (必要に応じて切り替え可能)。

    可視範囲

    作成者のみに表示 または すべてに表示

    モジュール

    現在、DataStudio に限定されています。

    サポートされるタスクタイプ

    このイメージを使用できるノードタイプを選択します。

    インストールパッケージ

    次のいずれかの方法を使用して、サードパーティのパッケージを追加します:

    • クイックインストール: ドロップダウンから Python2Python3、または Yum を選択し、パッケージを選択します。

    • スクリプトモード: スクリプト を選択し、インストールコマンドを手動で入力します:

    重要

    インターネットからサードパーティのパッケージをインストールまたは依存するには、サーバーレスリソースグループにアタッチされた VPC (仮想プライベートクラウド) に インターネットアクセス が必要です。

  1. [OK] をクリックします。

オプション 2: ACR イメージからビルド

ACR からカスタムイメージを作成するには、まず Container Registry を有効にします。

  1. DataWorks コンソールにログインし、左側のナビゲーションウィンドウで [イメージ管理] をクリックします。

  2. [カスタムイメージ] タブで [イメージの作成] をクリックし、以下を構成します:

    パラメーター

    説明

    参照タイプ

    [Alibaba Cloud Container Registry イメージ] を選択します。

    イメージインスタンス ID

    ACR エンタープライズインスタンスを選択します。

    イメージ名前空間

    インスタンスから 名前空間 を選択します。

    イメージリポジトリ

    イメージリポジトリを選択します。

    イメージバージョン

    使用するバージョンを選択します。

    関連付ける VPC

    ACR インスタンスにバインドされている VPC を選択します。詳細については、「VPC アクセスの設定」をご参照ください。

    重要

    DataWorks は、ACR インスタンスごとに 1 つの VPC のみを選択することをサポートしています。

    MaxCompute への同期

    デフォルトは [いいえ] で、Standard Edition 以上を実行している ACR インスタンスでのみ使用できます。

    • はい: DataWorks カスタムイメージを生成し、公開時に MaxCompute イメージとして同期的にビルドします。

      詳細については、「個人開発環境から MaxCompute イメージを作成する」をご参照ください。
    • いいえ: MaxCompute と同期せずに DataWorks カスタムイメージのみを生成します。

    可視範囲

    作成者のみに表示 または すべてに表示

    モジュール

    現在、DataStudio に限定されています。

    サポートされるタスクタイプ

    ACR イメージはエントリポイント: startup command + task_script_path を使用します。

    • Shell: デフォルトのコマンド。

    • Python: ACR ベースイメージに Python ランタイムが含まれていることを確認してください

    • Notebook

      • DataWorks Notebook ベースイメージを使用: dataworks-public-registry.cn-shanghai.cr.aliyuncs.com/public/dataworks-notebook:py3.11-ubuntu22.04-20241202

      • ビルド環境がこのベースイメージをプルするためにインターネットにアクセスできることを確認してください。

  3. [OK] をクリックします。

オプション 3: 個人開発環境からビルド

Data Studio は、個人開発環境からのイメージ作成をサポートしています。詳細については、「個人開発環境から DataWorks イメージを作成する」をご参照ください。

イメージのテストと公開

  1. DataWorks コンソールで、[イメージ管理] > [カスタムイメージ] に移動します。

  2. イメージを見つけて、[アクション] 列の [公開] をクリックします。

  3. テストが失敗した場合は、image > [変更] をクリックしてイメージ構成を更新できます。

注:

  • リソースグループ: サーバーレスリソースグループを選択します。

  • VPC の一貫性: ACR または個人環境イメージの場合、サーバーレスリソースグループと ACR インスタンスが同じ VPC を使用していることを確認してください。

  • インターネットアクセス: パッケージのフェッチ中にテストがタイムアウトした場合は、テストリソースグループの VPC に インターネットアクセス があることを確認してください。

イメージをワークスペースに割り当てる

公開後、イメージをワークスペースに割り当てます:

  1. [イメージ管理] > [カスタムイメージ] タブで、公開したイメージを見つけます。

  2. [操作] 列の image > [ワークスペースの変更] をクリックします。

タスクでのイメージの使用

Data Studio の新しいバージョン:

  1. Data Studio に移動: DataWorks ワークスペースページ に移動し、ターゲットリージョンに切り替え、ワークスペースを見つけて、[ショートカット] > [DataStudio] をクリックします。

  2. イメージの構成: タスクノードで、右側のペインの [スケジューリング] をクリックします。

    • リソースグループ: サーバーレスリソースグループを選択します。

      ターゲットリソースグループが表示されない場合は、リソースグループページ に移動し、[ワークスペースの関連付け] をクリックします。
      重要

      このリソースグループが、イメージの公開時に使用されたテストリソースグループと一致することを確認してください。

    • イメージ: 公開したカスタムイメージを選択します。

      イメージへの変更を本番環境で有効にするには、ノードを再公開する必要があります。

      image

  3. ノードのデバッグ: [デバッグ設定] ペインで、[計算リソース][リソースグループ][計算用 CU][イメージ]、および [スクリプトパラメーター] を構成し、ツールバーの [実行時間] をクリックします。

  4. ノードの公開: ツールバーの [公開] をクリックして本番環境にデプロイします。

DataStudio のレガシーバージョン

  1. DataStudio に移動: DataWorks コンソールにログインし、リージョンに切り替え、[データ開発と O&M] > [データ開発] をクリックし、ワークスペースを選択して、[データ開発へ] をクリックします。

  2. イメージの構成: タスクノードで、右側のペインの [プロパティ] をクリックします。

    • リソースグループ: サーバーレスリソースグループを選択します。

      ターゲットリソースグループが表示されない場合は、リソースグループページ に移動し、[ワークスペースの関連付け] をクリックします。
      重要

      このリソースグループが、イメージの公開時に使用されたテストリソースグループと一致することを確認してください。

    • イメージ: 公開したカスタムイメージを選択します。

      イメージへの変更を本番環境で有効にするには、ノードを再公開する必要があります。

      image

  3. ノードのデバッグ: [パラメーター付きで実行] (image) をクリックし、[リソースグループ名][実行用 CU]、および [イメージ] を構成してから、[実行] をクリックします。

  4. ノードの公開: [保存][送信] をクリックして、本番環境にデプロイします。

永続イメージのビルド

重要

公開とテストの後に永続イメージをビルドすることを強くお勧めします。これにより、上流依存関係の変更や未指定のバージョンによるランタイムエラーを防ぐことができます。

通常のカスタムイメージは実行のたびに再デプロイされ、実行時間と計算コストが増加します。永続イメージは一度ビルドすれば無期限に再利用できるため、効率が向上し、コストが削減されます。

  1. [イメージ管理] > [カスタムイメージ] に移動し、公開したイメージを見つけます。

  2. [アクション] 列の image > [ビルド] をクリックします。

  3. [イメージを作成するリソースグループ] ダイアログで、リソースグループを選択し、[続行] をクリックします。

    重要

    ネットワーク関連の障害を防ぐため、このリソースグループが公開時に使用されたテストリソースグループと一致することを確認してください。

  4. ビルドにはイメージサイズに応じて 5〜10 分かかります。成功すると、ステータスが 公開済み (ビルド成功) に変わります。

課金

イメージビルドは次のように課金されます: CU 数 × ビルド期間。システムはデフォルトで 0.5 CU を割り当てます。課金の詳細については、「サーバーレスリソースグループの課金」をご参照ください。

本番環境のベストプラクティス

本番環境で安定、効率的、コスト効果の高い使用をするために、以下の推奨事項に従ってください:

  • 永続イメージ: 安定した依存関係を持つ公開済みの構成から永続イメージをビルドします。これにより、実行ごとの再インストールが不要になり、起動時間、計算コストが削減され、安定性が向上します。

  • 環境の一貫性: 特にプライベート ACR リポジトリやインターネットにアクセスする場合、テスト、ビルド、および本番のサーバーレスリソースグループ間で VPC とネットワーク構成が一致することを確認してください。

  • バージョンロック: スクリプト モードで依存関係をインストールする場合は、常に pip install pandas==1.5.3 のようにバージョンを指定してください。これにより、上流ライブラリの更新による予期しない動作を防ぐことができます。

  • ロールバック計画: イメージの更新後に本番タスクが失敗した場合:

    • タスク公開履歴を介してロールバックします。

    • スケジューリング構成で以前の安定バージョンに戻します。

この例では、PyODPS でカスタムイメージを使用して MaxCompute テーブルの単語分割を実行する方法を示します。MaxCompute テーブルの列のテキストを分割し、結果を別のテーブルに保存して、下流のスケジューリングに利用します。

  1. テストデータを作成します。

    1. MaxCompute リソースがアタッチされた DataWorks ワークスペースを作成します。詳細については、「ワークスペースの作成」、「ワークスペースへのデータソースの追加またはクラスターの登録」、および「計算リソースの関連付け」をご参照ください。

    2. Data Studio で、ODPS ノード (レガシー) または MaxCompute SQL ノード (新バージョン) を作成します:

      説明

      この例では、スケジューリングパラメーターを使用します。[スケジューリング] ペインで、パラメーター名を bday、値を $[yyyymmdd] に設定します。

      テストテーブルを作成します。

      -- テストテーブルを作成
         CREATE TABLE IF NOT EXISTS custom_img_test_tb
         (
             c_customer_id BIGINT NOT NULL,
             c_customer_text STRING NOT NULL,
             PRIMARY KEY (c_customer_id)
         )
         COMMENT 'カスタムイメージデモ用のテストテーブル'
         PARTITIONED BY (ds STRING COMMENT 'パーティション')
         LIFECYCLE 90;
      
         -- テストデータを挿入
         INSERT INTO custom_img_test_tb PARTITION (ds='${bday}') (c_customer_id, c_customer_text) VALUES
         (1, 'The sky is getting dark and it looks like it will snow. Would you like a cup of wine?'),
         (2, 'The moon sets, crows caw, and frost fills the sky. I lie awake, facing the river maples and fishing lights.'),
         (3, 'Mountains and rivers seem to block the way. But among shady willows and bright flowers, another village appears.'),
         (4, 'I sleep in spring, unaware of the dawn. Everywhere I hear the birds sing.'),
         (5, 'Thoughts on a quiet night. Moonlight shines before my bed. I mistake it for frost on the ground.'),
         (6, 'The bright moon rises over the sea. We share this moment, though we are far apart.'),
         (7, 'The swallows that once graced the halls of nobles now fly into the homes of common people.'),
         (8, 'A line of egrets flies up to the blue sky. My window frames the ancient snow on the Western Hills.'),
         (9, 'When life is good, enjoy it to the fullest. Do not let the golden goblet face the moon empty.'),
         (10, 'Heaven gave me talent, so it must be used. A thousand pieces of gold, once spent, can be earned again.');
    3. ノードを保存して公開します。

  2. カスタムイメージを作成します。

    これらの主要なパラメーターでカスタムイメージを作成します:

    • イメージ名/ID: dataworks_pyodps_task_pod (DataWorks 公式 PyODPS イメージ) を選択します

    • サポートされるタスクタイプ: PyODPS2 および PyODPS 3

    • インストールパッケージ: Python 3 を選択し、jieba を追加します。

  3. イメージを公開して割り当てます。

    イメージを公開し、ワークスペースに割り当てます。詳細については、「イメージのテストと公開」および「イメージをワークスペースに割り当てる」をご参照ください。

  4. PyODPS タスクを作成します。

  5. Data Studio で、このコードで PyODPS3 ノードを作成します

    カスタムイメージを使用します。

    import jieba
       from odps import ODPS
       from odps.models import TableSchema as Schema, Column, Partition
    
       # ソーステーブルからデータを読み取る
       table = o.get_table('custom_img_test_tb')
       partition_spec = f"ds={args['bday']}"
       with table.open_reader(partition=partition_spec) as reader:
           records = [record for record in reader]
    
       # 単語のセグメンテーションを実行
       participles = [' | '.join(jieba.cut(record['c_customer_text'])) for record in records]
    
       # 宛先テーブルを作成
       if not o.exist_table("participle_tb"):
           schema = Schema(
               columns=[Column(name='word_segment', type='string', comment='セグメンテーション結果')], 
               partitions=[Column(name='ds', type='string', comment='パーティションフィールド')]
           )
           o.create_table("participle_tb", schema)
    
       # 結果を宛先テーブルに書き込む
       output_partition = f"ds={args['bday']}"
       output_table = o.get_table("participle_tb")
    
       # パーティションが存在しない場合は作成
       if not output_table.exist_partition(output_partition):
           output_table.create_partition(output_partition)
    
       # セグメンテーション結果を書き込む
       record = output_table.new_record()
       with output_table.open_writer(partition=output_partition, create_partition=True) as writer:
           for participle in participles:
               record['word_segment'] = participle
               writer.write(record)
  6. 右側のペインでスケジューリングパラメーターを構成します:

    • スケジューリングパラメーター: bday = $[yyyymmdd]

    • リソースグループ: イメージテストに使用したのと同じサーバーレスグループ。

    • イメージ: 公開したカスタムイメージ。

  7. ノードをデバッグします。

    • レガシーバージョン: [パラメーター付きで実行] (image) をクリックし、設定を構成して、[実行] をクリックします。

    • 新しいバージョン: [デバッグ設定] ペインで構成し、ツールバーの [実行時間] をクリックします

  8. (オプション) SQL クエリで結果を確認します:

    -- <partition_date> を実際の日付に置き換える
       SELECT * FROM participle_tb WHERE ds=<partition_date>;
  9. PyODPS ノードを本番環境に公開します。

    説明

    Data Studio でのイメージの変更は、自動的に本番環境に同期されません。変更を有効にするには、タスクを公開する必要があります。詳細については、「ノードのデプロイ」または「ノードまたはワークフローのデプロイ」をご参照ください。

  10. 永続イメージをビルドします。

    カスタムイメージを永続イメージとしてビルドします。詳細については、「永続イメージのビルド」をご参照ください。

関連ドキュメント

付録: インストールコマンドリファレンス

[スクリプト] モードを使用してインストールコマンドを構成する場合:

  • PyODPS 2 の依存関係の場合:

    pip install <package_name>
    説明

    pip のアップグレードを求められた場合は、pip install --upgrade pip を実行します。

  • PyODPS 3 の依存関係の場合:

    /home/tops/bin/pip3 install <package_name>
    説明
    • pip のアップグレードを求められた場合は、/home/tops/bin/pip3 install --upgrade pip を実行します。

    • エラー /home/admin/usertools/tools/cmd-0.sh: line 3: /home/tops/bin/python3: No such file or directory が発生した場合は、チケットを送信して権限をリクエストしてください。

  • Python ミラーソース

    必要に応じて、これらのパブリックミラーに切り替えます:

    組織

    ミラー URL

    Alibaba Cloud (Aliyun)

    https://mirrors.aliyun.com/pypi/simple/

    重要

    Alibaba Cloud ミラーにはインターネットアクセスは必要ありません。

    Tsinghua University

    https://pypi.tuna.tsinghua.edu.cn/simple

    USTC

    https://pypi.mirrors.ustc.edu.cn/simple/