ターゲットと依存関係がローカルファイルではなく、AWS/S3バケットに存在するmakefileを作成したいと思います。遠く離れた(AWS S3)ターゲットのメイクファイル
'data_raw'ファイルを 'obj1'にコピーしてから 'obj2'(あなたが所有するバケットに 'bucket'を編集し、これを実行する前に 'data_raw'ファイルを作成する必要がある):私はこれを取得
# local, works fine
bucket = /tmp/test/
cp = cp
# remote, does not work
bucket = s3://bucket/test/
cp = s3cmd cp
all : $(bucket)obj2
$(bucket)obj2 : $(bucket)obj1
$(cp) $(bucket)obj1 $(bucket)obj2
$(bucket)obj1 :
$(cp) $(bucket)raw_data $(bucket)obj1
エラーは次のとおりです。です
makefile:9: *** target pattern contains no `%'. Stop.
:
all : $(bucket)obj2
私はmakeがリモートURI( "s3:// xxx")をまったく理解していないと思う。
私が見つけることができるすべてのサンプル/ドキュメントは、ターゲットと依存関係のためにローカルファイルを暗黙的に参照しているようです。大規模なグーグルでは、s3(http://code.google.com/p/awstasks/)のantタスクを作成するための未完成の見た目がいくつか出てきました。
これは、複雑な複雑なMapReduceジョブをPythonで実行するコンテキストです。
私はむしろGNU makeを使用しますが、確かに代替案を検討します。
私はいつもリモートターゲットの軽いローカルミラーを作成できましたが、確かに良い方法がありますか?
ありがとうございます!
Nic
make *ファイル*をここで作成するのに最適です。しかし、このメイクファイルはあまりにも悪くはありません。あなたは複雑さを減らそうとしていますか?バケット内からMakeを実行できますか? – Beta
ここでの難しさは、リモートURIをターゲットまたは依存として受け入れないようにすることにあります。私は何か愚かなことを逃していますか(エスケープ?)?どのような種類のURIを扱えるようにすべきですか?私はそれが主に存在をテストし、S3をサポートする必要がある日付を得ることができる必要があると思いますか? –
AWS/S3はわかりませんが、プロキシとしていくつかのローカルファイルを使用できます。実際のファイルが変更されたことを示すために 'touch 'するだけで、' synch'ターゲットはそれらを最新のものにすることができます彼らのプライマリー? – Beta