3
4

More than 5 years have passed since last update.

RubyでのAws S3疎通テスト

Posted at

はじめに

railsを使用してS3への疎通テストを行う必要があったことと、awsのsdkがv2なって情報が古い記事等もあったため備忘録として
https://github.com/aws/aws-sdk-ruby

Gemfile作成

bundle init

gemを使ってawssdkインストール

Gemfile
gem 'aws-sdk', '~> 2'

envファイルも使いたいのでdotenvも追加

Gemfile
gem 'dotenv'

Gemfileに記載したらbundle install

bundle install

env設定

.env
AWS_REGION=xxxxxxxxxxxxxxxx
AWS_ACCESS_KEY_ID=xxxxxxxxxxxxxxxx
AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxx

接続確認

check.rb
require 'aws-sdk-core'
require 'dotenv'

Dotenv.load ".env"

Aws.config[:region] = ENV['AWS_REGION']
s3 = Aws::S3::Client.new

接続キーのAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYに関してはSDKが環境変数ENV['AWS_ACCESS_KEY_ID']ENV['AWS_SECRET_ACCESS_KEY']を自動で拾ってくれる。

ファイルアップロード

同一階層にhelloworld.txtを作成中身はお決まりの文言

check.rb
s3.put_object(
    bucket: 'bucket_name',
    body: File.open("helloworld.txt"),
    key: "helloworld.txt"
)

ファイル取得

check.rb
s3.get_object(bucket: 'bucket_name', key: 'helloworld.txt').body.read

結果は"Hello world!\n"

ファイルの削除

check.rb
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

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4