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)