1、概念
工作需要测试数据库从 S3(Simple Storage Service)导入数据文件,公司有私有S3环境。
S3是一种对象存储,数据模型很简单,就是key-value,key就是一个任意字符串,value是一个文件。
S3的功能是上传一个文件,并且标记为key,以后就用key获取这个文件。
S3中还有一个bucket的概念,从用户角度可以理解为一个命名空间,和S3的key组合起来,以便形成目录的形式,bucket看起来也像是一个目录,例如:
s3://test-for-student-1308700295/regression/segcompaction/segcompaction.orc
其中test-for-student-1308700295就是一个bucket名称。
S3客户端与服务器的交互通过REST,也就是 http+json也可能用https+json。
使用某个客户端程序可以交互式的访问,例如:s3cmd或者aws cli,其中s3cmd是python程序,可以通过python的pip安装。
访问S3服务,客户端由三个必要信息:
AK(Access Key)-- 一个字符串
SK (Secret Key)-- 一个字符串
endpoint -- S3服务器的IP和端口号 或者 域名
例如:
endpoint = http://172.32.148.56:2080
AK =UYLM5WCCFLX6MWRBYP46
SK =vluS7nv2dSrC7ClXyWQ5NKMQddA7a387Y5mShRHP
或者
endpoint = cos.ap-beijing.myqcloud.com
AK =AKIDd9RVMzIOI0V7W
SK =4uWxMhqnW3Plz97sPjqlSUXO1RhokRuOA
region -- 是可选的,如果没有提供,可以用默认值US(同事告诉我的)
bucket -- 用户上传文件时,可以自己创建,第一次访问时也不是必须的
2、s3cmd的安装和使用:
pip3 install s3cmd -i https://pypi.tuna.tsinghua.edu.cn/simple
这篇博客很好的介绍了 s3cmd的配置和使用:
https://www.cnblogs.com/sunhongleibibi/p/11661123.html
附一下我的s3cmd配置文件(~/.s3cfg)的关键参数 :
access_key = UYLM5WCCFLX6MWRBYP46
secret_key = vluS7nv2dSrC7ClXyWQ5NKMQddA7a387Y5mShRHP
host_base = 172.32.148.56:2080 #相当于endpoint
use_https = False
查看bucket:
s3cmd ls
查看bucket下的key:
s3cmd ls s3://my-bucket-name
上传:
s3cmd put abc.txt s3://my-bucket-name/abc.txt
下载:
s3cmd get s3://my-bucket-name/abc.txt .
创建bucket:
s3cmd mb s3://my-bucket-name2
3、aws cli的安装和使用
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip # 解压后目录aws
sudo ./aws/install
安装完,在用户的 ~/.aws下有config和credentials,在config里配置endpoint,region等信息,在credentials里配置AK,SK:
credentials
configs
这个endpoint_url可以写<IP>:<PORT>,也可以写http+域名或https+域名,如果只写域名,aws cli默认是用https,即443端口。
下载S3上的文件对象,bucket为test-for-student:
aws s3 cp s3://test-for-student/segcompaction.orc .