테스트가 패스 됨. ㅎㄷㄷ


아마존 ㅅㅂ 문서가 완벽하지 않아서 막판에 에러 코드 보면서 문서엔 없는 거 추가해서 결국 해냄.


이것으로 EC2 인스턴스 거치지 않고 바로 빡쎈 보안 과정을 거쳐서 S3로 직접 업로드 하게 되었다. 

여기서 절약한 돈은 내 연봉에 올려달라고 할 예정임 ㅎㅎ




(defn test-s3-upload [s3-upload-form-entries]

  (let [entries (dissoc (assoc s3-upload-form-entries

                               :file

                               (clojure.java.io/file "~/Videos/spd1/47UBCSPDXXT215-V009400_DTH.mp4")) :action :filename)]

    

    (->> [:key :acl :success_action_status :Content-Type

          :X-Amz-Credential :X-Amz-Algorithm :X-Amz-Date

          :Policy :X-Amz-Signature :file]

         (mapv (fn [k]

                 (array-map :name (name k)

                            :content (let [v (k entries)]

                                       (condp instance? v

                                         clojure.lang.Keyword (name v)

                                         Long (str v)

                                         String v

                                         java.io.File v)))))

         (array-map :multipart)

         (client/post (:action s3-upload-form-entries)))))


(-> (s3-upload-form-entries {:type "video" :company-name "Company" :company-id 1})

                    test-s3-upload)

;;=>

 {:status 204,

 :headers

 {"x-amz-id-2" "RXYKwMQGCQwiX8JgHpOtsNiZFu9xNDHPIGiwILZmZuvYJhqJ2vyQXfyfk/Hgf8IrtTcS/DqSI8M=",</p><p>  "x-amz-request-id" "3876D2246100C4CD",

...},

 :body nil,

 :request-time 89496,

...}