首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AWS S3 CLI文件并添加元数据

AWS S3 CLI文件并添加元数据
EN

Stack Overflow用户
提问于 2016-11-16 08:12:13
回答 4查看 31.7K关注 0票数 29

尝试将名为test.txt的本地文件复制到我的s3桶中,并向文件中添加元数据。

但它总是打印错误:

参数--元数据-指令:无效选择,有效选择是:复制/替换

是否可以使用cp命令来完成这个操作,正如我所理解的,文档应该是可能的。AWS CLI CP DOCS

以下是我尝试过的命令:

代码语言:javascript
运行
复制
aws s3 cp test.txt to s3://a-bucket/test.txt --metadata x-amz-meta-cms-id:34533452

aws s3 cp test.txt to s3://a-bucket/test.txt --metadata-directive COPY --metadata x-amz-meta-cms-id:34533452

aws s3 cp test.txt to s3://a-bucket/test.txt --metadata-directive COPY --metadata '{"x-amz-meta-cms-id":"34533452"}'

aws s3 cp test.txt to s3://a-bucket/test.txt --metadata '{"x-amz-meta-cms-id":"34533452"}'

aws -版本:aws/1.9.7 Python/2.7.10达尔文/16.1.0 botocore/1.3.7

操作系统:macOS塞拉利昂版10.12.1

编辑

值得一提的是,上传一个没有-元数据标志的文件很好。

嗯,我已经用aws s3 cp help检查了我的cli版本的帮助,结果发现它没有将--metadata作为选项列出,就像上面给定链接上的文档所做的那样。

如果运行旧版本的aws cli

代码语言:javascript
运行
复制
Use aws s3api put-object

如何将文件上载到桶中并添加元数据:

代码语言:javascript
运行
复制
aws s3api put-object --bucket a-bucket --key test.txt --body test.txt --metadata '{"x-amz-meta-cms-id":"34533452"}'

博士:AWS S3API DOCS

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-11-16 08:41:30

实际上,自1.9.10以来,已经添加了对元数据选项的支持。

aws s3在cp、mv和sync中添加了对自定义元数据的支持。

因此,将aws升级到此版本(或者更好地升级到最新版本)-- metadata值需要是一个映射,因此

代码语言:javascript
运行
复制
aws s3 cp test.txt s3://a-bucket/test.txt --metadata '{"x-amz-meta-cms-id":"34533452"}'
票数 46
EN

Stack Overflow用户

发布于 2017-05-24 11:20:01

安装s3cmd工具(免费)并调用如下所示:

代码语言:javascript
运行
复制
s3cmd modify --add-header x-amz-meta-foo:bar s3://<bucket>/<object>

使用x-amz-meta-foo:bar标头,您将获得foo作为键,bar作为该键的值。

票数 6
EN

Stack Overflow用户

发布于 2017-02-17 14:26:06

存在带有元数据指令“复制”选项的错误。

aws s3api copy-object --bucket testkartik --copy-source testkartik/costs.csv --key costs.csv --metadata-directive "COPY" --metadata "SomeKey=SomeValue"

下面是使用JQ解决方案理解cli命令的三个步骤。

  1. 安装JQ库来使用命令行处理json元数据。
  2. 读取现有元数据。 aws s3api head-object --bucket <bucket> --key <key> | jq '.Metadata' | jq --compact-output '. +{"new":"metadata", "another" : "metadata"}'
  3. 添加新的元数据。 aws s3api copy-object --bucket <bucket-name> --copy-source <bucket/key> --key <key> --metadata-directive "REPLACE" --metadata $(READ-THE-EXISTING-From-Step-2) 一举完成指挥。 aws s3api copy-object --bucket <bucket-name> --copy-source <bucket/key> --key <key> --metadata-directive "REPLACE" --metadata $(aws s3api head-object --bucket <bucket> --key <key> | jq '.Metadata' | jq --compact-output '. +{"new":"metadata", "another" : "metadata"}')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40626967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档