概要
- 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!('削除したいバケット名')
以上