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の情報を以下の内容に追記します。
その後、上記で取得した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]")
0 件のコメント:
コメントを投稿