geo*_*boy 7 ruby ruby-on-rails amazon-s3 amazon-web-services aws-sdk-ruby
我正在尝试在我的Rails服务器上生成预先签名的URL以发送到浏览器,以便浏览器可以上传到S3.
看起来好像aws-sdk-s3
是未来的宝石.但不幸的是,我没有遇到可以提供清晰度的宝石文档.似乎有几种不同的方式这样做,并希望对以下方法的差异提供任何指导 -
使用Aws::S3::Presigner.new
(https://github.com/aws/aws-sdk-ruby/blob/master/aws-sdk-core/lib/aws-sdk-core/s3/presigner.rb)但似乎没有采取在对象参数或身份验证凭据中.
使用Aws::S3::Resource.new
,但似乎aws-sdk-resources
不会被维护.(https://aws.amazon.com/blogs/developer/upgrading-from-version-2-to-version-3-of-the-aws-sdk-for-ruby-2/)
使用Aws::S3::Object.new
然后调用该put
对象上的方法.
AWS::SigV4
直接使用.
我想知道他们是如何不同的,以及选择一个而不是另一个的含义?任何建议都非常感谢,尤其是aws-sdk-s3
.
谢谢!
geo*_*boy 13
所以,感谢上面的@strognjz的提示,这里使用`aws-sdk-s3'对我有用.
require 'aws-sdk-s3'
#credentials below for the IAM user I am using
s3 = Aws::S3::Client.new(
region: 'us-west-2', #or any other region
access_key_id: AWS_ACCESS_KEY_ID,
secret_access_key: AWS_SECRET_ACCESS_KEY
)
signer = Aws::S3::Presigner.new(client: s3)
url = signer.presigned_url(
:put_object,
bucket: S3_BUCKET_NAME,
key: "${filename}-#{SecureRandom.uuid}"
)
Run Code Online (Sandbox Code Playgroud)
cse*_*yam 10
这将使用aws-sdk-s3 gem
aws_client = Aws::S3::Client.new(
region: 'us-west-2', #or any other region
access_key_id: AWS_ACCESS_KEY_ID,
secret_access_key: AWS_SECRET_ACCESS_KEY
)
s3 = Aws::S3::Resource.new(client: aws_client)
bucket = s3.bucket('bucket-name')
obj = bucket.object("${filename}-#{SecureRandom.uuid}")
url = obj.presigned_url(:put)
Run Code Online (Sandbox Code Playgroud)
obj.presigned_url(:put)
obj.presigned_url(:head)
obj.presigned_url(:delete)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4930 次 |
最近记录: |