AWS.S3 هي حزمة عميل بسيطة لـ Amazon Web Services (AWS) خدمة التخزين البسيطة (S3) REST API. بينما تقوم الحزم الأخرى حاليًا بتوصيل R إلى S3 ، فإنها تفعل ذلك بشكل غير مكتمل (رسم خرائط فقط بعض نقاط نهاية API إلى R) وتعتمد معظم التطبيقات على أدوات خط الأوامر AWS ، والتي ربما لم يتم تثبيتها على نظامهم.
لاستخدام الحزمة ، ستحتاج إلى حساب AWS وإدخال بيانات الاعتماد الخاصة بك في R. يمكن إنشاء keypair الخاص بك على وحدة التحكم في إدارة IAM ضمن مفاتيح الوصول إلى العنوان. لاحظ أنه يمكنك الوصول فقط إلى المفتاح السري مرة واحدة. بعد إنشاءه ، تحتاج إلى حفظه في موقع آمن. يمكن إنشاء Keypairs الجديد في أي وقت إذا فقدت أو سرقت أو نسيان. AWS.IAM Package Presilies Tools للعمل مع 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"