CloudFormation是幂等的吗?

Tk4*_*421 10 amazon-web-services aws-cloudformation

我在互联网上的许多地方读到CloudFormation不是幂等的,但我找不到任何证明这一事实的例子.

能否请您提供一个运行资源的示例来证明CloudFormation不是幂等的?

Jar*_*eld 15

根据维基百科的幂等定义如下:

在计算机科学中,术语"幂等"被更全面地用于描述如果执行一次或多次将产生相同结果的操作.

CloudFormation在其行为的几个方面被认为不是幂等的:

  • 为已存在的堆栈调用create API将导致错误
  • 使用未更改的CloudFormation堆栈调用更新API会导致错误
  • 再次创建和删除相同的堆栈将导致为IAM用户,安全组ID,EC2实例ID,VPC ID等创建具有不同ARN的资源...
  • 如果使用现有内容更新现有堆栈,则在CloudFormation外部修改的资源将不会更改回原始值

但是,从高层次来看,使用CloudFormation的主要原因之一是您将基础架构表示为代码,以便您可以使用它来重复生成相同的基础架构.这几乎与幂等的原始定义相同,但区别在于此处的多次部分.如上所述,当使用相同的堆栈并在其上面应用或删除堆栈并重新创建它时,从技术上讲,您没有得到完全相同的结果,但从实际角度来看,这是完全可以理解的并且通常是完全可以接受的.


Wil*_*ire 7

我不确定这个答案是否有用,因为这个问题已经在 2 年前发布了。迟到总比不到好。

AWS CloudFormation 在这 2 年中发生了很大变化。现在,我可以肯定地说它的 API 调用是幂等的。

看看这些 API 调用:

  1. 创建堆栈
  2. 更新堆栈
  3. 删除堆栈

您会发现有一个名为ClientRequestToken的可选参数。这为 API 调用提供了幂等性。这是客户端提供的令牌,用于告诉 CloudFormation 服务它没有进行新的 API 调用。只要您使用相同的令牌并继续使用相同的其余参数进行调用,CloudFormation 就知道您只是在重试调用。