S3にファイルを直接アップロードする(署名付きURL)
目的
サーバから署名付きURLを発行し、クライアントは署名付きURLを利用してファイルをアップロードする
環境
目指す構成
検証
署名付きURLの発行
gem 'aws-sdk'
下記のコードで署名付きURLを発行することができた。
Aws.config.update({ region: ENV['REGION'], credentials: Aws::Credentials.new(ENV['KEY_ID'], ENV['KEY']) }) s3_bucket = Aws::S3::Resource.new.bucket(ENV['BUCKET']) path = 'バケットに配置する際のパス(ファイル名を含む)' s3_bucket.object(path).presigned_url(:put, expires_in: 'URLの有効期限')
ファイルのアップロード
発行した署名付きURLに対して、ファイルデータを送ってみると、ファイルがアップロードされていた。
curl -X PUT -d @hoge.json '署名付きURL'