Amazon Simple Storage Service (Amazon S3) 是一种面向 Internet 的存储服务。您可以通过 Amazon S3 随时在 Web 上的任何位置存储和检索的任意大小的数据。您可以使用 AWS 管理控制台简单而直观的 web 界面来完成这些任务。
单击 AWS Identity and Access Management 控制面板左侧的用户。
单击添加用户按钮。
在用户名: 旁的文本框中输入用户名 (在本示例中,我们将使用 aws_backup),然后从“选择 AWS 访问类型”部分中选择编程访问。单击下一步: 权限按钮。
单击直接附加现有策略选项。选择 AdministratorAccess,然后单击下一步: 审核。
单击创建用户。
单击下载凭证按钮并将 credentials.csv 文件保存到安全位置 (您稍后在步骤 3 中将需要此文件),然后单击关闭按钮。
您已经拥有 IAM 用户,现在需要安装 AWS 命令行界面 (CLI)。
有关安装文档请查看 https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/cli-chap-install.html 。
我这里直接使用自带的源安装。
apt install awscli
登陆到我们的 Ubuntu 系统,输入 aws configure
,然后按 Enter 键。在系统提示时输入以下信息:
root@ip-172-31-47-132:~# aws configure
AWS Access Key ID [None]: AKIA5NAGHF6NVEPKATFQ
AWS Secret Access Key [None]: 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
Default region name [None]: ap-northeast-1
Default output format [None]: json
root@ip-172-31-47-132:~#
上面一种方式相对来说已经够安全了,但是秘钥信息都以明文的方式存储在了服务器上面,也变成了一种不安全,那我们就配置一下更加安全的角色方式,角色是赋予信任的实体授予权限的安全方法。
选择受信任的实体,我们这里选择 EC2。
赋予访问 S3 权限。
创建角色。
找到 EC2 实例界面。
选择我们刚刚创建的角色。
这里的前提条件是没有配置秘钥授权的方式。
aws s3 ls s3://myweb-backup-eu-west-1/
要新建一个名为myweb-backup
的存储桶,请输入:
root@ip-172-31-47-132:~# aws s3 mb s3://myweb-backup
make_bucket: myweb-backup
要将/etc/passwd
文件上传到 S3 存储桶 myweb-backup
,您需要使用以下命令:
root@ip-172-31-47-132:~# aws s3 cp /etc/passwd s3://myweb-backup/
upload: ../../etc/passwd to s3://myweb-backup/passwd
要从 S3 中将 passwd 下载至本地目录,我们需要颠倒命令的次序,如下所示:
root@ip-172-31-47-132:~# aws s3 cp s3://myweb-backup/passwd .
download: s3://myweb-backup/passwd to ./passwd
要将 passwd 从您的 myweb-backup 存储桶中删除,请使用以下命令:
root@ip-172-31-47-132:~# aws s3 rm s3://myweb-backup/passwd
delete: s3://myweb-backup/passwd
比如我每天把 /etc 目前下面的所有内容打包上传备份。
#!/bin/bash
export HOME="/home/ubuntu"
cd /tmp/;
tar -zcPf etc$(date +%Y%m%d).tar.gz /etc;
aws s3 cp etc$(date +%Y%m%d).tar.gz s3://myweb-backup/;
rm -f etc$(date +%Y%m%d).tar.gz;
然后添加一个定时任务即可。
我这里遇到一个问题,就是放在定时任务之后一直无法上传成功,不清楚使用角色授权的方式会不会出现这种情况,我觉得应该不会,大家可以自己去试试,通过打印日志查看,发现unable to locate credentials
这个问题,找了半天,加了一个环境变量export HOME="/home/ubuntu"
解决了,真是费尽周折,如果再遇到手动执行脚本正常,而定时任务不正常,我们可以用下面的办法对比一下两种方式的环境变量的区别。
# 定时任务环境变量输出
set | sort > /tmp/env.cron
# 手动执行脚本输出
set | sort > /tmp/env.interactive
# 然后进行比较
diff /tmp/env.cron /tmp/env.interactive
为了节省空间,我们可以添加生命周期规则。
参考文档: https://aws.amazon.com/cn/getting-started/tutorials/backup-to-s3-cli/
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。