s3 deploy
1.0.0
目標|用途 |變化
用於比較本機檔案和 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)