わかるってたのしい

Ruby on RailsやJavaScriptをよく使っています。コードを書いていく中で得た知見を残していきます。

aws-sdk-s3で署名付きURLのスタブを生成

Gemの aws-sdk-s3 を使った署名付きURLのスタブの生成について、以下のissueにやり方が書いてあったのでメモ。

Stubbing issue with Presigner#presigned_url · Issue #2092 · aws/aws-sdk-ruby

s = Aws::S3::Client.new(stub_responses: true)
#=> #<Aws::S3::Client>

p = Aws::S3::Presigner.new(client: s)
#=> #<Aws::S3::Presigner:0x007fdbcb4d9758 @client=#<Aws::S3::Client>>

p.presigned_url(:put_object, bucket: 'foo', key: 'bar')
#=> "https://foo.s3.us-stubbed-1.amazonaws.com/bar?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=stubbed-akid%2F20210322%2Fus-stubbed-1%2Fs3%2Faws4_request&X-Amz-Date=20210322T064324Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&X-Amz-Signature=6f6b14b2ee48dca1e0f02a1e6ea5ea59bfb3f7ba4b33797ad252639d5593604b"