2020年3月28日土曜日

RStudioからAWS S3 へオブジェクトをUpload、Download

RStudioからAWS S3へはいつかは試してみなければと思いながらだいぶ日が経ってしまったが、やっと試せるときがきたので、まとめてみました。






























IAMを使って認証情報を作成する

まずはともあれ、AWSのアカウントが無いと始まりません。AWSのアカウントを作成して、IAMにアクセスしてAWS S3にアクセスできるユーザーを作成してください。
この際、重要になるのが「AWS_ACCESS_KEY_ID」と「AWS_SECRET_ACCESS_KEY」です。これらの情報はこの後で使います。

{aws.s3}パッケージとSys.setenvへの登録

次にRStudio上で、{aws.s3}パッケージをインストールします。(install.packages() , library()を利用してください)
その後、上記で取得したAIMの情報を以下の内容に追記します。


Sys.setenv("AWS_ACCESS_KEY_ID" = "mykey",
           "AWS_SECRET_ACCESS_KEY" = "mysecretkey",
           "AWS_DEFAULT_REGION" = "us-east-1")

AWS_DEFAULT_REGONはAWS S3はグローバルで共通になっており、特にしてする必要はありまませんが、私はEC2を使う際に利用しているリージョンを指定しました。

接続できているか確認

うまく接続できているかを確認してみましょう。
RStudio上で、AWS S3のバケットがうまく取得できているかを確認します。

bucketlist()

の関数を実行すると、IAMで作成したユーザーがアクセスできるバケットのリストが参照されているはずです。

RオブジェクトのUpload

ここまでくれば、あとは実際にRの関数を適応していくだけです。

まずはみんな大好きirisデータフレームをAWS S3へUploadしてみます。
コマンドは以下を実行します。

s3save(iris, bucket = "[bucket_name]" , object = "iris.Rdata")

そうすると、AWS S3画面上に.Rdata ファイルが見えるはずです。
この中にirisが入っています。

RオブジェクトのDownload

次に、AWS S3にあるRオブジェクトをRStudioの環境にダウンロードします。

s3load("iris.Rdata" , bucket = "[bucket_name]")

この関数でirisが入っている.Rdataをダウンロードし、RオブジェクトがRStudioの環境にロードされます。

ローカルにあるデータファイルのUpload

RStudioで作業をしていると、CSVファイルなどの様々なファイルを作成することがあるかと思います。その場合もこのパッケージを使えばAWS S3へファイルをアップロードが可能です。

irisをwrite.csv()でCSVファイルに作成をしておいて、以下のコマンドを使ってCSVファイルをアップロードします。

put_object(file = "iris.csv" , object = "iris_from_RStudio.csv", bucket = "[bucket_name]")

file= にはアップロードしたいファイル名、object = には、AWS S3のオブジェクト名、bucket = にはAWS S3のバケット名を指定します。
今回はfileとobject の名前は異なってつけています。AWS S3の画面にはobject の名前が表示されます。

AWS S3にあるデータファイルのDownload

次にAWS S3 のデータファイルをダウンロードします。

save_object("iris_from_RStudio.csv", file = "[file path]" , bucket = "[bucket_name]")

関数がsave_objectとなっているので、わかりにくいですが、この関数を使って、AWS S3 → ローカルのファイルパスにファイルをダウンロードします。ファイル名を指定するだけだと、getwd() で表示されるディレクトリに保存されます。




分析した結果をAWS S3に保存して他の人と共有したり、分析用データソースとしてAWS S3を利用したりとデータソースのUpload、Downloadをうまく利用して他のユーザーと共有したりできるかと思います。


0 件のコメント: