オブジェクトを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 SimpleDBのS3オブジェクトへのポインタを格納する方法は?
- 2. Amazon S3ファイルの何千ものファイルのメタデータを一括更新するには?
- 3. Amazon S3でファイルを更新
- 4. Amazon S3オブジェクトに一意の名前を付ける方法は?
- 5. オンザフライイメージamazon s3へのサイズ変更とアップロード
- 6. 既存のAmazon S3オブジェクトを更新できますか?
- 7. amazon s3 for securityダウンロード方法
- 8. Amazon S3にscpする方法は?
- 9. amazon ec2にamazon s3をマウントする方法
- 10. 既存のAmazon S3ファイルのメタデータを更新するにはどうすればよいですか?
- 11. cakephpのamazonサーバー(s3)でビデオをアップロードする方法
- 12. Amazon S3で「削除」権限を削除する方法
- 13. Amazon S3でいくつかのファイルの所有者を変更するには?
- 14. Amazon EC2メタデータ
- 15. メタデータの変更
- 16. Javaイメージのサイズ変更(3サイズ)をAmazon S3にアップロード
- 17. Amazon S3のリストオブジェクトの前のページを取得する方法
- 18. Amazon S3とAmazon RDSを併用する
- 19. Amazon S3バケットポリシー:EC2インスタンスのみへのアクセスをロックする方法
- 20. Amazon S3をバックアップ
- 21. Amazon S3バケットのSSLを設定する方法
- 22. Amazon EMR/S3の出力を確認する方法は?
- 23. Amazon S3のカスタムヘッダー
- 24. は、Amazon S3の
- 25. S3 Amazonのダウンローダー
- 26. S3 Amazon Sdkでアップロード
- 27. Amazon S3でtouch()ファイルを開く方法はありますか?
- 28. Amazon S3にPrawn PDFファイルを保存する方法
- 29. URLからAmazon S3にファイルを転送する方法
- 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