الأهداف | الاستخدام | التغييرات
وظائف مساعدة بسيطة لتمييز الملفات المحلية ومزامنتها مع مجموعات S3.
[confetti/s3-deploy " 0.1.4 " ] ; ; latest release
تعمل معظم الوظائف التي تعد جزءًا من واجهة برمجة التطبيقات العامة لهذه المكتبة على خرائط بسيطة مثل ما يلي، وتسمى أيضًا file-maps
:
{ :s3-key " desired/destination/file.txt "
:file #object[java.io.File " file.txt.gz " ]
:metadata { :content-encoding " gzip " }}
باستخدام file-maps
نقوم بفصل بنية نظام الملفات عن البنية التي نريد تحقيقها في النهاية في مجموعة S3 المستهدفة.
افتراضيًا، يتم اشتقاق البيانات التعريفية
:content-type
من امتداد القيمة التي قدمتها كـ:s3-key
.
المزامنة ممكنة عبر confetti.s3-deploy/sync!
:
( confetti.s3-deploy/sync! creds bucket-name file-maps)
لإنشاء file-maps
من دليل، تقوم هذه المكتبة بشحن مساعد صغير dir->file-maps
الذي سيقوم بإنشاء خرائط الملفات:
( dir->file-maps ( io/file " src " ))
; ;=> [{:s3-key "confetti/s3_deploy.clj",
; ; :file #object[java.io.File 0x4795c68f "/Users/martin/code/confetti-s3-deploy/src/confetti/s3_deploy.clj"]}]
اعتمادًا على حالة الاستخدام الخاصة بك، سوف تحتاج إلى إنشاء وظيفة إنشاء file-maps
الخاصة بك. وظائف المستوى الأدنى متاحة أيضًا:
( confetti.s3-deploy/diff* bucket-objects file-maps)
يمكن استخدامه للحصول على اختلاف بين كائنات الدلاء ومجموعة معينة من file-maps
.
( confetti.s3-deploy/calculate-ops bucket-objects file-maps)
سيُرجع متجهًا للعمليات اللازمة لجعل المجموعة متزامنة مع file-maps
المتوفرة.
لمزيد من التفاصيل التحقق من التنفيذ.
يوفر s3-deploy
واجهة برمجة تطبيقات عالية المستوى مما يجعلها جذابة لوظائف واجهة سطر الأوامر (CLI). هنا مثال الحد الأدنى:
; ; cat deploy.clj
( require '[confetti.s3-deploy :as s3]
'[clojure.java.io :as io])
( def dir-to-sync ( io/file " public " ))
( s3/sync!
{ :access-key ( System/getenv " AWS_ACCESS_KEY " )
:secret-key ( System/getenv " AWS_SECRET_KEY " )}
( System/getenv " S3_BUCKET_NAME " )
( s3/dir->file-maps dir-to-sync)
{ :dry-run? true
:report-fn ( fn [{ :keys [s3-key op]}]
( println op s3-key))})
والتي يمكن تشغيلها مع:
clj -Sdeps '{:deps {confetti/s3-deploy {:mvn/version "0.1.3"}}}' deploy.clj
Inst
relative-path
بحيث تعمل بشكل صحيح على نظام التشغيل Windows. (#16)