写点什么

AWS Command Line Interface 使用 S3 入门

作者:阿呆
  • 2022 年 1 月 13 日
  • 本文字数:1565 字

    阅读完需:约 5 分钟

AWS Command Line Interface 使用S3入门

最近因业务需要,需要将文件定时备份至 s3 中,因此记录一下如何快速使用 aws cli。

引言

AWS Command Line Interface (AWS CLI) 是一种开源工具,让您能够在命令行 Shell 中使用命令与 AWS 服务进行交互。仅需最少的配置,即可使用 AWS CLI 开始运行命令,以便从终端程序中的命令提示符实现与基于浏览器的 AWS Management Console 所提供的功能等同的功能。

安装

本文详细介绍 AWS CLI 版本 2 的安装方法,更多请参考链接 1。

使用 MSI 安装程序安装 AWS CLI

1、下载并运行适用于 Windows(64 位)的 AWS CLI MSI 安装程序

2、下载完成后,双击安装即可,也可以采取 msiexec 命令来安装

C:\> msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi
复制代码

3、确认安装成功,打开 cmd 命令行,执行 aws --version,看到下图提示则表示版本 2 安装成功

4、如果版本以 1 开头,则表示版本 1 在本机器安装过,如果版本 1 和版本 2 同时存在,默认使用版本 1,因此需要卸载掉版本 1,操作步骤如下:

1、打开cmd,运行命令appwiz.cpl。2、选择名为 AWS Command Line Interface 的条目,然后选择 Uninstall(卸载)启动卸载程序。3、确认卸载。
复制代码


快速配置

打开 cmd,执行命令 aws configure,然后依次输入以下配置

aws configureAWS Access Key ID [None]: ****AWS Secret Access Key [None]: ****Default region name [None]: beijingDefault output format [None]: json
复制代码

各项配置的详细介绍见 AWS 官网:配置详解

快速使用

应用场景为:需要定时将 windows 中的某些文件上传到 s3 进行备份。

import os, sys, time, json
fileDir = "D:\signent"fileSuffix = ".arc"upload_cmd = '''aws --endpoint=* s3 cp %s s3://geelib-sign-online/sign2_%s '''head_cmd = '''aws --endpoint=* s3api head-object --bucket geelib-sign-online --key geelib-sign-online/sign2_%s '''del_cmd = '''del %s'''
d = os.popen("dir %s\*%s /-c" % (fileDir, fileSuffix))filename_str = d.read()# Get filename and file storage(byte)filename_2_size = {}for fn in filename_str.split('\n'): if not fn.endswith(fileSuffix): continue size, filename = fn.split(" ")[-2: ] filename_2_size[filename] = int(size)

for filename, file_size in filename_2_size.items(): print(filename, file_size) filepath = "%s\%s" % (fileDir, filename) cp_cmd = upload_cmd % (filepath, filename) print("Begin sync", cp_cmd) res = os.popen(cp_cmd) # head s3 file exist, and compare size print(head_cmd % (filename)) head_res = os.popen(head_cmd % (filename)).read() if not head_res: continue res_json = json.loads(head_res) res_size = int(res_json.get("ContentLength", 0)) print(file_size, res_size) if res_size == file_size: print("file size ==, Begin delete file, ", filename) print(del_cmd % filepath) os.popen(del_cmd % filepath) break
复制代码


由于 windows 和 linux 上相同二进制文件生成的 md5 值不同,因此本脚本中采取文件字节数大小来判断文件是否完整,上传完成校验完成后,变删除掉文件。


参考链接

1、AWS CLI 安装:https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/cli-chap-install.html


发布于: 刚刚阅读数: 2
用户头像

阿呆

关注

坚守准则,认真做事。 2018.05.22 加入

还未添加个人简介

评论

发布
暂无评论
AWS Command Line Interface 使用S3入门