最近使用curl对s3进行接口测试,本想写个总结文档,但没想到已有前辈写了,就直接搬过来做个记录吧,原文见:

http://blog.csdn.net/ganggexiongqi/article/details/50483389

不想使用s3cmd/s3curl等工具或者第三方库来测试RadosGW提供的s3服务。所以google了一把,已经有人做过了,详见参考链接。

贴个shell脚本做个记录。

1. 创建bucket

创建名为"mygod"的bucket

bucket="mygod"
dateValue=`date -R`
resource="/${bucket}/"
contentType="application/octet-stream"
stringToSign="PUT\n\n\n${dateValue}\n${resource}"
s3Key="6R2MJWR863EREUDD0KTZ"
s3Secret="74eHNNQa1oLBlvZfO2CC2hIU8cobSYxTgeRDtXtH"
signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64`
curl -v -X PUT "http://${bucket}.s3.mydomain.com" \
-H "Host: ${bucket}.s3.mydomain.com" \
-H "Date: ${dateValue}"\
-H "Authorization: AWS ${s3Key}:${signature}"

  

2. 上传对象到bucket

下面的脚本就是将@file上传到@url指定的存储服务集群中的@bucket下,对象的名字叫@objname。

file=./c.zip
objname="testfile"
bucket=another
url="s3.mydomain.com"
resource="/${bucket}/${objname}"
contentType="application/x-compressed-tar"
dateValue=`date -R`
stringToSign="PUT\n\n${contentType}\n${dateValue}\n${resource}"
s3Key="6R2MJWR863EREUDD0KTZ"
s3Secret="74eHNNQa1oLBlvZfO2CC2hIU8cobSYxTgeRDtXtH"
signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64`
curl -X PUT -T "${file}" \
-H "Host: ${bucket}.${url}" \
-H "Date: ${dateValue}" \
-H "Content-Type: ${contentType}" \
-H "Authorization: AWS ${s3Key}:${signature}" "http://${bucket}.${url}/${objname}"

  

3. 获取object

file="./myfile"
objname="testfile"
bucket=another
url="s3.mydomain.com"
resource="/${bucket}/${objname}"
contentType="application/x-compressed-tar"
dateValue=`date -R`
stringToSign="GET\n\n${contentType}\n${dateValue}\n${resource}"
s3Key="6R2MJWR863EREUDD0KTZ"
s3Secret="74eHNNQa1oLBlvZfO2CC2hIU8cobSYxTgeRDtXtH"
signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64`
curl -o ${file} -X GET \
-H "Host: ${bucket}.${url}" \
-H "Date: ${dateValue}" \
-H "Content-Type: ${contentType}" \
-H "Authorization: AWS ${s3Key}:${signature}" "http://${bucket}.${url}/${objname}"

  

  1. bucket="mygod"
  2. dateValue=`date -R`
  3. resource="/${bucket}/"
  4. contentType="application/octet-stream"
  5. stringToSign="PUT\n\n\n${dateValue}\n${resource}"
  6. s3Key="6R2MJWR863EREUDD0KTZ"
  7. s3Secret="74eHNNQa1oLBlvZfO2CC2hIU8cobSYxTgeRDtXtH"
  8. signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64`
  9. curl -v -X PUT "http://${bucket}.s3.mydomain.com" \
  10. -H "Host: ${bucket}.s3.mydomain.com" \
  11. -H "Date: ${dateValue}"\
  12. -H "Authorization: AWS ${s3Key}:${signature}"

使用curl进行s3服务操作的更多相关文章

  1. python操作s3服务中的文件

    亚马逊云aws提供了s3服务.国内一些云厂商也用了s3技术.要操作s3服务器中的文件需要用到boto这个python包.下面的代码是一个简单例子. #! /usr/bin/python # -*-co ...

  2. 【C#】分享基于Win32 API的服务操作类(解决ManagedInstallerClass.InstallHelper不能带参数安装的问题)

    注:这里的服务是指Windows 服务. ------------------201508250915更新------------------ 刚刚得知TransactedInstaller类是支持带 ...

  3. Dynamics AX 2012 R2 在增强入站端口中找不到自定义服务操作

        Reinhard写好自定义服务A,添加好服务操作A1,A2,A3.....     然后,Reinhard在增强的入站端口,选择服务操作时,却找不到这些A1,A2,A3.     查找相关资料 ...

  4. WCF 客户端调用服务操作的两种方法

    本节的主要内容:1.通过代理类的方式调用服务操作.2.通过通道的方式调用服务操作.3.代码下载 一.通过代理类的方式调用服务操作(两种方式添加代理类) 1.手动编写代理类,如下: 客户端契约: usi ...

  5. delphi xe10 手机程序事件服务操作、退出键操作

    //程序事件服务操作 var FMXApplicationEventService: IFMXApplicationEventService; begin if TPlatformServices.C ...

  6. S3 服务(Simple Storage Service简单存储服务) 简介(与hdfs同一级)

    图1  spark 相关 亚马逊云存储之S3(Simple Storage Service简单存储服务) (转 ) S3是Simple Storage Service的缩写,即简单存储服务.亚马逊的名 ...

  7. AWS S3服务使用

    AWS S3是亚马逊的一种文件存储服务使用方便. 一.配置服务 public static class AWS_S3ClientInfo { private static readonly strin ...

  8. ZooKeeper服务-操作(API、集合更新、观察者、ACL)

    操作 create:创建一个znode(必须要有父节点)delete:删除一个znode(该znode不能有任何子节点)exists:测试一个znode是否存在并且查询它的元数据getACL,setA ...

  9. Delphi 服务操作

    unit Service; interface uses Windows,Messages,SysUtils,Winsvc,Dialogs; function  StartServices(Const ...

随机推荐

  1. 解决webStorm没有cesium代码自动提示的方法

    Webstorm中默认是没有cesium代码提示的,但是可以通过设置让它有智能提示 File -> Settings -> Languages&Frameworks -> J ...

  2. HTML5标签canvas制作平面图

    摘要: HTML5规范已经完成了,互联网上已经有数不清的站点使用了HTML5.从现在开始研究HTML5,本文是自己在学习canvas过程中的记录,以备后需. 历史: 这个 HTML 元素是为了客户端矢 ...

  3. ASP.NET Web API 使用Swagger使用笔记

    https://www.cnblogs.com/lhbshg/p/8711604.html 最近换了工作,其中Webapi这块没有文档,之前有了解过Swagger借此机会好好整理下常用的地方分享给有需 ...

  4. Ubuntu 16.04服务器 软件的安装及配置

    SSH的安装及配置 SSH分客户端openssh-client和openssh-server 如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则 ...

  5. WPF中的命令与命令绑定导航

    1.WPF中的命令与命令绑定(一) (引入命令) 2.WPF中的命令与命令绑定(二)(详细介绍命令和命令绑定)

  6. vs2010,vs2012如何连接vss2005,vss2008

    打开vs2010.依次打开[工具]-[选项]-[源代码管理] 这个时候可以看到管理插件中有Microsoft Visual SourceSafe选项(若没有该选项,重新安装VSS即可). 连接上项目后 ...

  7. iOS开发--设置UIButton

    1.设置title [btn setTitle: @"search" forState: UIControlStateNormal]; 2.设置字体 //[btn setFont: ...

  8. 数字图像处理笔记与体会(一)——matlab编程基础

    最近开始学习数字图像处理,使用matlab实现,下面我就来记录笔记和体会,一方面是给大家提供参考,另一方面是防止我忘记了. 复习一下: 1.数字图像是用一个数字矩阵来表示的,数字阵列中的每个数字,表示 ...

  9. gitlab数据迁移

    由于gitlab是默认安装的,随着公司代码越来越多,导致gitlab数据目录空间不足,出现无法访问gitlab了. 磁盘空间: /home有1.8T的空间一直没用上! 现在打算将原有代码目录迁移到新目 ...

  10. 冥想_ PHP抽奖程序概率算法

    //概率算法,6个奖项 $prize_arr = array( '0' => array('id'=>1,'prize'=>'iphone6','v'=>1), '1' =&g ...