DMS タスクフローで、Python データ処理ジョブ、Hadoop プログラム、メールレポート生成プログラムなどのカスタムスクリプトを Elastic Compute Service (ECS) インスタンス上で直接実行する必要がある場合は、ECS リモートコマンドノードを追加します。このノードは、クラウドアシスタントを使用して、SSH アクセスを必要とせずにシェル、PowerShell、またはバッチスクリプトを実行し、JSON 出力をダウンストリームノードに変数として渡すことができます。
利用シーン
Python 用の NumPy および scikit-learn ライブラリ、Apache Spark の MLlib ライブラリなどの高度なツールを使用してデータを処理します。データ処理後に生成されたモデルは、検索システムの高度ソート機能やレコメンデーション機能に適用できます。
データを消費します。たとえば、データを読み取るときに Excel スクリプトを生成したり、読み取ったデータを含むメールを自動的に送信するために使用されるスクリプトを生成したりできます。
自社構築の Hadoop MapReduce または Apache Spark プログラムを呼び出します。
前提条件
開始する前に、以下を確認してください。
ECS インスタンス。詳細については、「カスタム起動タブでのインスタンス作成」をご参照ください。
ECS インスタンスに、キーが
dms、値がscript-for-dmsのタグが付いていること。詳細については、「インスタンスのタグ変更」をご参照ください。ECS インスタンスにクラウドアシスタントエージェントがインストール済みであること。詳細については、「クラウドアシスタントエージェントのインストール」をご参照ください。
説明2017 年 12 月 1 日以降にパブリックイメージから作成された ECS インスタンスには、クラウドアシスタントエージェントがプリインストールされています。
ご利用の RAM ユーザーに
ecs:InvokeCommand権限が付与されていること。この権限を付与するには、次の手順を実行します。以下の JSON を使用してカスタム RAM ポリシーを作成します。詳細については、「カスタムポリシーの作成」をご参照ください。ポリシーステートメントは次のとおりです。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:InvokeCommand" ], "Resource": [ "*" ], "Condition": {} } ] }ポリシーを RAM ユーザーにアタッチします。詳細については、「RAM ユーザーへの権限付与」をご参照ください。
ノードの追加と構成
DMS 5.0 にログインします。DMS 5.0。
上部ナビゲーションバーで、DTS > データ開発 > タスクオーケストレーション を選択します。
説明コンソールがシンプルモードの場合は、左上隅のメニュー アイコンをクリックし、[すべての機能] を選択してから、ナビゲーションウィンドウで [DTS] > [Data Development] > [Task Orchestration] を選択します。
編集するタスクフローの名前をクリックします。
説明タスクフローを最初に作成するには、「概要」をご参照ください。
キャンバスの左側にある[タスクタイプ]リストで、[ECS リモートコマンド]ノードタイプをキャンバスの空白エリアにドラッグします。
キャンバス上の [ECS リモートコマンド] ノードをダブルクリックして、その構成ページを開きます。
次のパラメーターを設定します。
説明[ECS インスタンス ID] ドロップダウンには、タグキーが
dmsで、値がscript-for-dmsのインスタンスのみが表示されます。インスタンスが一覧に表示されない場合は、インスタンス上でタグキーと値が正しく設定されているかを確認してください。カテゴリ
パラメーター
必須
説明
基本構成
リージョン
はい
ご利用の ECS インスタンスが存在するリージョン。
ECS インスタンス ID
はい
コマンドを実行する ECS インスタンス。ドロップダウンから選択します。複数のインスタンスを選択できますが、それらはすべて同じオペレーティングシステムを実行している必要があります。
コマンドの種類
はい
スクリプトの種類:シェル (Linux)(Linux インスタンス用)、Bat (Windows) または PowerShell (Windows)(Windows インスタンス用)。
タイムアウト
はい
コマンドがタイムアウトするまでの待機時間 (秒単位)。
作業ディレクトリ
はい
コマンドが実行される ECS インスタンス上のディレクトリ。空白のままにした場合、Linux の場合は
/root、Windows の場合はC:\Windows\System32がデフォルトです。詳細設定
ユーザー
はい
コマンドが実行される OS ユーザーアカウント。root 以外のユーザーまたはシステム以外のユーザーを指定する場合は、まずそのユーザーに必要な権限を付与してください。詳細については、「一般ユーザーとしてクラウドアシスタントコマンドを実行」をご参照ください。
Windows 用パスワード名
はい
Windows インスタンス上のユーザーアカウントのパスワード。詳細については、「一般ユーザーとしてクラウドアシスタントコマンドを実行」をご参照ください。
コマンド設定
コマンド設定
はい
ECS インスタンスで実行するコマンド。例:
python /home/admin/hello.py。オプション: ダウンストリームノードがこのノードからの結果を参照できるように、出力変数を構成します。
右側のナビゲーションウィンドウで [変数設定] タブをクリックします。
[出力変数] タブをクリックします。
[変数の増加] をクリックします。
「[変数名]」フィールドに、変数の名前を入力します。命名規則については、「変数」をご参照ください。
説明選択した各 ECS インスタンスについて、コマンド出力の最後の行が有効な JSON である場合、そのキーは出力変数として利用可能になります。たとえば、インスタンス A が
{"a":"hello"}を出力し、インスタンス B が{"b":"world"}を出力する場合、aとbの両方がダウンストリームノードで出力変数として利用可能です。トップツールバーの[試行実行]をクリックして、ノードをテストします。
ログの最後の行に
SUCCEEDEDと表示されている場合、ノードは正常に実行されました。最後の行に
FAILEDと表示された場合は、[ログ] をクリックして、トップツールバーから完全な出力を表示します。エラーを特定し、構成を更新して、ノードを再度実行します。