gpt4 book ai didi

python - 如何从 AWS Lambda 函数访问 YAML 文件内的变量?

转载 作者:行者123 更新时间:2023-12-01 06:35:02 24 4
gpt4 key购买 nike

我正在使用无服务器框架来测试我的 lamdba 函数,但它要求我访问我的 yaml 文件以获取特定变量。为了清楚起见,我将添加以下文件和代码:

我需要访问的YAML变量是tableName

environment:
tableName: notes_project

这是 lambda 函数:

import json
import boto3
import uuid

dynamodb = boto3.resource('dynamodb')

table = dynamodb.Table('notes_project')

def lambda_handler(event, context):

data = json.loads(event['body'])

item = {
'user_id': event['requestContext']['identity']['cognitoIdentityId'],
'note_id': str(uuid.uuid1()),
'note_text': data
}

table.put_item( Item = item)

目前,您可以看到表名称是硬编码的,但我想避免这种情况。

到目前为止我尝试过的:

我看过Get yaml key value in python以及涉及 os.environ 的其他建议,但如果我要将代码部署到 AWS,我不确定这些是否是正确的选择。我几乎不知道 lambda 代码在部署后如何访问这些 yaml 变量。如有解释,将不胜感激。

最佳答案

serverless.yml 不会上传到 lambda 函数代码,因此您无权访问该文件。

您可以通过几种方式做到这一点,

将值作为环境变量直接存储在 serverless.yml 中

serverless.yml中定义lambda的环境变量。然后就可以访问lambda中的环境变量了。

#serverless.yml
service: my-service

provider:
name: aws
runtime: python3.8

functions:
hello:
handler: handler.hello
environment:
# store the value directly
deliveryMethod: email

将参数存储在SSM存储中

将参数存储在SSM参数存储中并在serverless.yml中引用它

#serverless.yml
service: my-service

provider:
name: aws
runtime: python3.8

functions:
hello:
handler: handler.hello
environment:
# store the value directly
deliveryMethod: ${ssm:/path/to/deliveryMethod}

然后在 lambda 代码中:

# lambda code
def lambda_handler(event, context):
deliveryMethod = os.environ['deliveryMethod']

希望这有帮助。

引用: https://serverless.com/framework/docs/providers/aws/guide/variables/

关于python - 如何从 AWS Lambda 函数访问 YAML 文件内的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59710528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com