boto3ドキュメントでは、既存のS3オブジェクトのユーザーメタデータを更新する方法が明確に指定されていません。それはcopy_from()メソッドを使用して行うことができAWS S3の既存オブジェクトのメタデータをpython boto3を使用して更新するにはどうすればよいですか?
0
A
答えて
1
-
import boto3
s3 = boto3.resource('s3')
s3_object = s3.Object('bucket-name', 'key')
s3_object.metadata.update({'id':'value'})
s3_object.copy_from(CopySource={'Bucket':'bucket-name', 'Key':'key'}, Metadata=s3_object.metadata, MetadataDirective='REPLACE')
0
あなたが何かを追加したり、新しいものと現在のメタデータ値を更新することにより、いずれかの更新プログラムのメタデータすることができますが、ここで私が使用していたコードの一部です:
import sys
import os
import boto3
import pprint
from boto3 import client
from botocore.utils import fix_s3_host
param_1= YOUR_ACCESS_KEY
param_2= YOUR_SECRETE_KEY
param_3= YOUR_END_POINT
param_4= YOUR_BUCKET
#Create the S3 client
s3ressource = client(
service_name='s3',
endpoint_url= param_3,
aws_access_key_id= param_1,
aws_secret_access_key=param_2,
use_ssl=True,
)
# Building a list of of object per bucket
def BuildObjectListPerBucket (variablebucket):
global listofObjectstobeanalyzed
listofObjectstobeanalyzed = []
extensions = ['.jpg','.png']
for key in s3ressource.list_objects(Bucket=variablebucket)["Contents"]:
#print (key ['Key'])
onemoreObject=key['Key']
if onemoreObject.endswith(tuple(extensions)):
listofObjectstobeanalyzed.append(onemoreObject)
#print listofObjectstobeanalyzed
else :
s3ressource.delete_object(Bucket=variablebucket,Key=onemoreObject)
return listofObjectstobeanalyzed
# for a given existing object, create metadata
def createmetdata(bucketname,objectname):
s3ressource.upload_file(objectname, bucketname, objectname, ExtraArgs={"Metadata": {"metadata1":"ImageName","metadata2":"ImagePROPERTIES" ,"metadata3":"ImageCREATIONDATE"}})
# for a given existing object, add new metadata
def ADDmetadata(bucketname,objectname):
s3_object = s3ressource.get_object(Bucket=bucketname, Key=objectname)
k = s3ressource.head_object(Bucket = bucketname, Key = objectname)
m = k["Metadata"]
m["new_metadata"] = "ImageNEWMETADATA"
s3ressource.copy_object(Bucket = bucketname, Key = objectname, CopySource = bucketname + '/' + objectname, Metadata = m, MetadataDirective='REPLACE')
# for a given existing object, update a metadata with new value
def CHANGEmetadata(bucketname,objectname):
s3_object = s3ressource.get_object(Bucket=bucketname, Key=objectname)
k = s3ressource.head_object(Bucket = bucketname, Key = objectname)
m = k["Metadata"]
m.update({'watson_visual_rec_dic':'ImageCREATIONDATEEEEEEEEEEEEEEEEEEEEEEEEEE'})
s3ressource.copy_object(Bucket = bucketname, Key = objectname, CopySource = bucketname + '/' + objectname, Metadata = m, MetadataDirective='REPLACE')
def readmetadata (bucketname,objectname):
ALLDATAOFOBJECT = s3ressource.get_object(Bucket=bucketname, Key=objectname)
ALLDATAOFOBJECTMETADATA=ALLDATAOFOBJECT['Metadata']
print ALLDATAOFOBJECTMETADATA
# create the list of object on a per bucket basis
BuildObjectListPerBucket (param_4)
# Call functions to see the results
for objectitem in listofObjectstobeanalyzed:
# CALL The function you want
readmetadata(param_4,objectitem)
ADDmetadata(param_4,objectitem)
readmetadata(param_4,objectitem)
CHANGEmetadata(param_4,objectitem)
readmetadata(param_4,objectitem)
関連する問題
- 1. Boto3 S3既存のオブジェクトのメタデータを更新する
- 2. 既存のAmazon S3ファイルのメタデータを更新するにはどうすればよいですか?
- 3. aws s3コマンドを使用してオブジェクト権限を変更するにはどうすればよいですか?
- 4. Pythonで既存のオブジェクトと新しいパラメータ値を使用して新しいPythonオブジェクトを初期化するにはどうすればよいですか?
- 5. RailsのAWS S3オブジェクトからプログラムでメタデータを読み取るにはどうすればよいですか?
- 6. boto3でAWS S3 MultipartUploadを作成して開始するにはどうすればよいですか?
- 7. は、再帰的にAWS S3でオブジェクトのメタデータを更新
- 8. rubyを使用してS3オブジェクトのメタデータのバッチを更新するにはどうすればよいですか?
- 9. PythonのBoto3:エラーは、AWS S3
- 10. Java SDKを使用してS3オブジェクトのストレージクラスを変更するにはどうすればよいですか?
- 11. JavaScriptを使用して既存のFileListオブジェクトに追加するにはどうすればよいですか?
- 12. presigned urlを使用してオブジェクトをamazon s3に配置するにはどうすればよいですか?
- 13. AWS S3の既存のxmlファイルをPythonを使用して更新する方法
- 14. Pythonで既存のテキストファイルを更新するにはどうすればよいですか?
- 15. javascriptの既存のオブジェクトに新しいオブジェクトプロパティを追加するにはどうすればよいですか?
- 16. Boto3を使用してAWSポリシーが更新されているかどうかを確認する方法?
- 17. boto3を使用して既存のEMRクラスタを新しいものにクローズ
- 18. ファイルをS3にアップロードしてboto3を使って公開するにはどうすればいいですか?
- 19. AWSのS3オブジェクトに対するパーミッションをPythonとboto3を使用して追加します。
- 20. iOSでAWS S3サービスを使用してファイルをアップロードするにはどうすればよいですか?
- 21. S3バケット内のすべてのアイテムのメタデータを読み取るにはどうすればよいですか?
- 22. GraphQLを使用してAWS S3に画像をアップロードするにはどうすればよいですか?
- 23. Lambdaを使用してAWS CodeCommitをS3にプッシュするにはどうすればよいですか?
- 24. AWS CLIを使用してリモートファイルをS3バケットに転送するにはどうすればよいですか?
- 25. 既存のAmazon S3オブジェクトを更新できますか?
- 26. AWS S3でSailsを使用してファイルを削除するにはどうすればよいですか?アップロードするにはskip-s3を使用します
- 27. CORSを使用してAWS S3アクセスを制限するにはどうすればよいですか?
- 28. AWS S3を使用して静的Express/NodeJSページをホストするにはどうすればよいですか?
- 29. Java SDKを使用してAWS S3とディレクトリを同期するにはどうすればよいですか?
- 30. GOlangのAWS SDKを使用してS3バケットを空にするにはどうすればいいですか?