เป้าหมาย | การใช้งาน | การเปลี่ยนแปลง
ฟังก์ชันยูทิลิตี้อย่างง่ายเพื่อกระจายและซิงค์ไฟล์ในเครื่องด้วยบัคเก็ต S3
[confetti/s3-deploy " 0.1.4 " ] ; ; latest release
ฟังก์ชันส่วนใหญ่ที่เป็นส่วนหนึ่งของ API สาธารณะของไลบรารีนี้ทำงานบนแผนที่แบบง่ายดังต่อไปนี้ หรือเรียกอีกอย่างว่า 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
มอบ API ระดับสูงที่ทำให้น่าสนใจสำหรับงาน 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)