前置要求
必须先拥有一个亚马逊AWS的账户
准备
创建存储桶
在正式传输数据之前,我们需要先新建“存储桶”。进入亚马逊S3管理页面,点击创建存储桶。
存储桶名称只能由小写字母、数字、句点 (.) 和连字符 (-) 组成,并且在大区(aws(标准区域)、aws-cn(中国区域)和 aws-us-gov(AWS GovCloud [美国] 区域))中必须唯一。存储桶默认是不允许共有访问的,我们没有特殊需求的话不要更改这一项,以免产生额外扣费。配置完毕后点击页面最下方创建存储桶保存。
在选取区域时,如果没有特殊需求,请优先考虑与你计算机地理位置相近的地区,这样网速会比较好。请注意:一旦创建完成亚马逊是不会主动切换数据存储的区域的,但是如果涉及到跨区域的流量可能会产生额外计费(例如美国东部区域的数据向亚太的S3中转移则会收取0.02刀/GB的费用),具体的费用请以亚马逊官方为准。
当存储桶创建完毕后便可在S3管理页面中看到:
生成安全凭证
前一步中我们关闭了存储桶的公开访问,如果我们需要访问自己的存储桶读取文件则需要通过安全凭证进行验证。
我们首先点击页面右上角自己的用户名,随后点击“我的安全凭证”
随后点击“访问密钥(访问密钥 ID 和秘密访问密钥)”,然后点击“创建我的访问凭据”。请务必将自己的凭据文件下载并存储到一个安全的位置。每个账户能申请两个秘钥ID,一旦申请完毕就再也不能看到密码了,除非删除重新生成,所以在此步骤一定要保管好凭据文件。
下载AWS管理器
执行如下代码:
sudo apt install awscli
pip3 install --upgrade awscli
配置AWS管理器
在开始数据传输前,我们需要先将安全凭证配置到AWS中
在终端中输入aws configure
,随后输入安全凭据的AWSAccessKeyId还有AWSSecretKey,还有默认区域名称,可以空置或者输入你s3存储桶所在区域,例如本例中为“ap-southeast-1”,最后一个空置。随后AWS管理器配置完毕
上传数据到S3存储桶中
代码很简单:
aws s3 sync ./XXX s3://test12564156/XXX
该命令是将当前目录下XXX中所有文件同步至S3存储桶test12564156(改成你自己实际的存储桶名称)的XXX目录下,等待上传完成即可。按照亚马逊的规则,进入S3存储桶的流量是不收取费用的。
下载数据到本地
代码类似:
aws s3 sync s3://test12564156/XXX ./XXX
其实只是将两个路径调换了顺序而已。按照亚马逊的规则,离开S3存储桶的流量是需要收取一定费用的。
费用总结(以新加坡地区为例)
以下总结的费用仅以新加坡地区的S3存储桶为例,其他地区的S3请以亚马逊官方的对应区域为准。
注意一个神坑:在亚马逊S3控制台(也就是网页)浏览存储桶时产生的请求也可能是要付费的! 此费用等同于使用API/SDK。所以不要乱公开自己的存储桶,也不要没事去做大量的刷新操作。
此处的费用总结可能并不完全,仅当做参考,具体的收费详情与扣费标准请以亚马逊官方为准。
白嫖套餐
作为AWS的新用户可以将在一年内的每个月中获得一定数额的白嫖套餐,具体标准如下:
- S3 标准存储类中的 5GB Amazon S3 存储空间
- 20000 个 GET 请求
- 2000 个 PUT、COPY、POST 或LIST 请求
- 15GB 的数据传出量。
数据传入
数据从外部(无论来源)传入S3存储桶的流量都是不计费的。
数据传出
互联网
当S3中的数据传入互联网时,每月拥有1GB的免费流量。随后在10TB以内(不含10TB),将收取0.12刀/GB的流量费用。
亚马逊AWS
当S3中的数据传入AWS的其它区域时,大多数情况将会被收取0.09刀/GB的流量费用。该费用不抵扣任何可能产生的其他相关费用,例如从新加坡的S3转入美区的EC2,需要收取新加坡S3的出站流量费与美区EC2的入站流量费。
总结
当存储桶中有大量数据时,千万不要随意对数据进行任何操作,甚至在网页上的刷新都可能是要付费的。