在使用无服务器框架部署我的应用程序时,我的登台/生产环境会使用相应的ElasticCache实例作为应用程序所需资源的一部分进行旋转,并将端点设置为环境变量。
environment:
REDIS_URL:
Fn::Join:
- ''
- - 'redis://'
- Fn::GetAtt: [ElasticCacheCluster, RedisEndpoint.Address]
上面的实现效果很好,但是使用serverless-offline
时显然不能得到真正的端点,并且REDIS_URL最终以redis://[object Object]
的形式出现。
我想做的是使用env:REDIS_URL
(如果存在),如果不存在,请如上所述使用Fn :: GetAtt进行设置。
鉴于正常的后备语法为${env:REDIS_URL, fallback}
,我以为我可以使用上述Fn:GetAtt的某种形式,但我似乎无法使用该语法。
environment:
REDIS_URL: ${env:REDIS_URL,
{ Fn::Join:
- ''
- - 'redis://'
- Fn::GetAtt: [ElasticCacheCluster, RedisEndpoint.Address] }
}
这怎么办?
答案 0 :(得分:0)
计算Fn:Join,然后在环境配置中将其引用为后备,似乎可行。
provider:
environment:
REDIS_URL: ${env:REDIS_URL, self:custom.REDIS_URL}
custom:
REDIS_URL:
Fn::Join:
- ''
- - 'redis://'
- Fn::GetAtt: [ElasticCacheCluster, RedisEndpoint.Address]