我想创建一个生成文件,其中目标和依赖项不是本地文件,而是存在于某个 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 任务的看似未完成的想法。
这是在 Python 中运行多个复杂/错综复杂的 MapReduce 作业的上下文中。
我宁愿使用 GNU make,但肯定会考虑替代方案。
我总是可以为远程目标创建一些轻量级的本地镜像,但肯定有更好的方法吗?
提前致谢!
网卡