【问题标题】:Accessing Many key:value pairs from AWS lambda从 AWS lambda 访问许多键:值对
【发布时间】:2021-10-28 15:31:31
【问题描述】:
我正在做一个项目,我需要从我的 lambda 函数循环访问许多单独的值 ....我知道我们可以使用环境变量,但我不能为所有值创建环境变量并在循环中调用它所以请建议我们是否可以使用任何包含我所有值的文件并以循环或任何其他方式调用它?我使用 python 3.9 创建 lambda
提前致谢
【问题讨论】:
-
AWS Parameter Store 似乎是一个很好的用例。您可以根据需要存储任意数量的键值对,甚至在需要时使用 KMS 对值进行加密。我还建议您查看 Secrets Manager,以防您有大量键值对并且需要确保它们都已加密。
标签:
python
aws-lambda
config
【解决方案1】:
找到了一种通过存储和访问 AWS Secret Store 来访问和更新许多键值对的方法
在 AWS Secret store 中创建 key:value 对,我们可以从 lambda 访问我们的键值,我们需要在 Lambda 环境变量中提及 AWS Secret Store 的 ARN,并通过导入 os 模块调用它
它工作得很好,我可以使用'client.update_secret'来更新值
我们需要确保我们的 Lambda 执行角色应该拥有 AWS 秘密存储服务的 GET、LIST、UPDATE...等权限
找到下面的脚本:
import boto3
from botocore.exceptions import ClientError
import os
session=boto3.session.Session()
client=session.client(service_name='secretsmanager', region_name='<enter our region name>')
def lambda_handler(event, context):
arn_v=os.environ['<enter our environment varaible name here... which contains the ARN of our secret store>'].split(',')
for i in arn_v:
try:
get_secret_value_response=client.get_secret_value(SecretId=i)
value1=eval(get_secret_value_response['SecretString'])['<enter our key1 name>']
value2=eval(get_secret_value_response['SecretString'])['<enter our key2 name>']
value3=eval(get_secret_value_response['SecretString'])['<enter our key3 name>']
print(get_secret_value_response)
print(value1)
print(value2)
print(value3)
except ClientError as e:
raise e