AWS.S3 เป็นแพ็คเกจไคลเอ็นต์ที่เรียบง่ายสำหรับ Amazon Web Services (AWS) Simple Storage Service (S3) REST API ในขณะที่แพ็คเกจอื่น ๆ เชื่อมต่อ R to S3 พวกเขาทำเช่นนั้นไม่สมบูรณ์ (การแมปเฉพาะจุดสิ้นสุด API บางส่วนกับ R) และการใช้งานส่วนใหญ่ขึ้นอยู่กับเครื่องมือบรรทัดคำสั่ง AWS ซึ่งผู้ใช้อาจไม่ได้ติดตั้งในระบบของพวกเขา
ในการใช้แพ็คเกจคุณจะต้องมีบัญชี AWS และป้อนข้อมูลรับรองของคุณลงในอาร์เคปอร์ของคุณสามารถสร้างขึ้นบนคอนโซลการจัดการ IAM ภายใต้ ปุ่มเข้าถึง ส่วนหัว โปรดทราบว่าคุณสามารถเข้าถึงคีย์ลับของคุณได้เพียงครั้งเดียว หลังจากสร้างขึ้นแล้วคุณจะต้องบันทึกไว้ในตำแหน่งที่ปลอดภัย สามารถสร้าง Keypairs ใหม่ได้ตลอดเวลาหากคุณสูญหายถูกขโมยหรือถูกลืม เครื่องมือโปรไฟล์แพ็คเกจ 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 ในหน่วยความจำหนึ่งรายการขึ้นไปเป็นไฟล์. rdata ใน S3 (แบบอะนาล็อกเพื่อ save()
) s3saveRDS()
เป็นอะนาล็อกสำหรับ saveRDS()
s3load()
โหลดวัตถุอย่างน้อยหนึ่งรายการลงในหน่วยความจำจากไฟล์. rdata ที่เก็บไว้ใน S3 (แบบอะนาล็อกเพื่อ 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"