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
기능 구현을 개선합니다. (#16)