gpt4 book ai didi

json - CloudFormation 模板 - 有什么方法可以获取 Spot-Fleet-Request ID?

转载 作者:行者123 更新时间:2023-12-01 03:24:39 26 4
gpt4 key购买 nike

我正在尝试创建一个单一模板来创建以下内容:

AWS::EC2::SpotFleet 资源2 个 AWS::ApplicationAutoScaling::ScalingPolicy 资源(扩大、缩小)

最初,我的模板仅包含 SpotFleet 资源,并且我确认堆栈创建不会出现问题。添加 ScalingPolicy 资源后,堆栈将回滚,因为“没有为命名空间注册可扩展目标...”,因此,我添加了额外的资源。

AWS::ApplicationAutoScaling::ScalableTarget 资源。(来自http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html#cfn-applicationautoscaling-scalabletarget-resourceid)

{
"Type" : "AWS::ApplicationAutoScaling::ScalableTarget",
"Properties" : {
"MaxCapacity" : Integer,
"MinCapacity" : Integer,
"ResourceId" : String,
"RoleARN" : String,
"ScalableDimension" : String,
"ServiceNamespace" : String
}
}

ResourceID 是必需属性。我拥有所有其他属性的数据,但在研究 ResourceID 属性需要哪些数据时,我发现我需要的数据是 Spot-fleet-request ID(如下所示:"SpotFleetRequestId":“sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE”)

所以问题是:由于我在与扩展策略相同的模板中创建 SpotFleetRequestId,因此我无法手动放入 SpotFleetRequestId,因为据我所知,这是在资源存在时创建的,而且没有办法预测请求 ID 是什么。在其他模板中,对于其他类型的资源,我只是使用 "Ref""Fn::GetAtt" 传入资源的 arn,而无需手动输入这个。但是,似乎无法使用 SpotFleetRequestID 来执行此操作。我所做的所有研究都没有发现任何结果,甚至没有一个使用我所描述的方法的模板示例 - 唯一可用的示例假设可扩展目标资源已经存在,并且在创建 ScalingPolicy 之前已知 SpotFleetRequestID 。

有谁知道是否可以引用在同一模板中初始化的 AWS::EC2::SpotFleet 的 SpotFleetRequestID?或者我只是错过了一些非常明显的东西?

-功夫比利

最佳答案

事实证明,如果您“Ref” AWS::EC2::SpotFleet 的逻辑名称,它将返回请求 ID。然后,需要使用 "Fn::Join" 获取 ResourceID 的正确数据。应该看起来像这样:

"ResourceId":  {
"Fn::Join": [
"/",
[
"spot-fleet-request",
{
"Ref": "SpotFleet"
}
]
]
},

这将输出:spot-fleet-request/"SpotFleetRequestID"

关于json - CloudFormation 模板 - 有什么方法可以获取 Spot-Fleet-Request ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42396605/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com