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

DataWorks:カスタムイメージ

最終更新日:Feb 09, 2026

デフォルトの DataWorks ランタイム環境がタスクの依存関係要件(例:PyODPS タスクや Shell タスクで pandasjieba などの Python ライブラリが必要な場合)を満たさないときに、カスタムイメージを作成します。カスタムイメージでは、依存関係をあらかじめパッケージ化し、再利用可能かつ標準化された環境を提供することで、実行の一貫性を確保し、効率を向上させます。

注意事項

  • バージョン制限

    • すべてのエディションで、カスタムイメージの作成および使用が可能です。

    • イメージ構築は、Professional Edition 以降のみサポートされています。

  • リソースグループ制限:本機能は サーバーレスリソースグループのみをサポートします。

    旧式のリソースグループをご利用の場合、外部依存関係のインストールには O&M アシスタント をご使用ください。
  • 権限制限:必要な権限は、AliyunDataWorksFullAccess または ModifyResourceGroup ポリシーです。

    権限付与の詳細については、「RAM ポリシーによる製品レベルおよびコンソールアクセスの管理」をご参照ください。

クォータおよび制限事項

  • イメージ数:カスタムイメージの上限は DataWorks のエディションによって異なります。

    • Basic Edition および Standard Edition:10 個

    • Professional Edition:50 個

    • Enterprise Edition:100 個

  • 同時構築数:リージョンあたり最大 2 個のイメージを同時に構築できます。

  • ACR イメージの要件

    • インスタンスエディションEnterprise Edition の Alibaba Cloud ACR インスタンスのみサポートされます。

    • インスタンスアーキテクチャAMD64 アーキテクチャのみサポートされます。

    • イメージサイズ:単一イメージは 5 GB を超えてはなりません。

    • タイムゾーン設定:タイムゾーンの不整合によるコンテナー例外を防ぐため、tzdata パッケージをインストールしてください。

  • イメージ構築:永続化構築をサポートするのは、DataWorks 公式イメージに基づくカスタムイメージのみです。Alibaba Cloud ACR イメージを参照するイメージは対象外であり、各タスク実行時に毎回プルおよびデプロイされます。

  • サポートされるノードタイプおよび構築方法

    ノードタイプ

    公式イメージ構築

    ACR イメージ構築

    PyODPS2

    サポート

    非サポート

    PyODPS3

    サポート

    非サポート

    EMR Spark

    サポート

    非サポート

    EMR Spark SQL

    サポート

    非サポート

    EMR SHELL

    サポート

    非サポート

    Shell

    サポート

    サポート

    Python

    サポート

    サポート

    Notebook

    非サポート

    サポート

    CDH

    サポート

    非サポート

    Assignment Node

    サポート

    非サポート

操作手順

1. カスタムイメージの作成

DataWorks 公式イメージまたはAlibaba Cloud Container Registry イメージを参照してカスタムイメージを作成できます。選択した参照タイプに応じて、構成パラメーターが異なります。

DataWorks 公式イメージに基づく作成

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

  2. DataWorks 公式イメージ タブで、ベースとして使用する 対象イメージ を選択し、カスタムイメージの作成操作 列からクリックします。システムがダイアログボックスに該当イメージの情報を自動入力します。その他のパラメーターを以下のように構成します。

    参照タイプ:デフォルトは DataWorks 公式イメージです。イメージ名前空間:デフォルトは DataWorks デフォルトです。イメージリポジトリ:デフォルトは DataWorks デフォルトです。

    パラメーター

    説明

    イメージ名/ID

    対象の公式イメージがデフォルトで選択されます。必要に応じて切り替えることができます。

    可視範囲

    カスタムイメージの可視範囲を構成します:作成者のみ可視 または すべてのユーザーに可視

    モジュール

    現在、カスタムイメージは DataStudio のみをサポートしています。

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

    イメージタイプに応じて、サポートするタスクタイプを選択します。DataStudio 内で該当するタスクノードを実行する際に、このイメージをランタイムイメージとして構成できます。

    インストールパッケージ

    必要に応じてサードパーティパッケージを追加します。複数のモードを選択し、複数のパッケージを同時にインストールできます。以下の方法がサポートされています:

    • クイックインストール:パッケージのドロップダウンリストから Python2Python3、または Yum を選択すると、環境およびインストール対象リソースを直接選択できます。

      パッケージがリストにない場合は、スクリプトモードに切り替えて手動でインストールしてください。
    • 手動入力:パッケージのドロップダウンリストから スクリプト を選択します。スクリプトエディターでインストールコマンドを手動で入力できます。サードパーティパッケージをダウンロードするための例を以下に示します。

      • pip の例:pip install xx(Python 2 向け)

      • pip3 の例:/home/tops/bin/pip3 install 'urllib3<2.0' (Python 3 向け)

      • yum の例:yum install -y git

      • wget の例:wget git

        その他のインストールコマンドについては、「インストールコマンド」をご参照ください。
    重要

    インターネットからパッケージをインストールするには、サーバーレスリソースグループにバインドされた VPC が インターネットアクセス を有している必要があります。

  3. OK をクリックして作成を完了します。

Alibaba Cloud Container Registry イメージ(ACR イメージ)に基づく作成

ACR イメージからカスタムイメージを作成するには、Container Registry を有効化する必要があります。DataWorks イメージの作成には、Enterprise Edition の ACR インスタンス(AMD64 アーキテクチャ)のみがサポートされます。

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

  2. カスタムイメージ タブで、イメージの作成 をクリックします。ダイアログボックスで主要なパラメーターを以下のように構成します:

    パラメーター

    説明

    参照タイプ

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

    イメージインスタンス ID

    Alibaba Cloud Container Registry で作成した Enterprise Edition インスタンス を選択します。

    イメージ名前空間

    イメージインスタンス配下の 名前空間 を選択します。

    イメージリポジトリ

    イメージインスタンス配下の イメージリポジトリ を選択します。

    イメージバージョン

    選択したリポジトリからイメージバージョン(タグ)を選択し、カスタムイメージを作成します。

    関連付ける VPC

    イメージインスタンスにバインドされた VPC ネットワークを選択します。VPC ネットワークの構成方法については、「VPC ACL の構成」をご参照ください。

    重要

    DataWorks と ACR インスタンス間の VPC 接続は、1 つだけ構成できます。

    MaxCompute への同期

    デフォルトは いいえ です。このオプションは選択した イメージインスタンス に依存します。Standard Edition 以上の ACR インスタンスでのみ選択可能で、それ以外の場合は無効になります。

    • はい を選択した場合:DataWorks カスタムイメージがデフォルトで生成され、DataWorks イメージが公開された際に MaxCompute イメージも同期的に構築されます。

      詳細については、「個人開発環境で MaxCompute カスタムイメージを構築する」をご参照ください。
    • いいえ を選択した場合:DataWorks カスタムイメージのみが生成され、MaxCompute イメージとして同期的に構築されることはありません。

    可視範囲

    カスタムイメージの可視範囲を構成します:作成者のみ可視 または すべてのユーザーに可視

    モジュール

    現在、カスタムイメージは DataStudio のみをサポートしています。

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

    ACR イメージは、起動コマンド + ユーザーのタスクコードファイルパス の方式で起動されます。以下はサポートされるタスクタイプおよびそのデフォルト起動コマンドです:

    • Shell

    • Python:Alibaba Cloud ACR イメージから作成したカスタムイメージを Python タスクで使用するには、ACR イメージインスタンスに Python 環境が含まれていることを確認してください。そうでない場合、Python タスクはサポートされません。

    • Notebook

      • Alibaba Cloud ACR イメージから作成したカスタムイメージを Notebook タスクで使用するには、DataWorks Notebook のベースイメージを ACR イメージのベースとして使用し、ランタイム環境を提供します。DataWorks Notebook のベースイメージ:dataworks-public-registry.cn-shanghai.cr.aliyuncs.com/public/dataworks-notebook:py3.11-ubuntu22.04-20241202

      • イメージ構築に使用する環境が、DataWorks Notebook のベースイメージを取得するためにインターネットアクセス機能を備えていることを確認してください。

  3. OK をクリックして作成を完了します。

個人開発環境インスタンスに基づく作成

新しい DataStudio では、個人開発環境から新しいイメージを作成できます。詳細については、「個人開発環境から DataWorks イメージを作成する」をご参照ください。

2. カスタムイメージのテストおよび公開

DataWorks コンソールの[イメージ管理] > [カスタムイメージ] タブで、ターゲットイメージを [公開] します。テストに成功したイメージのみ公開できます。テストが失敗した場合、[操作] 列の image > [変更] をクリックしてイメージ構成を変更します。

テストおよび公開時の注意点:

  • カスタムイメージのテストには、サーバーレスリソースグループを選択してください。

  • ACR イメージまたは個人開発環境に基づくイメージの場合、サーバーレスリソースグループの VPCイメージコンテナーの VPC が一致していることを確認してください。

  • カスタムイメージがインターネットからサードパーティパッケージを取得し、長時間テストが失敗する場合は、テスト用リソースグループにバインドされた VPC が インターネットアクセス機能 を有しているか確認してください。

3. イメージとワークスペースの関連付け

公開後、イメージをワークスペースにバインドできます。

  1. DataWorks コンソールの イメージ管理 > カスタムイメージ タブで、公開済み のカスタムイメージを検索します。

  2. カスタムイメージをワークスペースにバインドするには、[操作] 列の image > [ワークスペースの変更] をクリックします。

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

新規 DataStudio でのイメージ使用

  1. DataStudio への移動DataWorks ワークスペース一覧 ページに移動し、上部ナビゲーションバーで対象リージョンに切り替え、対象ワークスペースを検索して、操作 列の ショートカット > Data Studio をクリックします。

  2. イメージの構成:DataStudio で、カスタムイメージでテストするタスクノードを検索し、右側の スケジューリング をクリックして、リソースプロパティを構成します。

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

      対象のリソースグループが表示されない場合は、リソースグループが現在のワークスペースにバインドされているか確認してください。 リソースグループ一覧 ページに移動し、対象のリソースグループを検索して、操作 列の ワークスペースの関連付け をクリックして、バインドを完了できます。
      重要

      リソースグループは、イメージ公開時に使用したテスト用リソースグループと一致している必要があります。

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

      イメージを切り替えた場合、変更を本番環境で有効にするには、ノードを公開する必要があります。

      image

  3. ノードのデバッグ:右側の Run Configuration パネルで、コンピュートリソースリソースグループコンピュート CU 数イメージスクリプトパラメーター を構成し、ツールバーの上部にある 実行 をクリックします。

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

旧式 DataStudio でのイメージ使用

  1. DataStudio への移動DataWorks コンソール にログインします。対象リージョンに切り替えた後、左側ナビゲーションウィンドウで データ開発および O&M > データ開発 をクリックします。ドロップダウンリストから対応するワークスペースを選択し、データ開発へ移動 をクリックします。

  2. イメージの構成:DataStudio で、カスタムイメージでテストするタスクノードを検索し、右側の プロパティ をクリックして、リソースプロパティを構成します。

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

      対象のリソースグループが表示されない場合は、リソースグループが現在のワークスペースにバインドされているか確認してください。 リソースグループ一覧 ページに移動し、対象のリソースグループを検索して、操作 列の ワークスペースの関連付け をクリックして、バインドを完了できます。
      重要

      リソースグループは、イメージ公開時に使用したテスト用リソースグループと一致している必要があります。

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

      イメージを切り替えた場合、変更を本番環境で有効にするには、ノードを公開する必要があります。

      image

  3. ノードのデバッグ:ツールバーの上部にある パラメーター付きで実行 (image) をクリックし、リソースグループ実行 CU 数イメージ を構成し、実行 をクリックします。

  4. ノードのデプロイ:ツールバーの上部にある 保存 および 送信 をクリックして、ノードを本番環境に公開します。

5. 永続化イメージの構築

重要

検証後に永続化イメージを構築することを推奨します。これにより、予期しないバージョン変更や依存関係の改ざんによるタスク失敗を防止できます。

標準のカスタムイメージは、実行ごとに再デプロイされるため、実行時間およびコストが増加します。一方、永続化イメージは一度構築すれば再利用できるため、効率性および一貫性が向上し、コストが削減されます。永続化イメージの構築は、公式イメージに基づいて作成されたカスタムイメージのみがサポートされます。

  1. DataWorks コンソールの イメージ管理 > カスタムイメージ タブで、公開済みのカスタムイメージを検索します。

  2. [操作] 列の image > [作成] をクリックして、カスタムイメージを永続イメージとして作成します。

  3. イメージ構築対象のリソースグループ ダイアログボックスで、イメージ構築に使用するリソースグループを構成し、続行 をクリックします。

    重要

    ネットワーク障害による構築失敗を回避するため、リソースグループが カスタムイメージの公開 時に選択したテスト用リソースグループと一致していることを確認してください。

  4. イメージ構築には、イメージサイズに応じて約 5~10 分かかります。構築が成功すると、対象イメージのステータスが 公開済み(作成済み) に変更されます。

課金

イメージ構築には、CU 数 × 構築時間 に基づくコンピューティング料金が発生します。システムはデフォルトで 0.5 CU を割り当てます。課金の詳細については、「サーバーレスリソースグループの課金基準」をご参照ください。

本番運用時の注意点

本番環境で安定的かつ効率的なカスタムイメージを運用するための推奨事項を以下に示します:

  • 永続化イメージ:公開済みで安定したイメージについては、永続化イメージの構築を推奨します。これにより、タスク実行ごとに依存関係を再インストールする必要がなくなり、起動時間が短縮され、コンピューティングコストが削減され、安定性が向上します。

  • 環境の一貫性:テスト、構築、本番スケジューリングで使用するサーバーレスリソースグループの VPC バインドおよびネットワーク構成を一貫して保つようにしてください。特に、プライベート ACR リポジトリやインターネットへのアクセスを行う場合に重要です。

  • バージョン固定スクリプト を使用して依存関係をインストールする場合、上流ライブラリの更新による予期しない動作変更を避けるため、バージョン番号を明示的に指定すること(例:pip install pandas==1.5.3)を強く推奨します。

  • ロールバック計画:イメージ更新後に本番タスクが失敗した場合、タスク公開履歴から以前のバージョンへロールバックするか、スケジューリング構成でイメージを以前の安定バージョンに再設定できます。

ユースケース

この例では、PyODPS ノードで単語分割処理を行うためにカスタムイメージを使用する方法を示します。MaxCompute テーブル内のデータを処理し、結果を後続ノードで使用できるように格納します。カスタムイメージに jieba の形態素解析ツールパッケージを事前にインストールし、このイメージを PyODPS タスクで使用してデータを処理し、新しいテーブルに結果を格納することで、後続のスケジューリングフローにシームレスに統合できます。

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

    1. DataWorks ワークスペースを作成し、MaxCompute のコンピューティングリソースをバインドします。詳細については、「ワークスペースの作成」および「コンピューティングリソースの管理」をご参照ください。

    2. DataStudio で、ODPS ノード(旧式 DataStudio)または MaxCompute SQL ノード(新規 DataStudio)を作成し、テストテーブルを作成してテストデータを追加します。

      説明

      以下の例ではスケジューリングパラメーターを使用します。スケジューリング パネル(右側)で、パラメーター名を 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, '空が暗くなり、雪が降りそうですね。お酒はいかがですか?'),
         (2, '月が沈み、烏が鳴き、霜が空いっぱいに満ちています。川のマップルと漁火を見ながら、目を覚まして横たわっています。'),
         (3, '山と川が道を塞いでいるように見えますが、柳の木陰と明るい花の間には、もう一つの村が現れます。'),
         (4, '春の眠りから目覚めるとき、朝が来たことに気づきません。どこでも鳥のさえずりが聞こえます。'),
         (5, '静かな夜の思い。月明かりが私のベッドの前に輝いています。私はそれを床の霜と間違えました。'),
         (6, '明るい月が海の上に昇ります。私たちはこの瞬間を共有していますが、遠く離れていても。'),
         (7, 'かつて貴族の館を彩った燕は、今や一般市民の家に飛び込んでいます。'),
         (8, '一列の白鷺が青い空へと舞い上がります。私の窓枠には西の山々の古い雪が映っています。'),
         (9, '人生が良いときは、精一杯楽しみましょう。金色の盃が月に向かって空になるのを許してはいけません。'),
         (10, '天は私に才能を与えたのですから、それは必ず使われるべきです。千枚の金貨は、一度使ってしまっても、また稼げるのです。');
    3. 保存してデプロイします。

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

    1. カスタムイメージの作成」を参照してください。主なパラメーターは以下のとおりです:

    • Iメージ名/IDdataworks_pyodps_task_pod(DataWorks PyODPS ノードの公式イメージ)を選択します。

    • サポートされるタスクタイプPyODPS2 および PyODPS 3 をサポートします。

    • パッケージPython3 および jieba を選択します。

  3. カスタムイメージを公開し、所有者ワークスペースを変更します。詳細については、「カスタムイメージの公開」および「所有者ワークスペースの変更」をご参照ください。

  4. スケジューリングタスクでカスタムイメージを使用します。

    1. DataStudio で 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)
    2. 右側のスケジューリング構成で、以下の主要パラメーターを設定します:

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

      • リソースグループ:サーバーレスリソースグループを選択します。これは、イメージの公開 時に選択したテスト用リソースグループと同じである必要があります。

      • イメージ:現在のワークスペースにバインドされた公開済みのカスタムイメージを選択します。

    3. ノードのデバッグ。

      • 旧式 DataStudio を使用する場合:ツールバーの上部にある パラメーター付きで実行 (image) をクリックし、リソースグループ名実行 CU 数イメージカスタムパラメーター を構成し、実行 をクリックします。

      • 新規 DataStudio を使用する場合:右側の Run Configuration パネルで、コンピュートリソースリソースグループコンピュート CU 数イメージスクリプトパラメーター を構成し、ツールバーの上部にある 実行 をクリックします。

    4. (任意)一時クエリ(旧式 DataStudio)を作成するか、個人ディレクトリに SQL ファイル(新規 DataStudio)を作成し、以下の SQL を使用して出力テーブルにデータが生成されたかを確認します。

      -- <パーティション日付> を具体的な日付に置き換えてください。
      SELECT * FROM participle_tb WHERE ds=<パーティション日付>;
    5. PyODPS ノードを本番環境にデプロイします。

      説明

      DataStudio でのイメージ変更は本番環境に同期されません。変更を本番環境で有効にするには、タスクを公開する必要があります。詳細については、「タスクの公開(旧式 DataStudio)」または「ノード/ワークフローの公開(新規 DataStudio)」をご参照ください。

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

よくある質問

Q:Python タスクで「urllib3 v2.0 は OpenSSL 1.1.1+ のみをサポートします」というエラーが発生しました。

A:urllib3 v2.0 は OpenSSL 1.1.1+ のみをサポートします。OpenSSL との互換性を確保するために、urllib3 をスペックダウンできます。たとえば、サードパーティパッケージのインストール時に urllib3 のバージョンを強制指定します:/home/tops/bin/pip3 install urllib3==1.26.16

参照

インストールコマンド

カスタムイメージのインストールコマンドを構成する際に スクリプト メソッドを使用する場合、以下のコマンドを参照してください:

  • PyODPS 2 ノードに依存する場合、以下のコマンドを実行します。

    pip install <package_name> -i https://pypi.tuna.tsinghua.edu.cn/simple
    pip install <package_name>
    説明

    コマンドを実行した後、PIP のバージョンをアップグレードするよう求められた場合は、pip install --upgrade pip を実行してください。

  • PyODPS 3 ノードに依存する場合、以下のコマンドを実行します。

    /home/tops/bin/pip3 install <package_name> -i https://pypi.tuna.tsinghua.edu.cn/simple
    /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 公開ミラーソースを参照し、必要に応じて切り替えてください。

    組織

    ミラーアドレス

    Alibaba Cloud(Aliyun)

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

    重要

    Alibaba Cloud から Python パッケージを取得するには、インターネットアクセス機能は不要です。

    清華大学(Tsinghua)

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

    中国科学技術大学(USTC)

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