如何处理对 CF 堆栈之外的参数所做的更改?

How to handle changes made to parameters outside of CF stack?

假设我用以下 parameters/resources 创建了一个堆栈:

Parameters:
  RDSAllocatedStorage:
    Type: Number
    Default: 20
    Description: Name of the S3 bucket to deploy for storing cloudtrail logs
Resources:
  RdsPrimary:
    Type: AWS::RDS::DBInstance
    Properties:
      AllocatedStorage: 
        Ref: RDSAllocatedStorage
      DBName: Database123
      DBInstanceClass: db.t2.micro

然后在 AWS 控制台中的 RDS 属性中,我手动将 属性 RDSAllocatedStorage 从 20 更改为 30。但是,这不会更改 CF 堆栈输出中的参数 RDSAllocatedStorage,因此现在 CF 不会不反映已部署的内容。

现在如果我在模板中修改 CF 将 RDSAllocatedStorage 更改为 30,创建一个变更集,CF 会认为需要进行更改,因为堆栈中的 RDSAllocatedStorage 是 20,传入的更改是 30,但实际上有应该不需要更改,因为 RDS 上的设置已经设置为 30。

有没有办法使 CF 参数与资源中的实际内容一致?

您遇到的问题称为 drift,在 CFN 之外对您的资源进行任何更改是一种非常糟糕的做法。但是,如果您有偏差,您可以按照 AWS 文档中的描述做一些事情: