AWS.S3 est un package client simple pour l'API REST (S3) Service de stockage simple (AWS) (S3). Bien que d'autres packages se connectent actuellement à S à S3, ils le font incomplète (mappant uniquement certains des points de terminaison de l'API à R) et la plupart des implémentations reposent sur les outils de ligne de commande AWS, que les utilisateurs peuvent ne pas avoir installés sur leur système.
Pour utiliser le package, vous aurez besoin d'un compte AWS et pour saisir vos informations d'identification dans R. Votre transparence peut être générée sur la console de gestion IAM sous les clés d'accès à titre. Notez que vous n'avez accès à votre clé secrète qu'une seule fois. Une fois généré, vous devez l'enregistrer dans un emplacement sécurisé. De nouvelles gains clés peuvent être générées à tout moment si le vôtre a été perdu, volé ou oublié. Le package AWS.IAM profil les outils pour travailler avec IAM, notamment en créant des rôles, des utilisateurs, des groupes et des informations d'identification par programme; Il n'est pas nécessaire d' utiliser des informations d'identification IAM.
Une description détaillée de la façon dont les informations d'identification peuvent être spécifiées sont fournies à: https://github.com/cloudyr/aws.signature/. Le moyen le plus simple est de simplement définir des variables d'environnement sur la ligne de commande avant de démarrer R ou via un fichier Renviron.site
ou .Renviron
, qui sont utilisés pour définir des variables d'environnement dans R pendant le démarrage (voir ? Startup
). Ils peuvent également être définis dans R:
Sys.setenv( " AWS_ACCESS_KEY_ID " = " mykey " ,
" AWS_SECRET_ACCESS_KEY " = " mysecretkey " ,
" AWS_DEFAULT_REGION " = " us-east-1 " ,
" AWS_SESSION_TOKEN " = " mytoken " )
Remarques:
AWS_S3_ENDPOINT
sur le nom d'hôte approprié. Par défaut, le package utilise le point de terminaison AWS: s3.amazonaws.com
. Notez que vous devrez peut-être également définir region=""
dans la demande si le back-end utilise un seul serveur sans concept de régions.aws.ec2metadata
. De cette façon, les informations d'identification seront obtenues à partir du rôle de la machine. Le package peut être utilisé pour examiner les seaux S3 accessibles au public et les objets S3 accessibles au public sans enregistrer un compte AWS. Si des informations d'identification ont été générées dans la console AWS et mises à disposition en R, vous pouvez trouver vos seaux disponibles en utilisant:
library( " aws.s3 " )
bucketlist()
Si vos informations d'identification sont incorrectes, cette fonction renvoie une erreur. Sinon, il renverra une liste d'informations sur les seaux auxquels vous avez accès.
Pour obtenir une liste de tous les objets dans un seau public, appelez simplement
get_bucket( bucket = ' 1000genomes ' )
Amazon maintient une liste des ensembles de données publiques sur S3.
Pour obtenir une liste pour tous les objets dans un seau privé, passez votre clé AWS et secret en tant que paramètres. (Comme décrit ci-dessus, toutes les fonctions dans AWS.S3 rechercheront vos clés en tant que variables d'environnement par défaut, simplifiant considérablement le processus de réalisation d'une demande 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 peut être un peu difficile sur les spécifications de la région. bucketlist()
renverra les seaux de toutes les régions, mais toutes les autres fonctions nécessitent de spécifier une région. Une valeur par défaut de "us-east-1"
est invoquée si aucune n'est spécifiée explicitement et que la région correcte ne peut pas être détectée automatiquement. (Remarque: l'utilisation d'une région incorrecte est l'une des erreurs les plus courantes - et les plus difficiles à déterminer lorsque vous travaillez avec S3.)
Ce package contient de nombreuses fonctions. Voici ceux qui seront utiles pour travailler avec des objets dans S3:
bucketlist()
fournit les cadres de données des seaux auxquels l'utilisateur a accès.get_bucket()
et get_bucket_df()
Fournissent respectivement une liste et une trame de données d'objets dans un seau donné.object_exists()
fournit une logique pour savoir si un objet existe. bucket_exists()
fournit la même chose pour les seaux.s3read_using()
fournit une interface générique pour la lecture à partir d'objets S3 à l'aide d'une fonction définie par l'utilisateur. s3write_using()
fournit une interface générique pour l'écriture à des objets S3 à l'aide d'une fonction définie par l'utilisateurget_object()
Renvoie une représentation vectorielle brute d'un objet S3. Cela peut alors être analysé de plusieurs façons, tels que rawToChar()
, xml2::read_xml()
, jsonlite::fromJSON()
, etc. en fonction du format de fichier de l'objet. save_object()
Enregistre un objet S3 dans un fichier local spécifié sans le lire en mémoire.s3connection()
fournit une connexion lisible binaire pour diffuser un objet S3 dans R. Ceci peut être utile pour lire pour des fichiers très grands. get_object()
permet également la lecture des plages d'octets des fonctions (voir la documentation des exemples).put_object()
stocke un fichier local dans un seau S3. L'argument multipart = TRUE
peut être utilisé pour télécharger des fichiers volumineux en morceaux.s3save()
enregistre un ou plusieurs objets R en mémoire à un fichier .rdata dans S3 (analogue pour save()
). s3saveRDS()
est un analogue pour saveRDS()
. s3load()
charge un ou plusieurs objets en mémoire à partir d'un fichier .rdata stocké dans S3 (analogue à load()
). s3readRDS()
est un analogue pour readRDS()
s3source()
s'approvisionne un script R directement à partir de S3Ils se comportent comme vous vous en attendez probablement:
# 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 " )
Dernière version stable de Cran:
install.packages( " aws.s3 " , repos = " https://cloud.R-project.org " )
Version de développement de la dernièreté à partir de rforge.net:
install.packages( " aws.s3 " , repos = c( " https://RForge.net " , " https://cloud.R-project.org " ))
Sur Windows, vous devrez peut-être ajouter INSTALL_opts = "--no-multiarch"