Tag: aws sdk ruby

建议在Ruby中为S3 Bucket生成预签名URL的方法

我正在尝试在我的Rails服务器上生成预先签名的URL以发送到浏览器,以便浏览器可以上传到S3。 似乎aws-sdk-s3是未来使用的gem。 但不幸的是,我没有遇到可以提供清晰度的gem文档。 似乎有几种不同的方式这样做,并希望对以下方法的差异提供任何指导 – 使用Aws::S3::Presigner.new ( https://github.com/aws/aws-sdk-ruby/blob/master/aws-sdk-core/lib/aws-sdk-core/s3/presigner.rb )但它似乎没有接受对象参数或身份validation凭据。 使用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 。 谢谢!

如何使用rspec模拟AWS SDK(v2)?

我有一个类使用aws-sdk-rails gem (它是aws-sdk-ruby v2的包装器)从SQS队列读取/处理消息。 如何模拟AWS调用,以便我可以在不调用外部服务的情况下测试我的代码? communicator.rb : class Communicator def consume_messages sqs_client = Aws::SQS::Client.new # consume messages until the queue is empty loop do r = sqs_client.receive_message({ queue_url: “https://sqs.region.amazonaws.com/xxxxxxxxxxxx/foo”, visibility_timeout: 1, max_number_of_messages: 1 }) break if (response.message.length == 0) # process r.messages.first.body r = sqs_client.delete_message({ queue_url: “https://sqs.region.amazonaws.com/xxxxxxxxxxxx/foo”, receipt_handle: r.messages.first.receipt_handle }) end end end