はじめに
railsを使用してS3への疎通テストを行う必要があったことと、awsのsdkがv2なって情報が古い記事等もあったため備忘録として
https://github.com/aws/aws-sdk-ruby
Gemfile作成
bundle init
gemを使ってawssdkインストール
gem 'aws-sdk', '~> 2'
envファイルも使いたいのでdotenvも追加
gem 'dotenv'
Gemfileに記載したらbundle install
bundle install
env設定
AWS_REGION=xxxxxxxxxxxxxxxx
AWS_ACCESS_KEY_ID=xxxxxxxxxxxxxxxx
AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxx
接続確認
require 'aws-sdk-core'
require 'dotenv'
Dotenv.load ".env"
Aws.config[:region] = ENV['AWS_REGION']
s3 = Aws::S3::Client.new
接続キーのAWS_ACCESS_KEY_ID
とAWS_SECRET_ACCESS_KEY
に関してはSDKが環境変数ENV['AWS_ACCESS_KEY_ID']
とENV['AWS_SECRET_ACCESS_KEY']
を自動で拾ってくれる。
ファイルアップロード
同一階層にhelloworld.txt
を作成中身はお決まりの文言
s3.put_object(
bucket: 'bucket_name',
body: File.open("helloworld.txt"),
key: "helloworld.txt"
)
ファイル取得
s3.get_object(bucket: 'bucket_name', key: 'helloworld.txt').body.read
結果は"Hello world!\n"
ファイルの削除
s3.delete_object(bucket: 'bucket_name', key: 'helloworld.txt')
まとめ
とりあえず疎通だけなら最低限これでいいかな。
バケットの作成からとかファイルの作成からとかはAPIのリファレンスに乗ってるんで要確認。
ファイルの存在チェックとか削除が成功したかとか確認するのはどうするんだろうか。
参考
https://github.com/aws/aws-sdk-ruby
http://docs.aws.amazon.com/sdkforruby/api/index.html
https://github.com/bkeepers/dotenv