【Tips】AWS Data PipelineのShellCommandActivityでの引数の渡し方
おはようございます、今日も一日頑張りましょう!城内です。 今回は、Data Pipelineの小ネタです。
はじめに
皆さんはData Pipelineを使いこなしていますか? もしまだあまり使っていないよーということでしたら、まずはこちらの記事からご覧ください。
そこで、もしジョブスケジューラーみたいな使い方を想像された方は、ぜひこちらの記事もご覧ください。
ちょっとハマったこと
ここからが本題ですが、私も上記の記事のようにData Pipelineをジョブスケジューラー代わりに動かしてみようと思い、パイプラインを作成してみたのですが、ShellCommandActivityタイプのアクティビティで、実行時に指定する引数の設定にハマってしまったので、書き残しておきたいと思います。
コマンド実行時の引数の設定方法
まずは、「Command」パラメータに実行したいコマンドを指定し、それに対して引数を渡す設定の仕方です。 こちらは、ドキュメントを参考にすれば、以下のように設定ができます。
ここでのポイントは、「Command」パラメータに$1や$2を指定しないと、いくら「Script Argument」パラメータに引数を設定しても意味がない点です。
ちなみに、余談ですが、引数をダブルクォーテーションで囲っていないのは意図的です。仕様を確認した訳ではないため経験談にはなりますが、ダブルクォーテーションで囲ってしまうと、指定した引数が文字列として処理されるのか、思い通りにコマンド実行できなかったため、あえて外しています。 (自分で調べろよと言われてしまうかもしれせんが)もし挙動を理解している方がいましたら、ぜひコメントください!
スクリプト実行時の引数の設定方法
次に、「Script Uri」パラメータにS3に格納したスクリプトのURIを指定し、それに対して引数を渡す設定の仕方です。
私は見事にこちらでハマりました。。先ほどと同様にドキュメントは参照していたのですが、まさかこんな設定ができるとは思っていなかったため、勝手な思い込みでハマってしまいました。 設定方法は以下の通りです。
驚きの「Script Argument」パラメータは複数指定可能という仕様・・・。 いや、ドキュメントにも複数指定する形が記載されているので、単なる私の思い込みが悪さをしただけなんですが(笑)。
まあ、とにかく、ポイントは「Script Argument」パラメータを複数指定すればよいという点です。
さいごに
個人的な言い訳としては、GUIの挙動が、他のパラメータは1つ選択すると次のパラメータ追加の選択肢から外れるのです。その挙動から、パラメータは1つずつしか設定できないものだと勝手に思い込んでしまいました・・・。 まあ、最初からドキュメントを参考に、JSONで設定していたらハマらなかったかもしれません(苦笑)。
皆さんも思い込みには注意しましょう!