2

ファイルを S3 にアップロードするときに、ファイルにタグを追加したいと考えています。Boto3 は put_object メソッドでタグを指定することをサポートしていますが、予想されるファイル サイズを考慮して、マルチパート アップロードを処理する upload_file 関数を使用しています。しかし、この関数はキーワード引数として「タグ付け」を拒否します。

import boto3
client = boto3.client('s3', region_name='us-west-2')
client.upload_file('test.mp4', 'bucket_name', 'test.mp4',
                   ExtraArgs={'Tagging': 'type=test'})

ValueError: Invalid extra_args key 'Tagging', must be one of: ACL, CacheControl, ContentDisposition, ContentEncoding, ContentLanguage, ContentType, Expires, GrantFullControl, GrantRead, GrantReadACP, GrantWriteACP, Metadata, RequestPayer, ServerSideEncryption, StorageClass, SSECustomerAlgorithm, SSECustomerKey, SSECustomerKeyMD5, SSEKMSKeyId, WebsiteRedirectLocation

S3転送マネージャーを直接使用し、許可されたキーワードリストを変更することで、これを機能させる方法を見つけました.

from s3transfer import S3Transfer
import boto3

client = boto3.client('s3', region_name='us-west-2')
transfer = S3Transfer(client)
transfer.ALLOWED_UPLOAD_ARGS.append('Tagging')
transfer.upload_file('test.mp4', 'bucket_name', 'test.mp4',
                     extra_args={'Tagging': 'type=test'})

これは機能しますが、これが最善の方法だとは思いません。他の副作用を引き起こす可能性があります。現在、これを達成する正しい方法を見つけることができません。どんなアドバイスも素晴らしいでしょう。ありがとう。

4

2 に答える 2