1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AWS SDK for Ruby バージョン 2 を使用したS3バケットへのオブジェクトアップロード

Last updated at Posted at 2016-08-23

はじめに

プログラミングのお勉強をしようと思い、AWS公式ドキュメントにある「AWS SDK for Ruby を使用したオブジェクトのアップロード」を参考にファイルアップロードを行うRubyスクリプトを書いてみました。
とはいえ、そのままだとただのコピペになってしまうので、アップロードするのに必要な権限のみを持つIAMユーザーを作成し、それをスクリプト内で指定してファイルのアップロードを行いたいと思います。

1. ファイルアップロード先の準備

「S3」→「バケットを作成」でアップロード先となるバケットを作成します。
一応、今回はリージョンを「Tokyo」にしています。
1-s301.png

1-s302.png

2. アップロードユーザーの用意

「IAM」→「ユーザー」→「新規ユーザーの作成」で今回利用するアップロード用のユーザー名を入力し「作成」をクリックします。
2-iam01.png

ここで、アクセスキーIDシークレットアクセスキーが表示されるので、メモまたはダウンロードをしてから「閉じる」をクリックしてください。後で必要になります。
2-iam02.png

次に、先ほど作成したユーザーを選択します。
2-iam03.png

「アクセス許可」→「インラインポリシー」→「ここをクリックしてください。」をクリックします。
2-iam04.png

「カスタムポリシー」を選んで「選択」をクリックします。
2-iam05.png

以下のポリシーを適用します。(コピペでOKです。)

IAMポリシー
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1471591778000",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

2-iam06.png

2-iam07.png

以上で、ファイルアップロード用ユーザーが作成できました。

3. スクリプトの作成

それではいよいよアップロード用のスクリプトを作成します。
今回の作業環境はMacで行います。

ファイル作成
$ vim upload.rb

ファイルを開いたら以下のスクリプトをコピペします。
ただ、その際にbucketnameobjectnameuploadfileアクセスキーIDシークレットアクセスキーは適宜変更してください。
また、バケットのリージョンをTokyoにしなかった場合も適切なリージョンに変更する必要があります。

upload.rb
#!/usr/bin/env ruby

require 'aws-sdk'

bucketname = "kohei-no-bucket"  # バケット名
objectname = "ceresso.png"      # アップロード後のファイル名
uploadfile = "ceresso.png"      # アップロードするファイル名

Aws.config[:credentials] = Aws::Credentials.new(
  '********************',                        # アクセスキーID
  '****************************************',    # シークレットアクセスキー
)
s3 = Aws::S3::Resource.new(region:'ap-northeast-1')  # Tokyoリージョン
obj = s3.bucket(bucketname).object(objectname)
obj.upload_file(uploadfile)

最後に、作成したら実行権限をつけておきましょう。

権限追加
$ chmod +x upload.rb

あと、もしaws-adkのインストールがまだの場合は以下のコマンドでインストールもしておいてください。

インストール
$ gem install aws-sdk

ということで、すべての準備が整いました。

4. 実践!

それではアップロードしてみます。

アップロード
$ ./upload.rb

何もエラーなくプロンプトが返って来れば無事アップロード成功です。

5. 確認

それではバケットを確認してみます。

3-upload01.png

アップロードできているのが確認できました。

おわりに

今回は同じディレクトリ内にあるファイルをアップロードしました。
別の場所にあるファイルをアップロードしたい場合は、スクリプト内のuploadfileをパス指定すればOKです。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?