Amazon S3 загружается подписанный URL общедоступный

StackOverflow https://stackoverflow.com//questions/20000830

  •  20-12-2019
  •  | 
  •  

Вопрос

Это URL, генерируемый Ruby AWS-SDK GEM для поставок:

curl --upload-file "/Users/README.rdoc" 
-H "x-amz-acl=public-read" 
"http://videos.s3.amazonaws.com/6c06517c-64f1-45ed-b07f-8c4c4edec6e3?AWSAccessKeyId={key}&Expires=1384519899&Signature=MKtBESBklYXFT%2B48EKLSoBiQpNA%3D"
.

-H "x-amz-acl=public-read" нет в подписи.Подпись в порядке (Amazon не показывает никаких ошибок).

Но разрешение «Государственно-чтения» не применяется, сообщите мне о том, как я могу генерировать подписанный URL-адрес, который будет читать общедоступные после загрузки.

Спасибо!

Обновлено:

s3 = AWS::S3.new
bucket = s3.buckets['some_videos']
id = SecureRandom.uuid
object = bucket.objects["#{id}"]
url = object.url_for(:put, expires_in: 30*60)
.

Это было полезно?

Решение 2

команда Amazon добавила это на их SDK.Спасибо, парни! https://github.com/aws/aws-sdk-ruby/issues/412. https://github.com/aws/aws-sdk-ruby/commit/15e900c0918a67e20bbb6dd9509c112aa01a95ee

Другие советы

Похоже, вы можете указать это с помощью метода ACL (документировано здесь ) Если вы хотите установить ваше ведро для публичного чтения, вы можете позвонить:

s3.buckets['some-videos'].acl = :public_read
.

Если вы хотите применить это разрешение напрямую на объект, вы можете позвонить:

bucket.objects["#{id}"].acl= :public_read
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top