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 CLI ジョブにとって魅力的な高レベルの API を提供します。最小限の例を次に示します。
; ; 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)