【发布时间】:2018-08-30 15:11:15
【问题描述】:
我正在尝试通过我的 CloudFormation 模板 json 为 CustomResource 设置在运行时取值的环境变量。这样稍后它会执行一个 python lambda,我可以读取 lambda 中的环境变量并处理一些数据。
我希望我的 python lambda 能够在 os.environ 中读取这个变量
以下是我的 Cloudformation for CustomResource
"TriggerRedshiftSetupLambda": {
"Type": "AWS::CloudFormation::CustomResource",
"Version": 1.0,
"Properties": {
"Environment": {
"Variables": {
"AHost": {
"Fn::GetAtt" : [ "A", "Endpoint.Address" ]
},
"APort": {
"Fn::GetAtt" : [ "A", "Endpoint.Port" ]
}
}
},
"ServiceToken": {
"Fn::GetAtt" : [ "ASetupLambda", "Arn" ]
}
}
}
这是我使用变量的 lambda 代码
def lambda_handler(event, context):
print(os.environ)
print(os.environ['AHost'])
第一个打印语句打印整个环境变量列表,但没有任何“AHost”的键/值对
我做错了吗?如何通过customresource for lambda正确初始化环境变量?
【问题讨论】:
-
您是否有理由必须使用自定义资源而不是
AWS::Lambda::Function? -
是的,因为必须触发 lambda 作为 cloudformation 部署的依赖进程才能设置 Redshift 表和架构
标签: amazon-web-services environment-variables aws-lambda amazon-cloudformation