【Tips】AWS Data PipelineのShellCommandActivityでの引数の渡し方

2015.06.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

おはようございます、今日も一日頑張りましょう!城内です。 今回は、Data Pipelineの小ネタです。

はじめに

皆さんはData Pipelineを使いこなしていますか? もしまだあまり使っていないよーということでしたら、まずはこちらの記事からご覧ください。

そこで、もしジョブスケジューラーみたいな使い方を想像された方は、ぜひこちらの記事もご覧ください。

ちょっとハマったこと

ここからが本題ですが、私も上記の記事のようにData Pipelineをジョブスケジューラー代わりに動かしてみようと思い、パイプラインを作成してみたのですが、ShellCommandActivityタイプのアクティビティで、実行時に指定する引数の設定にハマってしまったので、書き残しておきたいと思います。

コマンド実行時の引数の設定方法

まずは、「Command」パラメータに実行したいコマンドを指定し、それに対して引数を渡す設定の仕方です。 こちらは、ドキュメントを参考にすれば、以下のように設定ができます。

datapipeline_01

ここでのポイントは、「Command」パラメータに$1$2を指定しないと、いくら「Script Argument」パラメータに引数を設定しても意味がない点です。

ちなみに、余談ですが、引数をダブルクォーテーションで囲っていないのは意図的です。仕様を確認した訳ではないため経験談にはなりますが、ダブルクォーテーションで囲ってしまうと、指定した引数が文字列として処理されるのか、思い通りにコマンド実行できなかったため、あえて外しています。 (自分で調べろよと言われてしまうかもしれせんが)もし挙動を理解している方がいましたら、ぜひコメントください!

スクリプト実行時の引数の設定方法

次に、「Script Uri」パラメータにS3に格納したスクリプトのURIを指定し、それに対して引数を渡す設定の仕方です。

私は見事にこちらでハマりました。。先ほどと同様にドキュメントは参照していたのですが、まさかこんな設定ができるとは思っていなかったため、勝手な思い込みでハマってしまいました。 設定方法は以下の通りです。

datapipeline_02

驚きの「Script Argument」パラメータは複数指定可能という仕様・・・。 いや、ドキュメントにも複数指定する形が記載されているので、単なる私の思い込みが悪さをしただけなんですが(笑)。

まあ、とにかく、ポイントは「Script Argument」パラメータを複数指定すればよいという点です。

さいごに

個人的な言い訳としては、GUIの挙動が、他のパラメータは1つ選択すると次のパラメータ追加の選択肢から外れるのです。その挙動から、パラメータは1つずつしか設定できないものだと勝手に思い込んでしまいました・・・。 まあ、最初からドキュメントを参考に、JSONで設定していたらハマらなかったかもしれません(苦笑)。

皆さんも思い込みには注意しましょう!

参考情報