Json CloudFormation模板-有没有获得Spot车队请求ID的方法?
我正在尝试创建一个模板来创建以下内容: AWS::EC2::SpotFleet资源 2 AWS::ApplicationAutoScaling::缩放策略资源(放大、缩小) 最初,我的模板只包含SpotFleet资源,我确认堆栈将创建而不会出现问题。添加ScalingPolicy资源后,堆栈将回滚,因为“没有为命名空间注册可伸缩目标…”,因此,我添加了一个额外的资源 AWS::ApplicationAutoScaling::ScalableTarget资源。 (来自) ResourceID是必需的属性。我有所有其他属性的数据,但在研究ResourceID属性需要什么数据时,我发现我需要的数据是spot fleet请求ID(类似于:Json CloudFormation模板-有没有获得Spot车队请求ID的方法?,json,amazon-web-services,amazon-cloudformation,Json,Amazon Web Services,Amazon Cloudformation,我正在尝试创建一个模板来创建以下内容: AWS::EC2::SpotFleet资源 2 AWS::ApplicationAutoScaling::缩放策略资源(放大、缩小) 最初,我的模板只包含SpotFleet资源,我确认堆栈将创建而不会出现问题。添加ScalingPolicy资源后,堆栈将回滚,因为“没有为命名空间注册可伸缩目标…”,因此,我添加了一个额外的资源 AWS::ApplicationAutoScaling::ScalableTarget资源。 (来自) ResourceID是必需
“SpotFleetRequestId”:“sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE”)
问题是:由于我在与缩放策略相同的模板中创建spot fleet请求,因此我无法手动将SpotFleetRequestId放入,因为据我所知,这是在资源处于活动状态时创建的,并且无法预测请求ID将是什么。在其他模板中,对于其他类型的资源,我只使用了“Ref”
或“Fn::GetAtt”
来传递资源的arn,而无需手动输入。然而,似乎没有办法用SpotFleetRequestID实现这一点。我所做的所有研究都没有发现任何结果,甚至没有一个使用我所描述的方法的单一模板示例-唯一可用的示例假设可伸缩目标资源已经存在,并且SpotFleetRequestID在创建ScalingPolicy之前是已知的
有人知道引用在同一模板中初始化的AWS::EC2::SpotFleet的SpotFleetRequestID是否可行吗?还是我错过了一些非常明显的东西
-Kungfully证明,如果您
“Ref”
AWS::EC2::SpotFleet的逻辑名称,它将返回请求ID。然后,使用“Fn::Join”
为ResourceID获取正确的数据。应该是这样的:
"ResourceId": {
"Fn::Join": [
"/",
[
"spot-fleet-request",
{
"Ref": "SpotFleet"
}
]
]
},
将输出:spotfleetrequest/“SpotFleetRequestID”
"ResourceId": {
"Fn::Join": [
"/",
[
"spot-fleet-request",
{
"Ref": "SpotFleet"
}
]
]
},