ハッキングバカ

プログラミングに関するメモ

Amazonica で AWS S3 を使う [Clojure]

Rails における Carrierwave のようなものを Clojure で探していたところ Amazonica というのがあるらしい。
ドキュメントがちょっと分かりにくいので、手順のメモ。

前提として、S3 でバケットを作成しアクセス権限などを設定、アクセスキー、シークレットキーを取得したものとする。

まずはプロジェクトに追加。

; project.clj

[amazonica "0.3.139"]

今回は io ストリームから S3 にアップロードする。

(ns upload
  (:require [amazonica.aws.s3 :as s3])
  (:import [java.io File FileInputStream FileOutputStream]))

(def cred {:access-key "access-key"
           :secret-key "secret-key"
           :endpoint   "ap-northeast-1"})

(defn upload [tempfile size]
  (try
    (with-open [in (new FileInputStream tempfile)]
      (s3/put-object cred
                     :bucket-name "example"
                     :key "test/test.png"
                     :input-stream in
                     :metadata {:content-length size}
                     :return-values "ALL_OLD"))))

無事出来た。

参考:
GitHub - mcohen01/amazonica: A comprehensive Clojure client for the entire Amazon AWS api.
amazonicaとAWS Lambdaで定期的にEBSのスナップショットを作成する - Qiita