AWS.S3 - это простой клиентский пакет для Amazon Web Services (AWS) Simple Heress Service (S3) REST API. В то время как другие пакеты в настоящее время подключаются к S3, они делают это не полностью (отображая только некоторые из конечных точек API с R), и большинство реализаций полагаются на инструменты командной строки AWS, которые пользователи, возможно, не установили в своей системе.
Чтобы использовать пакет, вам понадобится учетная запись AWS и ввести ваши учетные данные в R. Ваша клавиатура может быть сгенерирована на консоли управления 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
. Таким образом, учетные данные будут получены из роли машины. Пакет может использоваться для изучения общедоступных ведер S3 и общедоступных объектов S3 без регистрации учетной записи AWS. Если в консоли 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.)
Этот пакет содержит много функций. Ниже приведены те, которые будут полезны для работы с объектами в 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()
сохраняет один или несколько объектов R в файле save()
s3saveRDS()
является аналогом для saveRDS()
. s3load()
загружает один или несколько объектов в память из файла .rdata, хранящегося в S3 (аналогично to load()
). s3readRDS()
является аналогом для readRDS()
s3source()
Источет сценарий R непосредственно от S3Они ведут себя так, как вы, вероятно, ожидаете:
# 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 " )
Последний стабильный релиз от Cran:
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"