테스트가 패스 됨. ㅎㄷㄷ
아마존 ㅅㅂ 문서가 완벽하지 않아서 막판에 에러 코드 보면서 문서엔 없는 거 추가해서 결국 해냄.
이것으로 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,
...}
이게 뭐여
아마존이 클로저 api를 제공해주나? 걍 자바 api주는거 갖다 쓰는거임?
뇌지랄/이거 아마존 S3에 클라에서 직접 업로드 할 수 있게 하기위한 보안 삽질. @/
https://github.com/mcohen01/amazonica
아마존 제공 자바 api를 reflection을 이용 Clojure 프렌들리 라이브러리로 바꿔줌. 내가 한 삽질은 그건 아니고
http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-UsingHTTPPOST.html
이걸 구현한거지 ㅇㅇ
이게 되면 스케일링이 개편하걸랑
이런거 한번 해보면 어떻게 하면 웹서비스에서 one time pass 구현하면 좋을까 알게 됨. 쉽게 말해 아마존이 한거대로 베끼는 거지 ㅋㅋ
울 회사가 좀 이런 분야랑 연관이 있어서 근가 생짜 s3 업로드하는건 주임이상은 이뭐병하면 다하는디;; 역시 쉽다는거 기준은 상대적이구나 한다능. 야이미친흉 글보면 후덜덜인데 말이지
하면->아니면
ㄴ 엥 정말임? 내가 아마존 문서만 보고 하루 정도 삽질한건디 코딩몬 횽네 ㅎㄷㄷ한데! 근데 횽네는 policy expiration 얼마나 줌? 한 1분 주면 적당한가?
찾아보니 최초 커넥션이 중요하다니까 10초 정도면 떡울 치겠네
하루만에 한다는 얘기는 아닌데 ㅎㄷㄷ