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"