【问题标题】:Boto3 CloudFormation StatusBoto3 CloudFormation 状态
【发布时间】: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 语句永远不会被调用。

【问题讨论】:

    标签: python amazon-web-services boto3 amazon-cloudformation


    【解决方案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。您关注的是参数值而不是参数名称。
    • 是的。你是对的。完全没有抓住重点。对不起,我没有想清楚。
    猜你喜欢
    • 1970-01-01
    • 2018-08-06
    • 2018-04-21
    • 2016-08-04
    • 2020-08-17
    • 2021-06-04
    • 1970-01-01
    • 2016-11-02
    • 2017-02-28
    相关资源
    最近更新 更多