AWS.S3は、Amazon Web Services(AWS)Simple Storage Service(S3)REST APIのシンプルなクライアントパッケージです。他のパッケージは現在RをS3に接続していますが、それらは不完全に行い(APIエンドポイントの一部のみをRにマッピングします)、ほとんどの実装は、ユーザーがシステムにインストールしていないAWSコマンドラインツールに依存しています。
パッケージを使用するには、AWSアカウントが必要になり、資格情報をRに入力する必要があります。Keypairは、見出しアクセスキーの下のIAM管理コンソールで生成できます。秘密の鍵には一度だけアクセスできることに注意してください。生成後、安全な場所に保存する必要があります。新しいキーピアは、紛失、盗難、または忘れられた場合、いつでも生成できます。 AWS.IAMパッケージプロファイルは、プログラムで役割、ユーザー、グループ、および資格情報の作成を含むIAMを操作するためのツールをプロファイルします。 IAM資格情報を使用する必要はありません。
資格情報の指定方法の詳細な説明は、https://github.com/cloudyr/aws.signature/に提供されています。最も簡単な方法は、Rを起動する前に、またはRenviron.site
または.Renviron
ファイルを介してコマンドラインに環境変数を設定することです。これは、起動中にRの環境変数を設定するために使用されます( ? Startup
参照)。それらはR内でも設定することができます:
Sys.setenv( " AWS_ACCESS_KEY_ID " = " mykey " ,
" AWS_SECRET_ACCESS_KEY " = " mysecretkey " ,
" AWS_DEFAULT_REGION " = " us-east-1 " ,
" AWS_SESSION_TOKEN " = " mytoken " )
備考:
AWS_S3_ENDPOINT
環境変数を適切なホスト名に設定します。デフォルトでは、パッケージはAWSエンドポイントs3.amazonaws.com
を使用します。バックエンドが領域の概念を持たない単一のサーバーのみを使用している場合、リクエストでもregion=""
を設定する必要がある場合があることに注意してください。aws.ec2metadata
をインストールする必要があります。これにより、資格情報はマシンの役割から取得されます。 このパッケージは、AWSアカウントを登録せずに、公開されているS3バケットと公開されているS3オブジェクトを調べるために使用できます。 AWSコンソールで資格情報が生成され、Rで利用可能になった場合、以下を使用して利用可能なバケツを見つけることができます。
library( " aws.s3 " )
bucketlist()
資格情報が正しくない場合、この関数はエラーを返します。それ以外の場合は、アクセスできるバケツに関する情報のリストを返します。
すべてのオブジェクトのリストをパブリックバケットに入れるには、電話するだけです
get_bucket( bucket = ' 1000genomes ' )
Amazonは、S3のパブリックデータセットのリストを維持しています。
プライベートバケット内のすべてのオブジェクトのリストを取得するには、AWSキーと秘密をパラメーターとして渡します。 (上記のように、 AWS.S3のすべての機能は、デフォルトで環境変数としてキーを探し、S3リクエストを作成するプロセスを大幅に簡素化します。)
# specify keys in-line
get_bucket(
bucket = ' my_bucket ' ,
key = YOUR_AWS_ACCESS_KEY ,
secret = YOUR_AWS_SECRET_ACCESS_KEY
)
# specify keys as environment variables
Sys.setenv( " AWS_ACCESS_KEY_ID " = " mykey " ,
" AWS_SECRET_ACCESS_KEY " = " mysecretkey " )
get_bucket( " my_bucket " )
S3は、地域の仕様について少しうるさいことがあります。 bucketlist()
すべての地域からバケツを返しますが、他のすべての機能は領域を指定する必要があります。 "us-east-1"
のデフォルトは、明示的に指定されていない場合に依存しており、正しい領域を自動的に検出できません。 (注:誤った領域を使用することは、S3で作業するときに最も一般的な - 把握が最も難しいエラーの1つです。)
このパッケージには多くの機能が含まれています。以下は、S3のオブジェクトを操作するのに役立つものです。
bucketlist()
ユーザーがアクセスできるバケットのデータフレームを提供します。get_bucket()
およびget_bucket_df()
特定のバケット内のオブジェクトのリストとデータフレームをそれぞれ提供します。object_exists()
オブジェクトが存在するかどうかの論理を提供します。 bucket_exists()
バケットに同じものを提供します。s3read_using()
ユーザー定義の関数を使用してS3オブジェクトから読み取るための一般的なインターフェイスを提供します。 s3write_using()
、ユーザー定義の関数を使用してS3オブジェクトに書き込むための汎用インターフェイスを提供しますget_object()
S3オブジェクトの生のベクトル表現を返します。これは、オブジェクトのファイル形式に応じて、 rawToChar()
、 xml2::read_xml()
、 jsonlite::fromJSON()
など、さまざまな方法で解析される場合があります。 save_object()
S3オブジェクトを指定されたローカルファイルにメモリに読み取らずに保存します。s3connection()
S3オブジェクトをRにストリーミングするためのバイナリ読み取り可能な接続を提供します。これは、非常に大きなファイルの読み取りに役立ちます。 get_object()
では、関数のバイト範囲の読み取りも許可します(例についてはドキュメントを参照)。put_object()
ローカルファイルをS3バケットに保存します。 multipart = TRUE
引数を使用して、大きなファイルを断片にアップロードできます。s3save()
1つ以上のインメモリRオブジェクトをS3の.RDATAファイルに保存します( save()
に同様)。 s3saveRDS()
、 saveRDS()
の類似体です。 s3load()
s3に保存された.rdataファイル( load()
に類似)から1つ以上のオブジェクトをメモリにロードします。 s3readRDS()
readRDS()
のアナログですs3source()
は、S3から直接Rスクリプトをソースします彼らはあなたがおそらく期待するように振る舞います:
# save an in-memory R object into S3
s3save( mtcars , bucket = " my_bucket " , object = " mtcars.Rdata " )
# `load()` R objects from the file
s3load( " mtcars.Rdata " , bucket = " my_bucket " )
# get file as raw vector
get_object( " mtcars.Rdata " , bucket = " my_bucket " )
# alternative 'S3 URI' syntax:
get_object( " s3://my_bucket/mtcars.Rdata " )
# save file locally
save_object( " mtcars.Rdata " , file = " mtcars.Rdata " , bucket = " my_bucket " )
# put local file into S3
put_object( file = " mtcars.Rdata " , object = " mtcars2.Rdata " , bucket = " my_bucket " )
クランからの最新の安定したリリース:
install.packages( " aws.s3 " , repos = " https://cloud.R-project.org " )
rforge.netの最新開発バージョン:
install.packages( " aws.s3 " , repos = c( " https://RForge.net " , " https://cloud.R-project.org " ))
WindowsでINSTALL_opts = "--no-multiarch"