Redis ElastiCache セクションを s-resource-cf.json (CloudFormation テンプレート) に追加し、そのホスト名を出力として選択しました。
"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
、サンプル プロジェクトに付属の を参照するものは何もありません。docsによると、テンプレートはプロジェクト構成にのみ使用でき、Lambda 関数からはアクセスできません。
テンプレートと変数は設定専用です
テンプレートと変数は、プロジェクトの構成にのみ使用されます。この情報はラムダ関数では使用できません。ラムダ関数で使用できる変数を設定するには、環境変数を使用します。
では、ElastiCache サーバーの作成後に環境変数を ElastiCache サーバーのホスト名に設定するにはどうすればよいでしょうか?