AWS.S3은 AWS (Amazon Web Services) 간단한 스토리지 서비스 (S3) REST API를위한 간단한 클라이언트 패키지입니다. 다른 패키지는 현재 R을 S3에 연결하지만 불완전하게 (API 엔드 포인트 중 일부만 R에 매핑) 대부분의 구현은 AWS 명령 줄 도구에 의존하여 사용자가 시스템에 설치하지 않았을 수 있습니다.
패키지를 사용하려면 AWS 계정이 필요하고 R에 자격 증명을 입력하려면 IAM Management Console에서 Heading Access Keys 의 KyyPair를 생성 할 수 있습니다. 비밀 키에 한 번만 액세스 할 수 있습니다. 생성 된 후에는 안전한 위치에 저장해야합니다. 당신의 손실, 도난 또는 잊혀진 경우 언제든지 새로운 키패 셔츠를 생성 할 수 있습니다. AWS.IAM 패키지는 프로그래밍 방식으로 역할, 사용자, 그룹 및 자격 증명을 만드는 것을 포함하여 IAM과 함께 작업하기위한 도구를 프로파일 링합니다. iAM 자격 증명을 사용할 필요는 없습니다.
자격 증명을 지정할 수있는 방법에 대한 자세한 설명은 https://github.com/cloudyr/aws.signature/에 제공됩니다. 가장 ? Startup
방법은 R을 시작하기 전에 또는 Renviron.site
또는 .Renviron
파일을 통해 명령 줄에서 환경 변수를 간단히 설정하는 것입니다. 그들은 또한 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
설치해야합니다. 이런 식으로 자격 증명은 기계의 역할에서 얻을 수 있습니다. 이 패키지는 AWS 계정을 등록하지 않고 공개적으로 액세스 가능한 S3 버킷과 공개적으로 액세스 할 수있는 S3 객체를 검사하는 데 사용할 수 있습니다. 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 객체를 s3의 .rdata 파일에 저장합니다 ( save()
). s3saveRDS()
saveRDS()
에 대한 아날로그입니다. s3load()
s3에 저장된 .rdata 파일에서 하나 이상의 객체를 메모리에로드합니다 ( load()
와 유사하게). s3readRDS()
readRDS()
의 아날로그입니다.s3source()
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"
추가해야 할 수도 있습니다.