Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 9007759
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 16, 20262026-06-16T01:46:33+00:00 2026-06-16T01:46:33+00:00

I want to create a so-called pre-signed URL for uploading a particular object (PUT)

  • 0

I want to create a so-called “pre-signed” URL for uploading a particular object (PUT) to Amazon S3 bucket.

So far so good. I am using the python library boto to create an URL, that contains all necessary stuff (expires, signature and so on). The URL looks like this:

https://<bucketname>.s3.amazonaws.com/<key>?Signature=<sig>&Expires=<expires>&AWSAccessKeyId=<my key id>&x-amz-acl=public-read

Note the last parameter.

This, at least, as I understand, limits whoever uses this URL to uploading an object to a particular key in a particular bucket and also limits the canned ACL that will be set on the object to “public-read”.

My last statement is quite incorrect though.

As it turns out, if you are using this URL, you can do the following with the x-amz-acl header (as opposed to the query string parameter with the same name, that you must set for the signature check to succeed):

  1. Set it to “public-read”. The object’s permissions will consist of two entries: “read” for “Everyone” and “full control” for bucket owner. This is quite expected.
  2. Omit the x-amz-acl header. The permissions on the object will be the same as the per-bucket default (bucket owner has full control). Why?
  3. Set it to “public-read-write”. Result is exactly as in (1).
  4. Set it to “authenticated-read”. “Authenticated users” get “read” permission, bucket owner has full control.
  5. Set it to “bucket-owner-read”. Result is exactly as in (2). Bucket owner has full control, no other permissions are defined.
  6. Set it to “bucket-owner-full-control”. Unsurprisingly, bucket owner will have full control.
  7. Set it to a non-existant canned ACL name and get an error.

So it seems, that

  1. The x-amz-acl header does not take part in the signature check, because you can change it at will and the request succeeds. The query string parameter, however, definitely is taken into account during the signature check.
  2. x-amz-acl query string parameter does not influence the object’s permissions directly, as in, it does nothing on its own.
  3. If you send a x-amz-acl header, the resultant permissions never be
    • more restrictive for the bucket owner, than they are by default.
    • less restricvie for the non-bucket-owner.
  4. They can, however, be more restrictive for non-bucket-owner. That is, if you specify x-amz-acl=public-read in the query string, you can set the x-amz-acl header to authenticated-read and instead of a publicly readable object get an object, that can be only read by authenticated users.

What is the real relation between the x-amz-acl QS parameter and the header, that goes by the same name? Is there a way to restrict permissions on the object, that is to be uploaded via a PUT request to a so-called “pre-signed” URL?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-16T01:46:34+00:00Added an answer on June 16, 2026 at 1:46 am

    As I understand it (and I might be wrong here), the header x-amz-acl takes priority over the querystring argument–and they do serve the same purpose. The reason that only the querystring parameter is taken into account during the signature check is simply due to the fact that headers are not part of the signature check for the policy.

    This page might help you; it helped me a lot when creating forms to upload directly to S3.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Let's say I want to create an Object called 'Vertex'. Usually, in Java I
I want to create a plugin called 'myPlugin'. Which method should I use and
I want to create a helper method that could be called from different code-behind
I want to create a new ClassLoader everytime my method is called. So I
I want to create a table called quiz_mailing_list in my database in SQL Server
I want to create one virtualenv using another as the starting point, is this
I want to create a shell script that will create a pre-formatted file and
Say I want to create a class called EntityWithCreatedAt: class Entity<T> : ActiveRecordBase<T> {
In iTunes Connect, I want to create an app called Travelogue but it says
I want to create custom events called user_logged so that i can attach my

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.