我在我的 s-resource-cf.json(一个 CloudFormation 模板)中添加了一个 Redis ElastiCache 部分,并选择了它的主机名作为输出。
"Resources": {
...snip...
"Redis": {
"Type": "AWS::ElastiCache::CacheCluster",
"Properties": {
"AutoMinorVersionUpgrade": "true",
"AZMode": "single-az",
"CacheNodeType": "cache.t2.micro",
"Engine": "redis",
"EngineVersion": "2.8.24",
"NumCacheNodes": "1",
"PreferredAvailabilityZone": "eu-west-1a",
"PreferredMaintenanceWindow": "tue:00:30-tue:01:30",
"CacheSubnetGroupName": {
"Ref": "cachesubnetdefault"
},
"VpcSecurityGroupIds": [
{
"Fn::GetAtt": [
"sgdefault",
"GroupId"
]
}
]
}
}
},
"Outputs": {
"IamRoleArnLambda": {
"Description": "ARN of the lambda IAM role",
"Value": {
"Fn::GetAtt": [
"IamRoleLambda",
"Arn"
]
}
},
"RedisEndpointAddress": {
"Description": "Redis server host",
"Value": {
"Fn::GetAtt": [
"Redis",
"Address"
]
}
}
}
我可以让 CloudFormation 在运行时输出 Redis 服务器主机sls resources deploy
,但是如何从 Lambda 函数中访问该输出?
此入门项目模板中没有任何内容引用IamRoleArnLambda
示例项目附带的那个。根据文档,模板仅可用于项目配置,无法从 Lambda 函数访问:
模板和变量仅用于配置
模板和变量仅用于项目的配置。此信息在您的 lambda 函数中不可用。要设置 lambda 函数可以使用的变量,请使用环境变量。
那么,在创建 ElastiCache 服务器后,如何将环境变量设置为 ElastiCache 服务器的主机名?