前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >bash实现S3文件上传

bash实现S3文件上传

作者头像
用户2772802
发布2018-08-06 18:07:50
7010
发布2018-08-06 18:07:50
举报
文章被收录于专栏:磨磨谈磨磨谈

本篇来自秦牧羊的Blog,直接上代码

使用bash 实现对S3文件上传,包含metadata,acl、content-type设置,以及文件md5校验。

  1. #!/bin/bash
  2. ACCESS_KEY=""
  3. SECRET_KEY=""
  4. HOST="s3.demo.com"
  5. BUCKET="demo"
  6. CONTENT_TYPE="application/octet-stream"
  7. FILENAME=/tmp/demo
  8. ACL="x-amz-acl:public-read"
  9. META_DATA="x-amz-meta-ukey:value"
  10. FILESIZE=$(stat -c%s "$FILENAME")
  11. FILEMD5=`cat ${FILENAME}| openssl dgst -md5 -binary | openssl enc -base64`
  12. AUTH_PATH="/${BUCKET}${FILENAME}"
  13. CURRENT_TIME=`TZ=GMT LANG=en_US date "+%a, %d %b %Y %H:%M:%S GMT"`
  14. stringToSign="PUT\n${FILEMD5}\n${CONTENT_TYPE}\n${CURRENT_TIME}\n${ACL}\n${META_DATA}\n${AUTH_PATH}"
  15. signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${SECRET_KEY} -binary | base64`
  16. curl -s -v -X PUT "http://${HOST}${AUTH_PATH}" \
  17. -H "Authorization: AWS ${ACCESS_KEY}:${signature}" \
  18. -H "Date: ${CURRENT_TIME}" \
  19. -H "Host: ${HOST}" \
  20. -H "Content-Length: ${FILESIZE}" \
  21. -H "Content-MD5: ${FILEMD5} " \
  22. -H "Content-Type: ${CONTENT_TYPE} " \
  23. -H "${ACL} " \
  24. -H "${META_DATA} " \
  25. -T "${FILENAME}"
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 磨磨谈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档