S3 / Client / generate_presigned_post

generate_presigned_post#

S3.Client.generate_presigned_post(Bucket, Key, Fields=None, Conditions=None, ExpiresIn=3600)#

Builds the url and the form fields used for a presigned s3 post

Parameters:
  • Bucket (string) – The name of the bucket to presign the post to. Note that bucket related conditions should not be included in the conditions parameter.

  • Key (string) – Key name, optionally add ${filename} to the end to attach the submitted filename. Note that key related conditions and fields are filled out for you and should not be included in the Fields or Conditions parameter.

  • Fields (dict) –

    A dictionary of prefilled form fields to build on top of. Elements that may be included are acl, Cache-Control, Content-Type, Content-Disposition, Content-Encoding, Expires, success_action_redirect, redirect, success_action_status, and x-amz-meta-.

    Note that if a particular element is included in the fields dictionary it will not be automatically added to the conditions list. You must specify a condition for the element as well.

  • Conditions (list) –

    A list of conditions to include in the policy. Each element can be either a list or a structure. For example:

    [

    {“acl”: “public-read”}, [“content-length-range”, 2, 5], [“starts-with”, “$success_action_redirect”, “”]

    ]

    Conditions that are included may pertain to acl, content-length-range, Cache-Control, Content-Type, Content-Disposition, Content-Encoding, Expires, success_action_redirect, redirect, success_action_status, and/or x-amz-meta-.

    Note that if you include a condition, you must specify the a valid value in the fields dictionary as well. A value will not be added automatically to the fields dictionary based on the conditions.

  • ExpiresIn (int) – The number of seconds the presigned post is valid for.

Return type:

dict

Returns:

A dictionary with two elements: url and fields. Url is the url to post to. Fields is a dictionary filled with the form fields and respective values to use when submitting the post. For example:

{‘url’: ‘https://mybucket.s3.amazonaws.com
’fields’: {‘acl’: ‘public-read’,

’key’: ‘mykey’, ‘signature’: ‘mysignature’, ‘policy’: ‘mybase64 encoded policy’}

}