AWS.S3 adalah paket klien sederhana untuk Amazon Web Services (AWS) Layanan Penyimpanan Sederhana (S3) REST API. Sementara paket lain saat ini menghubungkan R ke S3, mereka melakukannya dengan tidak lengkap (memetakan hanya beberapa titik akhir API ke R) dan sebagian besar implementasi bergantung pada alat baris perintah AWS, yang mungkin tidak diinstal oleh pengguna pada sistem mereka.
Untuk menggunakan paket ini, Anda akan memerlukan akun AWS dan memasukkan kredensial Anda ke R. Keypair Anda dapat dihasilkan di konsol manajemen IAM di bawah tombol akses heading. Perhatikan bahwa Anda hanya memiliki akses ke kunci rahasia Anda sekali. Setelah dihasilkan, Anda perlu menyimpannya di lokasi yang aman. Keypair baru dapat dihasilkan kapan saja jika Anda telah hilang, dicuri, atau dilupakan. Alat profil paket AWS.IAM untuk bekerja dengan IAM, termasuk menciptakan peran, pengguna, grup, dan kredensial secara terprogram; Tidak perlu menggunakan kredensial IAM.
Deskripsi terperinci tentang bagaimana kredensial dapat ditentukan disediakan di: https://github.com/cloudyr/aws.signature/. Cara termudah adalah dengan hanya mengatur variabel lingkungan pada baris perintah sebelum memulai R ? Startup
melalui .Renviron
Renviron.site
. Mereka juga dapat diatur dalam r:
Sys.setenv( " AWS_ACCESS_KEY_ID " = " mykey " ,
" AWS_SECRET_ACCESS_KEY " = " mysecretkey " ,
" AWS_DEFAULT_REGION " = " us-east-1 " ,
" AWS_SESSION_TOKEN " = " mytoken " )
Perkataan:
AWS_S3_ENDPOINT
ke nama host yang sesuai. Secara default, paket menggunakan titik akhir AWS: s3.amazonaws.com
. Perhatikan bahwa Anda mungkin harus mengatur region=""
dalam permintaan juga jika back-end hanya menggunakan satu server tanpa konsep daerah.aws.ec2metadata
. Dengan cara ini, kredensial akan diperoleh dari peran mesin. Paket ini dapat digunakan untuk memeriksa ember S3 yang dapat diakses secara publik dan objek S3 yang dapat diakses secara publik tanpa mendaftarkan akun AWS. Jika kredensial telah dihasilkan di konsol AWS dan tersedia di R, Anda dapat menemukan ember yang tersedia menggunakan:
library( " aws.s3 " )
bucketlist()
Jika kredensial Anda salah, fungsi ini akan mengembalikan kesalahan. Kalau tidak, itu akan mengembalikan daftar informasi tentang ember yang Anda akses.
Untuk mendapatkan daftar semua objek dalam ember publik, cukup hubungi
get_bucket( bucket = ' 1000genomes ' )
Amazon memelihara daftar set data publik di S3.
Untuk mendapatkan daftar untuk semua objek dalam ember pribadi, lewati kunci dan rahasia AWS Anda sebagai parameter. (Seperti dijelaskan di atas, semua fungsi di AWS.S3 akan mencari kunci Anda sebagai variabel lingkungan secara default, sangat menyederhanakan proses membuat permintaan 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 bisa sedikit pilih -pilih tentang spesifikasi wilayah. bucketlist()
akan mengembalikan ember dari semua wilayah, tetapi semua fungsi lain memerlukan menentukan suatu wilayah. Default "us-east-1"
diandalkan jika tidak ada yang ditentukan secara eksplisit dan wilayah yang benar tidak dapat dideteksi secara otomatis. (Catatan: Menggunakan wilayah yang salah adalah salah satu kesalahan yang paling umum - dan paling sulit untuk diketahui - saat bekerja dengan S3.)
Paket ini berisi banyak fungsi. Berikut ini adalah yang akan berguna untuk bekerja dengan objek di S3:
bucketlist()
memberikan bingkai data ember tempat pengguna memiliki akses.get_bucket()
dan get_bucket_df()
masing -masing memberikan daftar dan bingkai data, masing -masing, objek dalam ember yang diberikan.object_exists()
memberikan logis untuk apakah suatu objek ada. bucket_exists()
menyediakan hal yang sama untuk ember.s3read_using()
menyediakan antarmuka generik untuk membaca dari objek S3 menggunakan fungsi yang ditentukan pengguna. s3write_using()
menyediakan antarmuka generik untuk menulis ke objek S3 menggunakan fungsi yang ditentukan penggunaget_object()
Mengembalikan representasi vektor mentah dari objek S3. Ini kemudian dapat diuraikan dalam beberapa cara, seperti rawToChar()
, xml2::read_xml()
, jsonlite::fromJSON()
, dan sebagainya tergantung pada format file objek. save_object()
menyimpan objek S3 ke file lokal yang ditentukan tanpa membacanya ke dalam memori.s3connection()
menyediakan koneksi biner yang dapat dibaca untuk streaming objek S3 ke R. Ini dapat berguna untuk membaca untuk file yang sangat besar. get_object()
juga memungkinkan pembacaan rentang fungsi byte (lihat dokumentasi untuk contoh).put_object()
menyimpan file lokal ke dalam ember S3. multipart = TRUE
dapat digunakan untuk mengunggah file besar dalam potongan.s3save()
menyimpan satu atau lebih objek R dalam memori ke file .rdata di S3 (secara analog untuk save()
). s3saveRDS()
adalah analog untuk saveRDS()
. s3load()
Memuat satu atau lebih objek ke dalam memori dari file .rdata yang disimpan di S3 (secara analog ke load()
). s3readRDS()
adalah analog untuk readRDS()
s3source()
Sumber skrip R langsung dari S3Mereka berperilaku seperti yang mungkin Anda harapkan:
# 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 " )
Rilis stabil terbaru dari Cran:
install.packages( " aws.s3 " , repos = " https://cloud.R-project.org " )
Versi pengembangan terakhir dari rForge.net:
install.packages( " aws.s3 " , repos = c( " https://RForge.net " , " https://cloud.R-project.org " ))
Di Windows Anda mungkin perlu menambahkan INSTALL_opts = "--no-multiarch"