作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 GPG 加密文件的本地 python 代码。一旦将文件添加到触发此 lambda 的 AWS S3,我需要将其转换为 AWS Lambda。
我的本地代码
import os
import os.path
import time
import sys
gpg = gnupg.GPG(gnupghome='/home/ec2-user/.gnupg')
path = '/home/ec2-user/2021/05/28/'
ptfile = sys.argv[1]
with open(path + ptfile, 'rb')as f:
status = gpg.encrypt_file(f, recipients=['user@email.com'], output=path + ptfile + ".gpg")
print(status.ok)
print(status.stderr)
当我将此文件作为 python3 encrypt.py file.csv 执行时,这非常有用,结果是 file.csv.gpg
我正在尝试将其移至 AWS Lambda 并在将 file.csv 上传到 S3 时调用。
import json
import urllib.parse
import boto3
import gnupg
import os
import os.path
import time
s3 = boto3.client('s3')
def lambda_handler(event, context):
bucket = event['Records'][0]['s3']['bucket']['name']
key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'], encoding='utf-8')
try:
gpg = gnupg.GPG(gnupghome='/.gnupg')
ind = key.rfind('/')
ptfile = key[ind + 1:]
with open(ptfile, 'rb')as f:
status = gpg.encrypt_file(f, recipients=['email@company.com'], output= ptfile + ".gpg")
print(status.ok)
print(status.stderr)
我的 AWS Lambda 代码 zip 在 AWS 中创建了一个文件夹结构
我在运行时看到的错误是 [ERROR] Runtime.ImportModuleError: Unable to import module 'lambda_function': No module named 'gnupg'Traceback(最近一次通话最后一次):
最佳答案
您可以从 GnuPG 1.4 source 创建适合 AWS Lambda 上的 python-gnupg 使用的 gpg
二进制文件。 .你需要
sudo yum install -y gcc make glibc-static
on Amazon Linux 2)下载 GnuPG 源包并验证其签名后,使用构建二进制文件
$ tar xjf gnupg-1.4.23.tar.bz2
$ cd gnupg-1.4.23
$ ./configure
$ make CFLAGS='-static'
$ cp g10/gpg /path/to/your/lambda/
您还需要 python-gnupg 中的 gnupg.py
模块,您可以使用 pip 获取该模块:
$ cd /path/to/your/lambda/
$ pip install -t . python-gnupg
您的 Lambda 的源结构现在看起来像这样:
.
├── gnupg.py
├── gpg
└── lambda_function.py
更新您的函数以将 gpg
二进制文件的位置传递给 python-gnupg 构造函数:
gpg = gnupg.GPG(gnupghome='/.gnupg', gpgbinary='./gpg')
使用zip
打包Lambda函数:
$ chmod o+r gnupg.py lambda_function.py
$ chmod o+rx gpg
$ zip lambda_function.zip gnupg.py gpg lambda_function.py
关于python - 如何在 AWS Lambda 函数中使用 gnupg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67782720/
我是一名优秀的程序员,十分优秀!