如何将 AWS 漂移堆栈资源恢复到预期状态

Posted

技术标签:

【中文标题】如何将 AWS 漂移堆栈资源恢复到预期状态【英文标题】:How to restore the AWS drifted stack resources to the expected state 【发布时间】:2020-04-30 23:14:29 【问题描述】:

我有一个 cloudformation 堆栈并编辑了资源属性,现在堆栈显示为漂移状态。我已经运行了 cli 命令来查找漂移的资源并得到了结果。现在我需要使用资源属性的预期值更新堆栈。但在我的 cloudformation 堆栈中,我只指定了资源参数。谁能告诉我如何使用资源及其属性更新堆栈。 我运行的命令

aws cloudformation describe-stack-resource-drifts --stack-name stack-test --query 'StackResourceDrifts[*].LogicalResourceId: LogicalResourceId, PropertyDifferences: PropertyDifferences

我得到如下输出:

 [
     
      
          "LogicalResourceId": "tsets3",
          "PropertyDifferences": [
                           
              
                  "PropertyPath": "/PublicAccessBlockConfiguration/RestrictPublicBuckets",
                  "ExpectedValue": "true",
                  "ActualValue": "false",
                  "DifferenceType": "NOT_EQUAL"
              
          ]
      
  ]

当我尝试使用命令时

aws cloudformation update-stack --stack-name stack-test --use-previous-template --resource-types="AWS::S3::*" --capabilities="CAPABILITY_NAMED_IAM"

我收到如下错误:

调用UpdateStack操作时出错(ValidationError):不能同时指定ResourceTypes和Capabilities。

谁能帮我解决这个问题?

提前致谢。

【问题讨论】:

【参考方案1】:

您必须使用控制台、CLI 或 SDK 修复 CloudFormation 之外的漂移

这篇文章应该有助于纠正该特定属性的漂移: https://aws.amazon.com/blogs/aws/amazon-s3-block-public-access-another-layer-of-protection-for-your-accounts-and-buckets/

【讨论】:

以上是关于如何将 AWS 漂移堆栈资源恢复到预期状态的主要内容,如果未能解决你的问题,请参考以下文章

将现有 AWS 资源整合到 CloudFormation 堆栈中

如何将现有资源从不同的 AWS 账户导入 AWS CDK

如何描述 cloudformation 跨帐户堆栈信息/名称/详细信息

如何从 aws cloudformation 模板为特定资源类型创建堆栈

AWS CDK:如何在同一应用程序中引用跨堆栈资源?

如何恢复iphone应用程序的视图堆栈