添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
强悍的领结  ·  libcurl ...·  1 年前    · 

http://tmont.com/blargh/2014/1/uploading-to-s3-in-bash

http://sriram-iyengar.blogspot.com/2011/07/aws-create-s3-bucket-using-curl.html

不想使用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}"

注意:如果使用https,请将http替换为https。

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}"
 比角色更简单,比线程更简单。 穿线!
干嘛要等? 如果您正在MRI中执行IO,或者在JRuby中执行任何操作,则可以使用线程来显着加快程序速度。 但是,线程是Ruby中的低级原语,可能很难使用。 Threaded库将一些常见的线程模式实现到易于使用的界面中。 这使您可以专注于编写代码,而Threaded将担心尽快运行该代码。
在您的Gemfile :
 gem 'threaded'
 然后运行$ bundle install
简单的承诺
将您要在后台处理的任务扔到Threaded.later块中:
 promise = Threaded . later do
  require "YAML"
  YAML . load `curl https://s3-external-1.amazonaws.com/heroku-buildpack-ruby/ruby_versio
                                    现有需求,,需要使用shell的curl命令发送s3请求进行测试,s3命令包括CreateBucket, PutObject, GetObject, ListObjects, 以及分段上传请求CreateMultiPartUpload, UploadPart, CompleteMultiPartUpload。验证算法使用V2。
                                    亚马逊-s3-php
 受启发,这是一个简单且可配置的 S3 PHP 库。 它被编写为尽可能轻量级,同时仍然允许访问 AWS 的所有功能(例如服务器端加密)。
 此外,在执行批量操作时,使用curl_multi_exec (而不是curl_exec )以获得更好的性能。
$client = new S3($access_key, $secret_key [, $endpoint = null]); 
指定自定义卷曲选项
$client->useCurlOpts($curl_opts_array)
 为 S3 类提供用于发出请求的任何 curl 选项。
 默认情况下传递以下选项以防止“挂起”请求: 
curl_opts = array (
    CURLOPT_CONNECTTIMEOUT => 30 ,
    CURLOPT_LOW_SPEED_LIMIT => 1 ,
OO方法(例如,$ s3-> getObject(...)):
 $ s3 = new S3 ( $ awsAccessKey , $ awsSecretKey );
 静态地(例如,S3 :: getObject(...)):
 S3 :: setAuth ( $ awsAccessKey , $ awsSecretKey );
对象操作
放置文件中的对象:
 S3 :: putObject ( S3 :: inputFile ( $ file , false ), $ bucketName , $ uploadName , S3 :: ACL_PUBLIC_READ )
 从字符串中放入对象并设置其Content-Type:
 S3 :: putObject ( $ string , $ bucketName , $ uploadName 
                                    有5个非常简单好用 S3 客户端工具,可以方便接入对象存储,让你昂你领成本的上手对象存储,还能够抓一抓 S3 协议的包。
s3curl
s3curl 是命令行工具,开源免费使用,非常轻量,也是我平时用的最多的一个工具。s3curl 是 perl 写的逻辑脚本, 本质上,就是帮你构造一个合法的 S3 请求,通过 curl 工具发出去。所以你能做到非常基础的行为,了解到 S3 请求的本质。
在u...
                                    我看不到签名请求部分。确保为put对象获取签名的URL。它是我脚本中的工作代码:s3.getSignedUrl('putObject', params, function(err, urlsign) {if (err) console.log(err);var output = {url: urlsign};cb(null, output);});尝试通过如下简单的put请求将对象放入bucket...
                                    NooBaa运算符
NooBaa是面向混合和多云环境的对象数据服务。 NooBaa在kubernetes上运行,为集群内部和外部的客户端提供S3对象存储服务(以及带有存储桶触发器的Lambda),并使用集群内部或外部的存储资源以及灵活的放置策略来自动化数据使用案例。
安装最新的操作员CLI(或从选择): 
OS= " linux "
OS= " mac "
VERSION= $( curl -s https://api.github.com/repos/noobaa/noobaa-operator/releases/latest | jq -r ' .name ' )
curl -LO https://github.com/noobaa/noobaa-operator/releases/download/ $VERSION /noobaa- $OS - $VERSION
#!/bin/bash
date=$(for i in $(date "+%H") ; do date "+%a, %d %b %Y $(( 10#$i-8)):%M:%S GMT" ; done)
token="token"
secret="秘钥"
query2="路径,不填应该是这个token下面的根目录"
header="GET\n\n\n${date}\n/${query2}"
                                    在本文中,我们将设置一个示例情况,展示如何使用开源Squid代理从Amazon虚拟私有云(VPC)中控制对Amazon简单存储服务(S3)的访问。首先,您将配置Squid以允许访问Linux Yum存储库。接下来,您将配置Squid,以限制对已批准的Amazon S3 bucket列表的访问。然后,您将配置Squid以根据URL直接流量,将一些请求发送到Internet网...
s3fs中,添加参数 -f -d -o f2 可进行日志输出,其中 -f 参数让日志输出到屏幕,如果不加-f,则会写入/var/log/message文件夹中(文档上这样写的,但实际未找到该文件夹,所以加上-f)