centos6.8 上传文件到amazon s3

0.参考

AWS CLI Cinnabd Reference

Possible to sync a single file with aws s3 sync?

How to Install Python 2.7.15 on CentOS/RHEL 7/6 and Fedora 27/26/25

AWS Regions and Endpoints

Downloading folders from aws s3, cp or sync?

Invalidating Files

1、安装python 2.7 、 pip和aws工具

1.1 安装python 2.7

pip is already installed if you are using Python 2 >=2.7.9 or Python 3 >=3.4 downloaded from python.org or if you are working in a Virtual Environment created by virtualenv or pyvenv. Just make sure to upgrade pip.

因为pip只支持python 2.7,centos 6.8默认安装的python版本比较旧,需要安装新版本的python,方法详细见参考链接。

1.2 安装 pip

curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
sudo python2.7 get-pip.py

不指定python版本的话,会有以下出错有类似以下出错:

Traceback (most recent call last):
File "/usr/bin/pip", line 9, in <module>
load_entry_point('pip==10.0.0b2', 'console_scripts', 'pip')()
File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 299, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 2229, in load_entry_point
return ep.load()
File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 1948, in load
entry = __import__(self.module_name, globals(),globals(), ['__name__'])
File "/usr/lib/python2.6/site-packages/pip-10.0.0b2-py2.6.egg/pip/_internal/__init__.py", line 42, in <module>
from pip._internal import cmdoptions
File "/usr/lib/python2.6/site-packages/pip-10.0.0b2-py2.6.egg/pip/_internal/cmdoptions.py", line 16, in <module>
from pip._internal.index import (
File "/usr/lib/python2.6/site-packages/pip-10.0.0b2-py2.6.egg/pip/_internal/index.py", line 526
{str(c.version) for c in all_candidates},
^
SyntaxError: invalid syntax

1.3 安装awscli

python2.7 /usr/local/bin/pip install awscli  --upgrade --user

因为默认的python还是用旧版本,如果直接用pip install awscli ,会有类似以下的出错:

/usr/local/bin/pip: line 4: import: command not found
/usr/local/bin/pip: line 5: import: command not found
/usr/local/bin/pip: line 7: from: command not found
/usr/local/bin/pip: line 10: syntax error near unexpected token `('
/usr/local/bin/pip: line 10: ` sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])'

2. 利用aws上传到s3

2.1 输入aws configure进行配置

AWS Access Key ID [None]: XXXXXXX
AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXXXXXXXXX
Default region name [None]: us-east-2
Default output format [None]: text

Access Key和Secret Access Key存在/.aws/config和/.aws/credentials,必要时可以用vim打开查看,避免因为拷贝了特殊字符,而产生以下出错:

fatal error: An error occurred (InvalidAccessKeyId) when calling the ListObjects operation: The AWS Access Key Id you provided does not exist in our records.

region字段必须填写,否则会出现以下报错:

fatal error: Could not connect to the endpoint URL: "https://xxx.s3.None.amazonaws.com/?prefix=&encoding-type=url"

region具体填写内容可以参考s3 console里的链接,比如登录s3 console,链接比是:https://s3.console.aws.amazon.com//xxxx/xxxx/?region=us-east-2,region就填写:us-east-2。region具体内容见参考链接。

2.2 用户环境配置

需要把aws加到PATH,如把以下加到~/.bashrc:

export PATH=~/.local/bin:$PATH

如果root也要需要执行aws,则root的.bashrc也要添加上述语句。

2.3 使用sudo相关配置

因为sudo会出剔除一些额外添加的PATH,所以在脚本中添加aws命令,再用sudo使用,会有以下报错:

Traceback (most recent call last):
File "/home/xxx/.local/bin/aws", line 19, in <module>
import awscli.clidriver
ImportError: No module named awscli.clidriver

所有在sudo脚本中需要执行以下两个export:

export PATH=/home/xxx/.local/bin:$PATH
export PYTHONPATH=/home/xxx/.local/lib/python2.7/site-packages:$PYTHONPATH
...
aws s3 cp xxx.py s3://xxx/xxx/

3 使用方法

# 同步目录
aws s3 sync . s3://xxx
# 同步文件
aws s3 cp xx s3://xx
# 同步文件到子目录,最后一定要加上"/"
aws s3 cp xx s3://xx/xx/
# 刷新CDN distribution-id可以在后台查看
aws cloudfront create-invalidation --distribution-id=xxxx --paths "/*"

其它命令使用方法见参考链接。

centos6.8 上传文件到amazon s3的更多相关文章

  1. Mac安装aws-cli全过程,通过命令行上传文件到aws s3协议服务器

    第一次使用aws,首先查询了各种资料,我第一步需要做的是安装aws-cli,而安装aws-cli之前需要安装python3,当然你安装python3之前你还需要安装homebrew,当然我正在安装的过 ...

  2. Amazon S3 上传文件 SSL23_GET_SERVER_HELLO握手错误

    题外话:今天偶尔来逛逛,发现我真是懒到家了.居然有半年前的留言我都没有来看过,真对不起留言的同学,希望他的问题已经解决了. 这两三天一直被亚马逊S3上传文件的问题困扰着,直到昨天晚上终于搞定了,工作群 ...

  3. AWS S3 递归上传文件和递归下载文件, 以及S3之间拷贝文件夹

    1. 递归上传文件: aws s3 cp 本地文件夹 s3://bucket-name -- recursive --region us-east-1 2. 递归下载S3上的文件夹: cd  本地下载 ...

  4. 上传文件到aws的s3存储

    只要有aws-cli客户端就可以上传文件到aws的S3存储.可以在任意机器上.这里以centos为例. 1.安装python.pip. # yum install -y python python-p ...

  5. Linux系统通过AWS命令行上传文件至S3

    打开你的AWS控制台: 在IAM中创建一个新用户(比如test),创建时它会自动创建一个用户安全凭证,是由“访问密钥ID”和“私有访问密钥”组成的,请记住它并下载该凭证,后面会用到它: 选择你刚创建的 ...

  6. 实现多线程异步自动上传本地文件到 Amazon S3

    最近抽空做个小工具,使用AWSSDK 对本地文件目录监控,并自动同步上传文件到S3 的过程,使用的是多线程异步上传,针对大文件进行了分块 参考文献: https://www.codeproject.c ...

  7. Laravel 上传文件处理

    文件上传 获取上传的文件 可以使用 Illuminate\Http\Request 实例提供的 file 方法或者动态属性来访问上传文件, file 方法返回 Illuminate\Http\Uplo ...

  8. aws上传文件、删除文件、图像识别

    目录 aws的上传.删除s3文件以及图像识别文字功能 准备工作 安装aws cli 初始化配置AWS CLI s3存储桶开通 图像识别文字功能开通 aws的sdk 上传文件 方法一 方法二 删除文件 ...

  9. Windows下使用xShell向远程Linux上传文件

    上传文件使用rz与sz命令,远程Linux系统上需要安装lrzsz工具包 下载安装包lrzsz-0.12.20.tar.gz:  http://www.linuxidc.com/Linux/2010- ...

随机推荐

  1. shell 部分语法

    语法: variable_name=${variable_name:-xxxx} 如果variable 已经有值,则不被新值覆盖,否则将新值赋给variable split命令切割文件

  2. Python 安装 for Linux

    make后报错: Failed to build these modules:_multiprocessing   binascii           zlib 下载http://www.zlib. ...

  3. JAVA8中Predicate,Consumer,UnaryOperator,Function接口的应用

    笔者平时时间有限,直接贴代码,关于几个接口的差别,可以查看这两篇文章 感受lambda之美,推荐收藏,需要时查阅 https://juejin.im/post/5ce66801e51d455d850d ...

  4. web service----调用第三方接口

    1. 什么是Web Service呢?从表面上看,WebService就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API.这就是说,你能够用编程的方法通过Web调用来实现某个功能的应用 ...

  5. Linux系统编程——基础命令总结

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/asialee_bird/article/ ...

  6. 一加手机2 进入recovery 模式无法挂载USB存储器通过命令窗口上传ROM镜像

    试过3.0.3-0和3.0.3-1的recovery都无法使用“挂载USB大容量存储器”模式,这肯定让很多清掉系统(就是system分区)的小伙伴无力吐槽,因为这样子rom就无法在rec里面从电脑拷到 ...

  7. 通达信金融终端_尘缘整合_V7.12

    http://pan.baidu.com/s/1gvtPO http://pan.baidu.com/s/1xqrk6 通达信金融终端_尘缘整合_V7.12

  8. Tomcat开机自启动,通过服务名重启

    1.将Tomcat注册为服务2.服务开机自启动3.修改Tomcat进程名(待补充)4.通过命令查看日志,不需要进入到日志目录(待补充)5.tomcat进程守护(待补充) 1. 安装tomcat, 此处 ...

  9. [python] 格式化方法 format

    先介绍包含的所有规则 花括号声明{}:用于渲染前的参数引用声明,花括号里可以用数字代表引用参数的序号,或者变量名直接引用. 从format参数引入的变量名 冒号: 字符位数声明 空白自动填补符的声明 ...

  10. PTA(Basic Level)1026.程序运行时间

    要获得一个 C 语言程序的运行时间,常用的方法是调用头文件 time.h,其中提供了 clock() 函数,可以捕捉从程序开始运行到 clock() 被调用时所耗费的时间.这个时间单位是 clock ...