1、建立終端節點python
爲何要建立終端節點,把VPC和S3管理起來呢?若是不將VPC和S3經過終端節點管理起來,那麼VPC中EC2實例訪問S3存儲桶是經過公共網絡的;一旦關聯起來,那麼VPC中EC2實例訪問S3存儲桶走的就是內部網絡。好處有兩個:1. 走內部網絡就不會產生流量費用;2. 走內部網絡速度快,不會由於網絡緣由致使咱們的Python腳本產生異常。
安全
VPC->終端節點->建立終端節點->將VPC和S3關聯->關聯子網
網絡
2、在Windows中安裝Python3編譯器以及boto3庫ide
1. 下載地址:https://www.python.org/ 測試
2. 雙擊安裝,默認安裝路徑「C:\Users\用戶\AppData\Local\Programs\Python\Python36」spa
3. 配置環境變量
命令行
4. 安裝boto3開發庫(環境變量配好便可使用pip命令)
orm
3、生成AWS IAM用戶密鑰並配置生命週期
1. IAM->用戶->選擇具備訪問S3權限的用戶->安全證書->建立訪問安全密鑰->下載密鑰文件到本地
ip
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
3、編輯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)
4、測試並安排定時任務
1. 在Windows CMD命令行中手動運行剛剛編輯的python腳本
2. 若是成功,則編輯Windows定時任務,天天定時上傳本地目錄下的文件至S3存儲桶中
5、設置S3存儲桶生命週期
對於上傳到S3存儲桶中的文件,咱們想按期刪除30天之前的文件,咱們能夠設置存儲桶的生命週期,自動刪除過時文件。
添加生命週期規則