我正在尝试将包含加密机密的其他文件上传到AWS Lambda,但我遇到了麻烦。该文件将从我的Python脚本中读取并进行处理。我已经在本地测试了这个功能,它运行得很好。
我正确打包并上传.zip,因为AWS在上传后运行脚本没有问题。但是,我的代码在读取我的文件的行上失败了,即使它应该在工作目录中。
是否可以将文件上传到AWS zip部署中,并让脚本读取它?
答案 0 :(得分:0)
我很惊讶这不起作用,所以我为任何感兴趣的人做了一些挖掘。
我创建了一个简单的函数:
import json
import os
import random
def lambda_handler(event, context):
selection = str(random.randint(1,5))
with open('mydata.csv') as dogs:
for l in dogs:
if selection == l.split(',')[0]:
random_dog = l.split(',')[2]
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!'),
'cwd': os.getcwd(),
'ls': os.listdir(),
'random_dog': random_dog
}
一个数据文件:
akc_popularity,year,breed
1,2019,labrador Retriever
2,2019,German Shepherd Dog
3,2019,Golden Retriever
4,2019,French Bulldog
5,2019,Bulldog
将它们添加到 zip 存档:
$ zip fileImport.zip importer.py
$ zip fileImport.zip mydata.csv
创建函数:
$ aws lambda create-function --function-name fileImport --zip-file fileb://fileImport.zip --handler importer.lambda_handler --runtime python3.8 --role arn:aws:iam::***************:role/Lambda_StackExchange
触发函数:
$ aws lambda invoke --function-name fileImport output.json
{
"StatusCode": 200,
"ExecutedVersion": "$LATEST"
}
$ jq . output.json
{
"statusCode": 200,
"body": "\"Hello from Lambda!\"",
"cwd": "/var/task",
"ls": [
"importer.py",
"mydata.csv"
],
"random_dog": "Bulldog\n"
}
所以,请分享一些代码,以便我们深入研究!仅供参考...我强烈建议使用 AWS Secrets Manager 存储机密。它非常易于使用,并且可以将您的硬编码秘密置于版本控制系统之类的东西之外。此外,更改您的机密不需要重新部署您的函数。