最近使用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. java新手的session初体验

    众所周知,session作为保存我们用户对话所需要的信息的对象,在我们的项目中必不可少.作为菜鸟学习java的第一课就是了解它的思想和用法,在以后的学习中,逐渐学习和总结,从基础到高级,慢慢学会应用. ...

  2. 清除 Xcode 项目缓存

    运行错误.编译错误.发布错误可尝试清除 Xcode 缓存:清除 Xcode 缓存也能减少占用磁盘空间. (1)前往文件夹(control+shift+G),删除里面的文件: /Users/用户名/Li ...

  3. 周期性调度器scheduler_tick

    周期性调度器由中断实现,系统定时产生一个中断,然后启动周期性调度器,周期性调度器执行过程中要关闭中断, 周期性调度器执行完毕后再打开中断(handle_IRQ_event,  IRQF_DISABLE ...

  4. Lambda表达式树解析(下)包含自定义的provider和查询

    概述 前面章节,总结了Lambda树的构建,那么怎么解析Lambda表达式树那?Lambda表达式是一种委托构造而成,如果能够清晰的解析Lambda表达式树,那么就能够理解Lambda表达式要传递的正 ...

  5. YII创建应用

    创建第一个应用 打开cmd,切换到appserv的www目录下,输入: D:\AppServ\www>yii6\framework\yiic webapp D:wamp\www\mydemos

  6. 跨域、跨服务器调用时候session丢失的问题

    最近新进一个公司,做的项目是手机支付系统.由于涉及到金钱相关的,所以安全性要求特别的高.项目分了很多个子系统,在部署(测试)的时候是每个Tomcat上面只放一个子系统.比如现在有5个子系统,那么就会对 ...

  7. 系统windows进程的资源分配

    http://www.captaincodeman.com/2011/02/27/limit-mongodb-memory-use-windows/ CaptainCodeman About Arch ...

  8. Grunt--Less

    摘要: 之前介绍了自动构建工具Grunt,其中有一个模块是"grunt-contrib-less",下面是配置Grunt自动编译less文件. 安装: Grunt是基于node,功 ...

  9. Iframe难点备忘

    1 iframe处理session过期,框架页面跳转登录页面的问题 <script language="JavaScript"> if (window != top) ...

  10. ios开发之-- tableview/collectionview获取当前点击的cell

    方法如下: 一般collectionView 或者 tableview都有自带的点击函数,如下: , collectionView -(void)collectionView:(UICollectio ...