オブジェクトをAmazon S3バケットにアップロード済みの場合は、APIを使用してメタデータをどのように変更しますか?これをAWS Management Consoleで行うことは可能ですが、プログラムでどのように実行できるかは不明です。具体的には、私はPythonでboto APIを使用しています。ソースを読むと、key.set_metadataを使用するとの前にはの前にオブジェクトが作成されます。Amazon S3でオブジェクトのメタデータを変更する方法
答えて
メタデータに加えてx-amz-metadata-directive: REPLACE
ヘッダーを持つ「PUTオブジェクト(コピー)」を使用してオブジェクトを上書きする必要があるようです。 botoでは、これは次のようにすることができます:
k = k.copy(k.bucket.name, k.name, {'myKey':'myValue'}, preserve_acl=True)
古い辞書に含まれていないメタデータはすべて削除されます。
k.metadata.update({'myKey':'myValue'})
k2 = k.copy(k.bucket.name, k.name, k.metadata, preserve_acl=True)
k2.metadata = k.metadata # boto gives back an object without *any* metadata
k = k2;
は、私はほとんどこの質問とは異なる問題について、実際のですが誤っ-というタイトルの質問にイントロにほのめかしているこのソリューションを、逃した:だから昔の属性を保持するためにあなたのような何かをする必要があります: Change Content-Disposition of existing S3 object
コピーコマンドを使用してオブジェクトを再ロードせずにメタデータを変更できます。 Is it possible to change headers on an S3 object without downloading the entire object?
S3ファイルにメタデータを設定するには、ソース情報だけでメタデータを設定すれば十分ですので、ターゲットの場所を指定しないでください。
それは例えば、メタデータに、オリジナルのコンテンツタイプを含めることをお勧めします最初の答えのためにfinal ObjectMetadata metadata = new ObjectMetadata();
metadata.addUserMetadata(metadataKey, value);
final CopyObjectRequest request = new CopyObjectRequest(bucketName, keyName, bucketName, keyName)
.withSourceBucketName(bucketName)
.withSourceKey(keyName)
.withNewObjectMetadata(metadata);
s3.copyObject(request);`
質問はPythonを求めましたが、これは私が見つけたJava SDKを使用した唯一の答えでした。ありがとう! –
これは5GBを超えるファイルでは機能しません。 –
重大なファイルの問題のメタデータが修正されているかどうかにかかわらず、タグは任意のサイズのファイルに置くことができますが、わかりません。 – kartik
:
key.set_metadata('Content-Type', key.content_type)
私はそれを使用して以来、しばらくしてきましたが、コピーの元の 'k.metadata'フィールドを通過するものの中にあることは間違いありません。 – natevw
あなたのメタデータが保存されたい場合は、遠隔set_remote_metadata
例を使用します。 key.set_remote_metadata({'to_be': 'added'}, ['key', 'to', 'delete'], {True/False})
実装方法は次のとおりです。 https://github.com/boto/boto/blob/66b360449812d857b4ec6a9834a752825e1e7603/boto/s3/key.py#L1875
これは正解であり、@ natevwの答えが何を説明するのが最も簡単な方法です。それはボンネットの下で同じことをします。 'metadata_minus'と' preserve_acl'が必要であることに注意してください。 – nathancahill
key.set_metadata()も機能します(ただし、既存のメタデータを置き換えます)。 set_remote_metadata()は、既存のメタデータの追加と削除をサポートします。これは正解でなければならず、現在のトップアンサーと比較してください。 – berniey
Javaでは、オブジェクトを同じ場所にコピーできます。 ここでは、オブジェクトのコピー中にメタデータはコピーされません。 オリジナルのメタデータを取得し、コピー要求に設定する必要があります。 この方法は、よりここ
ObjectMetadata metadata = amazonS3Client.getObjectMetadata(bucketName, fileKey);
ObjectMetadata metadataCopy = new ObjectMetadata();
metadataCopy.addUserMetadata("yourKey", "updateValue");
metadataCopy.addUserMetadata("otherKey", "newValue");
metadataCopy.addUserMetadata("existingKey", metadata.getUserMetaDataOf("existingValue"));
CopyObjectRequest request = new CopyObjectRequest(bucketName, fileKey, bucketName, fileKey)
.withSourceBucketName(bucketName)
.withSourceKey(fileKey)
.withNewObjectMetadata(metadataCopy);
amazonS3Client.copyObject(request);
のAmazon S3オブジェクトのメタデータを挿入または更新することをお勧めします私のために働いていたコードがあります。私はaws-java-sdk-s3バージョン1.10.15を使用しています。
- 1. Amazon S3オブジェクトのコンテンツタイプを変更する方法
- 2. Amazon Rekognition API - S3メタデータの問題
- 3. Amazon SimpleDBのS3オブジェクトへのポインタを格納する方法は?
- 4. Boto3 S3既存のオブジェクトのメタデータを更新する
- 5. Amazon S3ファイルの何千ものファイルのメタデータを一括更新するには?
- 6. は、再帰的にAWS S3でオブジェクトのメタデータを更新
- 7. Amazon S3オブジェクトにコンテンツタイプを適用する方法
- 8. Amazon S3オブジェクトに一意の名前を付ける方法は?
- 9. 変更後のAmazon S3ファイルコンテンツの配布
- 10. Amazon S3でファイルを更新
- 11. オンザフライイメージamazon s3へのサイズ変更とアップロード
- 12. 既存のAmazon S3オブジェクトを更新できますか?
- 13. amazon s3 for securityダウンロード方法
- 14. S3オブジェクトのメタデータ(NodeJS API)を取得するための最速の方法
- 15. S3は古いバージョンのオブジェクトのメタデータを取得します
- 16. Amazon S3にscpする方法は?
- 17. S3 putObject()をユーザのメタデータでモックする方法は?
- 18. amazon ec2にamazon s3をマウントする方法
- 19. AWS S3のAPIは - オブジェクトは、メタデータ
- 20. Javaのビルドでgradleメタデータの場所を変更する方法
- 21. Amazon AWS boto S3ファイルの内容を変更する
- 22. 既存のAmazon S3ファイルのメタデータを更新するにはどうすればよいですか?
- 23. Amazon S3でファイルをダウンロード/アクセスする最速の方法
- 24. Amazon S3バケットでimages.develop.example.comのようなサブドメインをテストする方法
- 25. cakephpのamazonサーバー(s3)でビデオをアップロードする方法
- 26. AWS CLIを使用してAmazon S3でファイルのアップロード日付を変更する方法
- 27. PIL画像オブジェクトをAmazon S3 pythonにアップロード
- 28. Amazon EC2メタデータ
- 29. Python:Microsoft Officeファイルのメタデータを変更する方法
- 30. Amazon S3ファイルで文字列を検索する方法は?
古いメタデータと新しいメタデータの結合が行われている2番目のコード例では表示されません。コードを実行すると、オブジェクトのメタデータが最新のメタデータで上書きされます。 –
動作するようですが、新しいキーがContent-Typeを失います.S3を使用してWeb画像を配信するときは本当に悪いです。 –
AWS SDKを使用している場合は、[AmazonS3Client.copyObjectメソッド](http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/AmazonS3.html#)を使用する必要があります。 copyObject(com.amazonaws.services.s3.model.CopyObjectRequest)) – glidester