如何使用AWS KMS服务器端加密从Python加密文件

时间:2019-05-09 14:52:09

标签: python amazon-web-services encryption amazon-s3

我对python很陌生。需要一些帮助。这就是我所需要的。

  • 我们要在目录中查找文件,如果文件存在且文件大小不为零字节,我想使用AWS KMS加密对文件进行加密并将其上传到存储桶中。
  • 如果文件不存在,则引发异常
  • 如果文件存在但文件为零字节,则引发异常。

下面是我可以提供的代码,但是我确信有更好的方式编写此代码,需要您的帮助。我无法实现的一件事就是加密。

import os
import sys
import boto3
from botocore.client import Config
import configparser
import re
import os.path
import glob

## Initialize the Parameters
def initconfig(input):

    config = configparser.ConfigParser()
    config.read_file(open( 'CONFIG_AIRBILLING.conf'))
    print('Code Name is :'+ input)
    global REMOTE_DIR,ACCESS_KEY_ID,ACCESS_SECRET_KEY,BUCKET_NAME,TARGET_DIR,FILENAME,SRC_DIR,File,FILEPATH
    ACCESS_KEY_ID = config.get('ACCESS', 'ACCESS_KEY_ID')
    print('ACCESS_ID_IS:'+ ACCESS_KEY_ID)
    ACCESS_SECRET_KEY = config.get('ACCESS', 'ACCESS_SECRET_KEY')
    BUCKET_NAME = config.get('ACCESS', 'BUCKET_NAME')
    SRC_DIR = config.get(input, 'SRC_DIR')
    FILENAME = config.get(input, 'FILENAME')
    FILENAME=FILENAME+'*.txt'
    FILEPATH=SRC_DIR+'\\'+FILENAME
    print('File Path is:'+FILEPATH)
    TARGET_DIR = config.get(input, 'TARGET_DIR')
    File='demo.txt'


## This function will make sure file exist in Source directory
def readstatus():
    print('Startibg')
    try:
        with open(FILEPATH,'r') as f:
            f.closed
            result='True'
            movefiles(result)
    except (Exception) as e:
        print('***Error:File Not Found or Accessible***')
        result='False*'
        raise e


## This function will move the files to AWS S3 bucket
def movefiles(result):
    if result=='True':
        s3 = boto3.resource(
            's3',
            aws_access_key_id=ACCESS_KEY_ID,
            aws_secret_access_key=ACCESS_SECRET_KEY,
            config=Config(signature_version='s3v4')
        )
        s3.Bucket(BUCKET_NAME).put_object(Key=TARGET_DIR + '/' + File, Body=File)
        print('***File Moved***')


    print("Done")

if __name__ == '__main__':
    print(len(sys.argv))
    initconfig(sys.argv[1])
    print(sys.argv)
    readstatus()
#initconfig(input=input())
#readstatus()

0 个答案:

没有答案