title: How to make an s3 object public in s3 private bucket without using presigned URLs
body: <p>I have an s3 bucket with the following policy</p>
  <pre><code>{
  &quot;Version&quot;: &quot;2012-10-17&quot;,
  &quot;Statement&quot;: [
      {
          &quot;Sid&quot;: &quot;VisualEditor0&quot;,
          &quot;Effect&quot;: &quot;Allow&quot;,
          &quot;Action&quot;: [
              &quot;s3:PutObject&quot;,
              &quot;s3:GetObject&quot;,
              &quot;s3:ListBucket&quot;,
              &quot;s3:DeleteObject&quot;
          ],
          &quot;Resource&quot;: [
              &quot;arn:aws:s3:::bucket&quot;,
              &quot;arn:aws:s3:::bucket/*&quot;
          ]
      }
  ]
  </code></pre>
  <p>}</p>
  <p>also the bucket public access is blocked. here is a snapshot of bucket policy</p>
  <p><a href="https://i.stack.imgur.com/BvwzB.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/BvwzB.png" alt="enter image description here" /></a></p>
  <p>Basically I want the bucket to be private in order to prevent unauthorized users from uploading files but I would like to grant public read access to the objects inside the bucket for any user</p>