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