aws cloudformation 由于嵌套堆栈造成无限递归的问题记录

突发奇想,既然cloudformation堆栈支持嵌套,即在堆栈中创建堆栈,那么如果在模板中指定创建堆栈自身会发生什么呢?

反正cloudformation只要不创建资源就不收费,索性尝试下。

使用以下模板上传到指定的s3桶中,之后将TemplateURL替换为s3的https路径,并重新上传到s3替代源文件(此时url保持不变)

AWSTemplateFormatVersion: '2010-09-09'

Parameters:
  InstanceType:
    Type: String
    Default: t3.small
    Description: 'EC2 instance type, e.g. m1.small, m1.large, etc.'
  KeyName:
    Type: String
    Default: test-key
    Description: Name of an existing EC2 KeyPair to enable SSH access to the web server
    
Resources:
  myStackWithParams:
    Type: AWS::CloudFormation::Stack
    Properties:
      TemplateURL: https://xxxxxx.s3.cn-north-1.amazonaws.com.cn/cloudformation.yaml
      Parameters:
        InstanceType: t2.micro
        KeyName: mykey

在cloudformation中使用这个s3对象为模板创建堆栈

没有出现预料中的递归检查错误,从下图中可以看到在不断创建新的堆栈

aws cloudformation 由于嵌套堆栈造成无限递归的问题记录_第1张图片
创建24个堆栈左右出现以下错误
aws cloudformation 由于嵌套堆栈造成无限递归的问题记录_第2张图片
事件中出现嵌套堆栈超出深度限制
aws cloudformation 由于嵌套堆栈造成无限递归的问题记录_第3张图片
没有找到堆栈深度限额的文档,不过确实存在递归的检测

此外,嵌套堆栈的删除过程极为缓慢(因为并没有创建资源,逻辑上不应该这么慢,可能是由于递归造成的处理困难)。

你可能感兴趣的:(AWS,aws,云计算)