AWS.S3 ist ein einfaches Client -Paket für die Amazon Web Services (AWS) Simple Storage Service (S3) REST -API. Während andere Pakete derzeit R mit S3 verbinden, tun sie dies unvollständig (die Zuordnung nur einiger der API-Endpunkte auf R) und die meisten Implementierungen basieren auf den AWS-Befehlszeilen-Tools, die Benutzer möglicherweise nicht auf ihrem System installiert haben.
Um das Paket zu verwenden, benötigen Sie ein AWS -Konto und um Ihre Anmeldeinformationen in R einzugeben. Ihr Tastatur kann auf der IAM -Verwaltungskonsole unter den Kurszugriffstasten generiert werden. Beachten Sie, dass Sie nur einmal Zugriff auf Ihren geheimen Schlüssel haben. Nachdem es generiert wurde, müssen Sie es an einem sicheren Ort speichern. Neue Tastaturen können jederzeit generiert werden, wenn Ihre verloren gegangen, gestohlen oder vergessen gegangen ist. Die AWS.IM -Paketprofile profilieren Tools zum Arbeiten mit IAM, einschließlich der Erstellung von Rollen, Benutzern, Gruppen und Anmeldeinformationen programmgesteuert. Es ist nicht erforderlich, IAM -Anmeldeinformationen zu verwenden .
Eine detaillierte Beschreibung, wie Anmeldeinformationen angegeben werden können, finden Sie unter: https://github.com/cloudyr/aws.signature/. Der einfachste Weg ist, um Umgebungsvariablen einfach in der Befehlszeile festzulegen, bevor Sie R oder über eine Renviron.site
oder eine .Renviron
-Datei starten, mit der Umgebungsvariablen während des Starts in R festgelegt werden (siehe ? Startup
). Sie können auch in R eingestellt werden:
Sys.setenv( " AWS_ACCESS_KEY_ID " = " mykey " ,
" AWS_SECRET_ACCESS_KEY " = " mysecretkey " ,
" AWS_DEFAULT_REGION " = " us-east-1 " ,
" AWS_SESSION_TOKEN " = " mytoken " )
Bemerkungen:
AWS_S3_ENDPOINT
Umgebungsvariable auf den entsprechenden Hostnamen. Standardmäßig verwendet das Paket den AWS -Endpunkt: s3.amazonaws.com
. Beachten Sie, dass Sie möglicherweise auch region=""
in der Anforderung festlegen müssen, wenn das Back-End nur einen einzelnen Server ohne Regionen verwendet.aws.ec2metadata
installieren. Auf diese Weise wird die Anmeldeinformationen aus der Rolle der Maschine erhalten. Das Paket kann verwendet werden, um öffentlich zugängliche S3 -Eimer und öffentlich zugängliche S3 -Objekte zu untersuchen, ohne ein AWS -Konto zu registrieren. Wenn Anmeldeinformationen in der AWS -Konsole generiert und in R verfügbar gemacht wurden, finden Sie Ihre verfügbaren Eimer mit:
library( " aws.s3 " )
bucketlist()
Wenn Ihre Anmeldeinformationen falsch sind, gibt diese Funktion einen Fehler zurück. Andernfalls wird eine Liste von Informationen zu den Eimern zurückgegeben, auf die Sie zugreifen können.
Um eine Auflistung aller Objekte in einem öffentlichen Eimer zu erhalten, rufen Sie einfach an
get_bucket( bucket = ' 1000genomes ' )
Amazon unterhält eine Auflistung öffentlicher Datensätze auf S3.
Um eine Auflistung für alle Objekte in einem privaten Eimer zu erhalten, geben Sie Ihren AWS -Schlüssel und geheimen als Parameter weiter. (Wie oben beschrieben, werden alle Funktionen in AWS.S3 standardmäßig nach Ihren Schlüssel als Umgebungsvariablen suchen und den Prozess der Erstellung einer S3 -Anfrage erheblich vereinfacht.)
# 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 kann in Bezug auf Regionspezifikationen etwas wählerisch sein. bucketlist()
gibt Eimer aus allen Regionen zurück, aber alle anderen Funktionen müssen eine Region angeben. Auf einen Standard von "us-east-1"
wird darauf hingewiesen, ob keine explizit angegeben ist und der richtige Bereich nicht automatisch erkannt werden kann. (Hinweis: Die Verwendung eines falschen Bereichs ist eine der häufigsten - und am schwierigsten herauszufinden - bei der Arbeit mit S3.)
Dieses Paket enthält viele Funktionen. Im Folgenden sind diejenigen, die für die Arbeit mit Objekten in S3 nützlich sein werden:
bucketlist()
stellt die Datenrahmen von Eimer bereit, auf die der Benutzer zugreifen kann.get_bucket()
und get_bucket_df()
geben eine Liste und einen Datenrahmen von Objekten in einem bestimmten Bucket an.object_exists()
bietet eine logische, ob ein Objekt existiert. bucket_exists()
bietet dasselbe für Eimer.s3read_using()
bietet eine generische Schnittstelle zum Lesen von S3-Objekten mithilfe einer benutzerdefinierten Funktion. s3write_using()
bietet eine generische Schnittstelle zum Schreiben von S3-Objekten mithilfe einer benutzerdefinierten Funktionget_object()
gibt eine Rohvektor -Darstellung eines S3 -Objekts zurück. Dies kann dann jsonlite::fromJSON()
verschiedene Arten analysiert werden, wie rawToChar()
xml2::read_xml()
save_object()
speichert ein S3 -Objekt in einer angegebenen lokalen Datei, ohne sie in den Speicher zu lesen.s3connection()
bietet eine binäre lesbare Verbindung, um ein S3 -Objekt in R zu streamen. Dies kann zum Lesen für sehr große Dateien nützlich sein. get_object()
erlaubt auch das Lesen von Byte -Bereichen von Funktionen (siehe Dokumentation für Beispiele).put_object()
speichert eine lokale Datei in einen S3 -Bucket. Das multipart = TRUE
Argument kann verwendet werden, um große Dateien in Teilen hochzuladen.s3save()
speichert ein oder mehrere In-Memory-R-Objekte in einer .rdata-Datei in S3 (analog zu save()
). s3saveRDS()
ist ein Analogon für saveRDS()
. s3load()
lädt einen oder mehrere Objekte aus einer in S3 gespeicherten .rdata -Datei (analog zu load()
). s3readRDS()
ist ein Analogon für readRDS()
s3source()
bewertet ein R -Skript direkt aus S3Sie verhalten sich, wie Sie es wahrscheinlich erwarten würden:
# 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 " )
Neueste stabile Veröffentlichung von Cran:
install.packages( " aws.s3 " , repos = " https://cloud.R-project.org " )
Letzte Entwicklungsversion von rforge.net:
install.packages( " aws.s3 " , repos = c( " https://RForge.net " , " https://cloud.R-project.org " ))
Unter Windows müssen Sie möglicherweise INSTALL_opts = "--no-multiarch"
hinzufügen "hinzuzufügen"