如何处理对 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 文档中的描述做一些事情:
假设我用以下 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 文档中的描述做一些事情: