非公開のACL S3bucketに対して、オブジェクトをアップロード可能とする署名付き一時URLを発行します。
以前のGETの署名付きURLの書き込みバージョン。
AWS S3 パブリックアクセス禁止のオブジェクトに署名して一時的にアクセス可能なURLを生成する - 追憶行
PUT用署名付URLの発行
import boto3 s3 = boto3.client('s3', region_name='ap-northeast-1') url = s3.generate_presigned_url( ClientMethod = 'put_object', Params = { 'Bucket': bucket_name, 'Key': key, 'ContentType': type }, ExpiresIn = 3600, HttpMethod = 'PUT' )
generate_presigned_url
で生成したURLをAPIのレスポンスなんかでクライアントに送信し、クライアントはこの一時URLを使用することでバケットにオブジェクトを書き込むことが可能です。書き込まれるオブジェクト名、S3バケットを指すKey名はこの時、指定する。つまり、クライアントは署名付URLとは違ったKey名を指定してオブジェクトをアップロードすることは出来ない。ファイル名を指定する場合は署名生成時にオブジェクト名を受け取ることになる。
署名付きURLを使用したオブジェクトの送信
署名付きURLを使用したオブジェクトの書き込みは以下のようにして使用します。
json = JSON.parse(JSON.stringify(res.data)) axios.put( "署名付URL", "オブジェクトのデータ", { headers: { 'Content-Type': "オブジェクトのmimeType" } })
リンク