Boto3 CloudFormation 状态
Posted
技术标签:
【中文标题】Boto3 CloudFormation 状态【英文标题】:Boto3 CloudFormation Status 【发布时间】:2017-11-25 20:59:17 【问题描述】:是否可以获取 CloudFormation 堆栈的状态?如果有,怎么做?
我正在创建一个堆栈:
client = boto3.client('cloudformation',)
response = client.create_stack(
StackName=stackname,
...
)
我可以在 CloudFormation Web UI 中看到堆栈成功创建。
我尝试通过以下方式获取状态:
print(client.describe_stacks(stack_name_or_id=hostname))
但这会引发异常:
botocore.exceptions.ParamValidationError: Parameter validation failed:
Unknown parameter in input: "stack_name_or_id", must be one of: StackName, NextToken
所以我尝试等待堆栈部署并捕获异常:
while True:
time.sleep(5)
try:
print(client.describe_stacks(stack_name_or_id=stackname))
except botocore.exceptions.ParamValidationError:
pass
但我一点反应都没有; print
语句永远不会被调用。
【问题讨论】:
【参考方案1】:错误信息:
Unknown parameter in input: "stack_name_or_id", must be one of: StackName, NextToken
明确表示您传递的参数名称无效; stack_name_or_id
.
在Boto3 describe_stacks中,预期的参数是:StackName
response = client.describe_stacks(
StackName='string',
NextToken='string'
)
对于正在运行的堆栈,您可以传递堆栈名称或堆栈 ID。但是对于已删除的堆栈,您必须传递堆栈 ID。
client.describe_stacks(StackName='mystack')
u'Stacks': [u'StackId': 'arn:aws:cloudformation:us-east-1:.......
'content-type': 'text/xml',
'date': 'Thu, 22 Jun 2017 14:54:46 GMT'
【讨论】:
是的,我尝试使用堆栈 ID。同样的错误:输入中的未知参数:“stack_name_or_id”,必须是以下之一:StackName,NextToken 事情是;当我尝试获取状态时,它既没有运行也没有删除...... @KarimTabet,你没有抓住重点。你必须通过StackName
,而不是stack_name_or_id
。您关注的是参数值而不是参数名称。
是的。你是对的。完全没有抓住重点。对不起,我没有想清楚。以上是关于Boto3 CloudFormation 状态的主要内容,如果未能解决你的问题,请参考以下文章