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)