O AWS.S3 é um pacote de clientes simples para a API REST Amazon Web Services (AWS) (S3). Enquanto outros pacotes atualmente se conectam R ao S3, eles o fazem incompletamente (mapeando apenas alguns dos pontos de extremidade da API para R) e a maioria das implementações depende das ferramentas da linha de comando da AWS, que os usuários podem não ter instalado em seu sistema.
Para usar o pacote, você precisará de uma conta da AWS e inserir suas credenciais em R. Seu teclado pode ser gerado no console de gerenciamento da IAM sob as teclas de acesso de cabeçalho. Observe que você só tem acesso à sua chave secreta uma vez. Depois de gerado, você precisa salvá -lo em um local seguro. Os novos teclados podem ser gerados a qualquer momento, se o seu foi perdido, roubado ou esquecido. As ferramentas de perfis de pacote do AWS.iam para trabalhar com IAM, incluindo a criação de funções, usuários, grupos e credenciais programaticamente; Não é necessário usar credenciais do IAM.
Uma descrição detalhada de como as credenciais podem ser especificadas é fornecida em: https://github.com/cloudyr/aws.signature/. A maneira mais fácil é simplesmente definir variáveis de ambiente na linha de comando antes de iniciar r ou através de um arquivo Renviron.site ou .Renviron , que são usados para definir variáveis de ambiente em r durante a inicialização (consulte ? Startup ). Eles também podem ser definidos em r:
Sys.setenv( " AWS_ACCESS_KEY_ID " = " mykey " ,
" AWS_SECRET_ACCESS_KEY " = " mysecretkey " ,
" AWS_DEFAULT_REGION " = " us-east-1 " ,
" AWS_SESSION_TOKEN " = " mytoken " )Observações:
AWS_S3_ENDPOINT para o nome do host apropriado. Por padrão, o pacote usa o endpoint da AWS: s3.amazonaws.com . Observe que você pode precisar definir region="" na solicitação também se o back-end usar apenas um único servidor sem nenhum conceito de regiões.aws.ec2metadata . Dessa forma, a credencial será obtida a partir do papel da máquina. O pacote pode ser usado para examinar baldes S3 acessíveis publicamente e objetos S3 acessíveis publicamente sem registrar uma conta da AWS. Se as credenciais foram geradas no console da AWS e disponibilizadas em r, você poderá encontrar seus baldes disponíveis usando:
library( " aws.s3 " )
bucketlist()Se suas credenciais estiverem incorretas, essa função retornará um erro. Caso contrário, ele retornará uma lista de informações sobre os baldes aos quais você tem acesso.
Para obter uma lista de todos os objetos em um balde público, basta ligar
get_bucket( bucket = ' 1000genomes ' )A Amazon mantém uma lista de conjuntos de dados públicos no S3.
Para obter uma listagem para todos os objetos em um balde privado, passe sua chave AWS e segredo como parâmetros. (Como descrito acima, todas as funções no AWS.S3 procurarão suas chaves como variáveis de ambiente por padrão, simplificando bastante o processo de fazer uma solicitação 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 " ) O S3 pode ser um pouco exigente com as especificações da região. bucketlist() retornará baldes de todas as regiões, mas todas as outras funções exigem especificar uma região. Um padrão de "us-east-1" é invocado se nenhum for especificado explicitamente e a região correta não puder ser detectada automaticamente. (Nota: o uso de uma região incorreta é um dos erros mais comuns - e mais difíceis de descobrir - ao trabalhar com S3.)
Este pacote contém muitas funções. A seguir, aqueles que serão úteis para trabalhar com objetos em S3:
bucketlist() fornece os quadros de dados de baldes aos quais o usuário tem acesso.get_bucket() e get_bucket_df() fornecem uma lista e um quadro de dados, respectivamente, de objetos em um determinado balde.object_exists() fornece um lógico para se existe um objeto. bucket_exists() fornece o mesmo para baldes.s3read_using() fornece uma interface genérica para ler os objetos S3 usando uma função definida pelo usuário. s3write_using() fornece uma interface genérica para gravar objetos S3 usando uma função definida pelo usuárioget_object() retorna uma representação de vetor bruto de um objeto S3. Isso pode ser analisado de várias maneiras, como rawToChar() , xml2::read_xml() , jsonlite::fromJSON() e assim por diante, dependendo do formato de arquivo do objeto. save_object() salva um objeto S3 em um arquivo local especificado sem lê -lo na memória.s3connection() fornece uma conexão legível binária para transmitir um objeto S3 em R. Isso pode ser útil para leitura para arquivos muito grandes. get_object() também permite a leitura de intervalos de bytes de funções (consulte a documentação para exemplos).put_object() armazena um arquivo local em um balde S3. O argumento multipart = TRUE pode ser usado para fazer upload de arquivos grandes em peças.s3save() salva um ou mais objetos R na memória em um arquivo .rdata em S3 (analogamente para save() ). s3saveRDS() é um análogo para saveRDS() . s3load() carrega um ou mais objetos na memória de um arquivo .rdata armazenado em S3 (analogamente para load() ). s3readRDS() é um análogo para readRDS()s3source() Fontes Um script R diretamente do S3Eles se comportam como você provavelmente esperaria:
# 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 lançamento estável de Cran:
install.packages( " aws.s3 " , repos = " https://cloud.R-project.org " )Lastest Development Version do Rforge.net:
install.packages( " aws.s3 " , repos = c( " https://RForge.net " , " https://cloud.R-project.org " )) No Windows, você pode precisar adicionar INSTALL_opts = "--no-multiarch"