AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

将现有资源导入 CloudFormation 堆栈中

  • 2019-11-22
  • 本文字数:2500 字

    阅读完需:约 8 分钟

将现有资源导入 CloudFormation 堆栈中

凭借 AWS CloudFormation,您可以使用文本文件对您的整个基础设施进行建模。用此方式,您可以将基础设施视为代码并应用软件开发最佳实践,包括将其置于版本控制中,或在部署前与您的团队一起审查架构变化。


有时候,最初使用控制台或 AWS 命令行界面 (CLI) 创建的 AWS 资源需要使用 CloudFormation 进行管理。例如,您(或者另一个团队)可以在迁移的早期阶段创建 IAM 角色Virtual Private CloudRDS 数据库,然后,您必须花时间将它们纳入与最终应用程序相同的堆栈中。在此类情况下,您最终通常需要使用 CloudFormation 从头开始重新创建资源,然后再从原始资源中迁移配置和数据。


要想使这些步骤对客户更加容易,您现在可以将现有资源导 CloudFormation 堆栈中!


已经可以通过将 DeletionPolicy 设置为保留来在不删除资源的情况下将其从堆栈中删除。这一点与新的导入操作一起提供了一系列新的可能性。例如,您现在能够:


  • 创建新堆栈以导入现有资源。

  • 在已经创建的堆栈中导入现有资源。

  • 在堆栈间迁移资源。

  • 修复检测到的偏离

  • 通过从一个父级堆栈中删除子堆栈,然后将其导入另一个父级堆栈来重构嵌套堆栈


要将现有资源导入 CloudFormation 堆栈,您需要提供:


  • 描述整个堆栈的模板,同时包括要导入的资源和(对于现有堆栈)和已经属于堆栈一部分的资源。

  • 要导入的每个资源在模板中都必须有一个 DeletionPolicy 属性。这样一来,便能以完全安全的方式轻松恢复操作。

  • 每个目标资源的唯一标识符,例如,Amazon DynamoDB 表的名称或您要导入的 Amazon Simple Storage Service (S3) 存储桶的名称。


CloudFormation 会在资源导入操作期间检查如下内容:


  • 导入的资源不属于同一个区域中的另一个堆栈(注意 IAM 角色等全局资源)。

  • 目前资源存在,且您拥有足够的权限来执行操作。

  • 属性和配置值对于资源类型架构是有效的,资源类型架构对其所需的可接受的属性和支持的值进行了定义。


资源导入操作没有检查模板配置和实际配置是否相同。由于导入操作支持与偏离检测相同的资源类型,我建议在将资源导入堆栈后运行偏离检测。


**将现有资源导入新堆栈中


**我的 AWS 账户中拥有一个 S3 存储桶和一个 DynamoDB 表,它们里面都包含一些数据,我希望使用 CloudFormation 来管理它们。 在 CloudFormation 控制台中,我拥有两个新选项:


  • 我可以创建新堆栈以导入现有资源。



  • 我可以将资源导入现有堆栈中。



在此情况下,我想要从头开始,因此,我创建了新堆栈。 接下来,提供一个包含要导入资源的模板。



我上传了包含两个要导入资源(DynamoDB 表和 S3 存储桶)的以下模板。


YAML


AWSTemplateFormatVersion: "2010-09-09"Description: Import testResources:
ImportedTable: Type: AWS::DynamoDB::Table DeletionPolicy: Retain Properties: BillingMode: PAY_PER_REQUEST AttributeDefinitions: - AttributeName: id AttributeType: S KeySchema: - AttributeName: id KeyType: HASH
ImportedBucket: Type: AWS::S3::Bucket DeletionPolicy: Retain
复制代码


在此模板中,我将两种资源的 DeletionPolicy 均设置为保留。用此方式,当您从堆栈中移除它们时不会将它们删除。对于包含您不想错误删除的数据的资源或您可能希望在未来移动到另一个堆栈的资源,这是一个很好的选项。 对于已导入的资源,必须设置一个删除策略,以便您可以轻松安全地恢复操作,防止错误地删除其他人导入的资源。


现在,我必须提供一个标识符来将模板中的逻辑 ID 与现有资源映射。在本例中,我使用 DynamoDB 表名称和 S3 存储桶名称。对于其他资源类型,可能存在多种标识方式,您可以在下拉菜单中选择要使用的属性。



在最终的回顾中,我先查看了更改,然后再进行应用。 在此,我检查并确认,我用正确的标识符锁定了要导入的正确资源。 这实际上是将在我导入资源时执行的 CloudFormation 更改集



将资源导入某个现有堆栈时,不允许对该堆栈的现有资源进行更改。导入操作只允许对导入进行更改集操作。 只要更改参数不会对现有资源的属性解析值造成变化,即可允许此更改。您可以更改现有资源的模板,从而将硬编码值替换为待导入资源的 Ref。 例如,您可能拥有一个包含 EC2 实例的堆栈,该堆栈使用通过控制台创建的现有 IAM 角色。您现在可以将 IAM 角色导入堆栈中,并在模板中将 EC2 实例使用的硬编码值替换为该角色的 Ref


接下来,每个资源在 CloudFormation 控制台中都有其相应的导入事件。



当导入完成时,我在资源选项卡中看到 S3 存储桶和 DynamoDB 表已成为堆栈的一部分。



为确保导入的资源与堆栈模板同步,我使用了偏离检测。



所有的堆栈级标签,包括自动创建的标签都会填充到 CloudFormation 支持的资源中。例如,我可以使用 AWS CLI 将标签集与我刚导入堆栈中的 S3 存储桶关联。这些标签为我提供 CloudFormation 堆栈名称和 ID,以及堆栈模板中的资源的逻辑 ID:


$ aws s3api get-bucket-tagging --bucket danilop-toimport


Json


{  "TagSet": [    {      "Key": "aws:cloudformation:stack-name",      "Value": "imported-stack"    },    {      "Key": "aws:cloudformation:stack-id",      "Value": "arn:aws:cloudformation:eu-west-1:123412341234:stack/imported-stack/..."    },    {      "Key": "aws:cloudformation:logical-id",      "Value": "ImportedBucket"    }  ]}
复制代码


**现已推出


**您可以在以下区域通过控制台AWS 命令行界面 (CLI)AWS 软件开发工具包使用新的 CloudFormation 导入操作:美国东部(俄亥俄)、美国东部(弗吉尼亚北部)、美国西部(加利福尼亚北部)、美国西部(俄勒冈)、加拿大(中部)、亚太地区(孟买)、亚太地区(首尔)、亚太地区(新加坡)、亚太地区(悉尼)、亚太地区(东京)、欧洲(法兰克福)、欧洲(爱尔兰)、欧洲(伦敦)、欧洲(巴黎)和南美洲(圣保罗)。


现在,您可以更简单的管理您的基础设施即代码,要了解更多信息,您可以参见文档中的将现有资源引入 CloudFormation 管理


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/new-import-existing-resources-into-a-cloudformation-stack/


2019-11-22 08:00759

评论

发布
暂无评论
发现更多内容

ListView的数据更新问题

芯动大师

ListView 数据更新 demo源码

「降本」有可能,「增效」不确定

Java 架构 程序人生 职场

IoTLink 版本更新 v1.8.0

山东云则信息科技

物联网平台 物联网 springboot

尚硅谷SSM项目视频发布

小谷哥

支付宝小程序迁移至 FinClip

FinClip

尚硅谷禹神版前端入门教程发布

小谷哥

TCL 拥抱云原生,实现 IT 成本治理优化

阿里巴巴云原生

阿里云 云原生 IT IT治理

基于声网 Flutter SDK 实现多人视频通话

声网

flutter RTC RTE 视频通话

轻量级、简化、QDSAA—特斯拉 IT风格曝光160p Investor Day完整PPT

B Impact

尚硅谷Java课程进化升级

小谷哥

稳中求进的转折之年,企业如何重启“增长飞轮”?

脑极体

京东

【MapStruct】引入MapStruct之后,项目启动java:找不到符号

No8g攻城狮

springboot 异常处理

架构实战营模块三作业

null

当TO B客户说“没有预算”时,怎么卖SaaS|SaaStr观点

B Impact

Android通用缓存存储设计实践

杨充

流量控制--MQTT 5.0新特性

EMQ映云科技

物联网 IoT mqtt 流量控制 企业号 3 月 PK 榜

字节跳动新一代云固件Cloud Firmware 2.0来啦

字节跳动技术范儿

云计算 Linux OCP

MSE 诊断利器上线

阿里巴巴云原生

阿里云 云原生 微服务引擎

配运基础数据缓存瘦身实践

京东科技开发者

数据库 redis 缓存 key 企业号 3 月 PK 榜

阿里云与 Kubecost 合作,容器服务 ACK 支持使用 Kubecost 进行成本管理

阿里巴巴云原生

阿里云 云原生 容器服务

使用NineData构建任意时间点(PITR)数据恢复能力

NineData

开发者 数据恢复 dba 数据备份 全量同步

模块一作业

只因

架构训练营

Vue 项目如何迁移小程序

FinClip

读者1群辛辣反馈,关于《中国式SaaS有没有希望(能赚钱吗)?|内行深度PK ​》

B Impact

Chrome 无魔法使用新必应(New Bing)聊天机器人

kcodez

chrome ChatGPT newbing 新必应

自动化离线交付在云原生的应用和思考

京东科技开发者

云原生 离线 企业号 3 月 PK 榜 自动化交付

三天吃透消息队列面试八股文

程序员大彬

Java 消息队列

OpenYurt 在龙源 CNStack 云边协同项目的应用

阿里巴巴云原生

阿里云 开源 云原生 openyurt

3DCAT+一汽奥迪:共建线上个性化订车实时云渲染方案

3DCAT实时渲染

实时云渲染 实时渲染云 3D实时云渲染

二本毕业,靠学姐帮助混进大厂,女朋友却离我而去

程序员晚枫

程序员 女朋友 大厂 校招

将现有资源导入 CloudFormation 堆栈中_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章