专栏首页python3使用Python boto3上传Wind

使用Python boto3上传Wind

一、创建终端节点

    为什么要创建终端节点,把VPC和S3管理起来呢?如果不将VPC和S3通过终端节点管理起来,那么VPC中EC2实例访问S3存储桶是通过公共网络的;一旦关联起来,那么VPC中EC2实例访问S3存储桶走的就是内部网络。好处有两个:1. 走内部网络就不会产生流量费用;2. 走内部网络速度快,不会因为网络原因导致我们的Python脚本产生异常。

VPC->终端节点->创建终端节点->将VPC和S3关联->关联子网

二、在Windows中安装Python3编译器以及boto3库

    1. 下载地址:https://www.python.org/

    2. 双击安装,默认安装路径“C:\Users\用户\AppData\Local\Programs\Python\Python36”

    3. 配置环境变量

    4. 安装boto3开发库(环境变量配好即可使用pip命令)

三、生成AWS IAM用户密钥并配置

    1. IAM->用户->选择具有访问S3权限的用户->安全证书->创建访问安全密钥->下载密钥文件到本地

    2. 在Windows实例上配置AWS密钥认证

a) 创建~/.aws/credentials 文件,文件内容如下:
[default]
aws_access_key_id = xxxxxx
aws_secret_access_key = xxxxxx

b) 创建~/.aws/config 文件,文件内容如下:
[default]
region=cn-north-1

三、编辑Python3脚本,脚本名为“s3_upload.py”

import os
import datetime
import boto3
import logging
from boto3.s3.transfer import TransferConfig


logging.basicConfig(level=logging.INFO,
                format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
                datefmt='%a, %d %b %Y %H:%M:%S',
                filename='E:\\xxx\\xxx\\xxx\\aws_upload.log',
                filemode='a')

delta = datetime.timedelta(days=2)
now = datetime.datetime.now()
s3 = boto3.client('s3')
bucket_name = 'daily-backup'
file_dir='E:\\xxx\\xxx\\xxx'
GB = 1024 ** 3
# 单个文件大于10GB,需要设置此值
config = TransferConfig(multipart_threshold=5 * GB)

os.chdir(file_dir)

file_list = os.listdir()

for file in file_list:
    # 只上传zip文件
    if file.endswith('.zip'):
        # 上传两天前生成的文件
        ctime = datetime.datetime.fromtimestamp(os.path.getctime(file))
        if ctime < (now-delta):
            try:
                s3.upload_file(file, bucket_name, file, Config=config)
            except Exception as e:
                logging.error(e)
                logging.error("%s upload failed." % file)
            else:
                # 上传成功则删除本地文件
                logging.info("%s upload successful." % file)
                os.remove(file)

四、测试并安排定时任务

    1. 在Windows CMD命令行中手动运行刚刚编辑的python脚本

    2. 如果成功,则编辑Windows定时任务,每天定时上传本地目录下的文件至S3存储桶中

五、设置S3存储桶生命周期

    对于上传到S3存储桶中的文件,我们想定期删除30天以前的文件,我们可以设置存储桶的生命周期,自动删除过期文件。

添加生命周期规则

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【13】Python之常用文件操作

    f=open('so_file',encoding="utf-8")  #打开文件,并读取。Windows上默认字符集GDK,所以这里指定了字符集,不然会报错。...

    用户2398817
  • python实现磁盘日志清理

    用户2398817
  • python3第七天(输入和输出)

    输出值的方式:1,表达式。2,print()函数。3,文件对象的write()函数

    用户2398817
  • Upload-labs&amp;Upload Bypass Summarize

    暑假闲着也是闲着,去年这个时候刷完了 sqli-labs,今年想着来刷一下 upload-labs 而这次重点不在于题解,而在于总结与归纳 首先我们得明确一点,...

    安恒网络空间安全讲武堂
  • Upload-labs&Upload Bypass Summarize

    暑假闲着也是闲着,去年这个时候刷完了 sqli-labs,今年想着来刷一下 upload-labs 而这次重点不在于题解,而在于总结与归纳 首先我们得明确一点,...

    安恒网络空间安全讲武堂
  • Python替换文件内容(文件处理)

    用户2398817
  • 文件备份操作

    skylark
  • 最近让我焦灼的四个问题(有解) (r7笔记第76天)

    之前写了一篇 《最近让我焦灼的四个问题》,既是感慨,也是无奈,既是记录问题,也是鞭策自己,当然只是吐槽,抱怨是没有任何意义的,所以我更新第二篇,这些问题在近些天...

    jeanron100
  • java之的读取文件大全

    java之的读取文件大全 使用java进行文件读写,因为使用的频率不高,加上写起来也没那么简单,经常容易忘记,然后就得去翻阅以前的笔记,或者找寻之前写的文件读...

    小灰灰
  • ubuntu安装Metasploit Framework(最简单)

    这个其实我以前说过ubuntu安装metasploit,就是在github上clone下来安装,但是那种方式安装的话会碰到很多依赖的问题,不方便安装,下面我推荐...

    bboysoul

扫码关注云+社区

领取腾讯云代金券