AWS3 es un paquete de cliente simple para Amazon Web Services (AWS) Simple Storage Service (S3) REST API. Si bien otros paquetes se conectan actualmente R a S3, lo hacen de manera incompleta (mapeando solo algunos de los puntos finales de API a R) y la mayoría de las implementaciones se basan en las herramientas de línea de comandos de AWS, que los usuarios pueden no haber instalado en su sistema.
Para usar el paquete, necesitará una cuenta de AWS e ingresará sus credenciales en R. Su KeyPair se puede generar en la consola de administración de IAM bajo las claves de acceso de encabezado. Tenga en cuenta que solo tiene acceso a su clave secreta una vez. Después de generarlo, debe guardarlo en una ubicación segura. Se pueden generar nuevos teclas en cualquier momento si se ha perdido, robado u olvidado los suyos. Las herramientas de perfiles de paquetes AWSWIAM para trabajar con IAM, incluida la creación de roles, usuarios, grupos y credenciales programáticamente; No es necesario usar credenciales de IAM.
Se proporciona una descripción detallada de cómo se pueden especificar las credenciales en: https://github.com/cloudyr/aws.signature/. La forma más fácil es simplemente establecer variables de entorno en la línea de comando antes de comenzar r o mediante un archivo Renviron.site
o .Renviron
, que se utilizan para establecer variables de entorno en R durante el inicio (ver ? Startup
). También se pueden establecer dentro de R:
Sys.setenv( " AWS_ACCESS_KEY_ID " = " mykey " ,
" AWS_SECRET_ACCESS_KEY " = " mysecretkey " ,
" AWS_DEFAULT_REGION " = " us-east-1 " ,
" AWS_SESSION_TOKEN " = " mytoken " )
Observaciones:
AWS_S3_ENDPOINT
en el nombre de host apropiado. Por defecto, el paquete utiliza el punto final de AWS: s3.amazonaws.com
. Tenga en cuenta que es posible que tenga que establecer region=""
en la solicitud también si el back-end usa solo un servidor sin concepto de regiones.aws.ec2metadata
. De esta manera, la credencial se obtendrá del papel de la máquina. El paquete se puede utilizar para examinar cubos S3 de acceso público y objetos S3 de acceso público sin registrar una cuenta AWS. Si se han generado credenciales en la consola AWS y están disponibles en R, puede encontrar sus cubos disponibles usando:
library( " aws.s3 " )
bucketlist()
Si sus credenciales son incorrectas, esta función devolverá un error. De lo contrario, devolverá una lista de información sobre los cubos a los que tiene acceso.
Para obtener una lista de todos los objetos en un cubo público, simplemente llame
get_bucket( bucket = ' 1000genomes ' )
Amazon mantiene una lista de conjuntos de datos públicos en S3.
Para obtener una lista de todos los objetos en un cubo privado, pase su clave AWS y secreta como parámetros. (Como se describió anteriormente, todas las funciones en AWS3 buscarán sus claves como variables de entorno de forma predeterminada, simplificando enormemente el proceso de hacer una solicitud 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 puede ser un poco exigente con respecto a las especificaciones de la región. bucketlist()
devolverá los cubos de todas las regiones, pero todas las demás funciones requieren especificar una región. Se confía en un valor predeterminado de "us-east-1"
si ninguno se especifica explícitamente y la región correcta no se puede detectar automáticamente. (Nota: El uso de una región incorrecta es uno de los errores más comunes, y más difíciles de entender, cuando se trabaja con S3).
Este paquete contiene muchas funciones. Los siguientes son aquellos que serán útiles para trabajar con objetos en S3:
bucketlist()
proporciona los cuadros de datos de los cubos a los que el usuario tiene acceso.get_bucket()
y get_bucket_df()
Proporcione una lista y marco de datos, respectivamente, de objetos en un cubo dado.object_exists()
proporciona una lógica de si existe un objeto. bucket_exists()
proporciona lo mismo para los cubos.s3read_using()
proporciona una interfaz genérica para leer de los objetos S3 utilizando una función definida por el usuario. s3write_using()
proporciona una interfaz genérica para escribir en los objetos S3 utilizando una función definida por el usuarioget_object()
Devuelve una representación vectorial sin procesar de un objeto S3. Esto podría analizarse de varias maneras, como rawToChar()
, xml2::read_xml()
, jsonlite::fromJSON()
, etc. dependiendo del formato de archivo del objeto. save_object()
guarda un objeto S3 a un archivo local especificado sin leerlo en la memoria.s3connection()
proporciona una conexión legible binaria para transmitir un objeto S3 en R. Esto puede ser útil para leer para archivos muy grandes. get_object()
también permite la lectura de rangos de funciones de bytes (consulte la documentación para ver ejemplos).put_object()
almacena un archivo local en un cubo S3. El argumento multipart = TRUE
se puede usar para cargar archivos grandes en piezas.s3save()
guarda uno o más objetos R en memoria a un archivo .rdata en S3 (análogos para save()
). s3saveRDS()
es un análogo para saveRDS()
. s3load()
Carga uno o más objetos en la memoria de un archivo .rData almacenado en S3 (análoga a load()
). s3readRDS()
es un análogo para readRDS()
s3source()
Fuente un script R directamente desde S3Se comportan como probablemente esperarías:
# 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 " )
Último lanzamiento estable de Cran:
install.packages( " aws.s3 " , repos = " https://cloud.R-project.org " )
La última versión de desarrollo de rforge.net:
install.packages( " aws.s3 " , repos = c( " https://RForge.net " , " https://cloud.R-project.org " ))
En Windows, es posible que deba agregar INSTALL_opts = "--no-multiarch"