LoginSignup
1
0

More than 5 years have passed since last update.

rubyのaws-sdk ver. 3を使ってS3のバケットを新規作成もしくは削除する

Last updated at Posted at 2018-04-27

概要

  • aws-sdk ver. 3でS3のバケットをの新規作成 or 削除を行うだけのクラスです。
  • 問答無用で実行します!!!。本コードを利用する場合は、気をつけて使ってください。

環境

  • ruby: 2.5.1
  • aws-sdk-s3: 1.9.0 (from aws-sdk ver 3.0.1)

コード

  • バケットの作成は、create_bucketを呼び出して行います
  • バケットの削除は、delete_bucketを呼び出して行います。
create_delete_s3_client.rb
require 'aws-sdk-s3'

class CreateDeleteS3Client
  def initialize(opts = {})
    aws_access_key_id = opts[:aws_access_key_id] # 'YOUR_AWS_ACCESS_KEY'
    aws_secret_access_key_id = opts[:aws_secret_access_key_id] # 'YOUR_AWS_SECRET_ACCESS_KEY'
    @aws_bucket_region = opts[:aws_bucket_region] # 'TARGET_AWS_BUCKET_REGION'
    @s3_resource = Aws::S3::Resource.new(region: @aws_bucket_region)
    @s3_client = Aws::S3::Client.new(access_key_id: aws_access_key_id, secret_access_key: aws_secret_access_key_id)
  end

  def create!(bucket_name)
    if bucket_exist?(bucket_name)
      p "#{bucket_name} is already existed !"
      return
    end
    @s3_client.create_bucket(
      {bucket: bucket_name,
       create_bucket_configuration: {location_constraint: @aws_bucket_region}})
    p "#{bucket_name} is created"
  end

  def delete!(bucket_name)
    unless bucket_exist?(bucket_name)
      p "#{bucket_name} is not existed !"
      return
    end
    @s3_client.delete_bucket({bucket: bucket_name})
    p "#{bucket_name} is deleted"
  end

  def bucket_exist?(bucket_name)
    @s3_resource.bucket(bucket_name).exists?
  end
end

使い方

よくある、状況を想定して、環境変数で AWS_ACCESS_KEY_ID と AWS_SECRET_ACCESS_KEYが定義されているとします。

もし、環境変数で定義していない場合は、ENV['AWS_ACCESS_KEY_ID']ENV['AWS_SECRET_ACCESS_KEY']を実際の値に置き換えてください。

# 使いかた
s3 = CreateDeleteS3Client.new(
  {
    aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'],
    aws_secret_access_key_id: ENV['AWS_SECRET_ACCESS_KEY'],
    aws_bucket_region: 'ap-northeast-1',
  }
)

# 問答無用でバケットを作りたい場合
s3.create!('作りたいバケット名')

# 問答無用でバケットを削除したい場合
s3.delete!('削除したいバケット名')

以上

1
0
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
1
0