web-dev-qa-db-ja.com

AWS S3 CLI CPファイルとメタデータの追加

Test.txtという名前のローカルファイルをs3バケットにコピーし、メタデータをファイルに追加しようとしています。

しかし、それは常にエラーを出力します:

argument --metadata-directive:無効な選択肢です。有効な選択肢は次のとおりです。 REPLACE

私はそれが可能であるべきドキュメントを理解しているので、cpコマンドでこれを行うことは可能ですか? AWS CLI CP DOCS

これは私が試したコマンドです:

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 --version:aws-cli/1.9.7 Python/2.7.10 Darwin/16.1.0 botocore/1.3.7

OS:macOS Sierraバージョン10.12.1

編集

言及する価値があるのは、-metadataフラグを指定せずにファイルをアップロードしても問題なく機能することです。

さて、上のバージョンのcliのヘルプをaws s3 cp helpで確認しました。上記のリンクにあるドキュメントのように、オプションとして--metadataがリストされていないことがわかりました。

古いバージョンのaws cliを実行する場合

Use aws s3api put-object

ファイルをバケットにアップロードしてメタデータを追加する方法:

aws s3api put-object --bucket a-bucket --key test.txt --body test.txt --metadata '{"x-amz-meta-cms-id":"34533452"}'

ドキュメント: AWS S3API DOCS

15

実際、メタデータオプションのサポートは 1.9.1 以降追加されています。

aws s3 cp、mv、syncのカスタムメタデータのサポートが追加されました。

したがって、aws cliをこのバージョン(またはさらに優れた最新バージョン)にアップグレードします。_metadata値はマップにする必要があります。

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

インストールs3cmd tools(free)そして次のように呼び出します:

s3cmd modify --add-header x-amz-meta-foo:bar s3://<bucket>/<object>

x-amz-meta-foo:barヘッダーfoo as keyおよびbar as valueそのキーを取得します。

1
Srini Sydney