50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

将现有资源导入 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:00851

评论

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

Neural Filters神经滤镜插件如何安装?PS神经滤镜插件安装教程

Rose

mac系统 Neural Filters PS滤镜插件 PS20221下载

Go Slice 扩容的这些坑你踩过吗?

王中阳Go

Go golang 高效工作 学习方法 面试题

Perforce研讨会回顾 | Helix Core在芯片行业的应用实例:芯片项目的版本控制、持续集成及自动化

龙智—DevSecOps解决方案

ci cicd 版本控制 持续集成 芯片开发

代码质量与安全 | 免费的静态分析工具好吗?

龙智—DevSecOps解决方案

SAST 静态代码扫描 DAST

如何利用ChatGPT搞科研?

Openlab_cosmoplat

人工智能 开源社区 ChatGPT

Apache Doris 1.2.3 Release 版本正式发布

SelectDB

数据仓库 数据湖 Doris 数据湖Catalog catalog

【IT小知识】扩容是什么意思?扩容的近义词有哪些?

行云管家

扩容 IT运维

GPT-4:不open的OpenAI,终于不再编造事实

鼎道智联

openai ChatGPT4

StyleGAN 生成 AI 虚拟人脸,再也不怕侵犯肖像权

江户川码农

人工智能 AI 图像处理 StyleGAN 人脸生成

阿里巴巴灵魂一问:说说触发HashMap死循环根因

Java你猿哥

Java jdk 后端 ssm

硬核!腾讯大佬最新手打的Spring Boot笔记,从原理到实战再到源码

Java你猿哥

Java Spring Boot 后端 面经

轻松搞定面试拿offer的Java面试宝典(全彩图文版)24个Java技术栈

Java你猿哥

Java 面试 ssm 面经 java技术栈

Atlassian Server用户新选择 | 迁移到数据中心版前,您需要做这些准备(1)

龙智—DevSecOps解决方案

Atlassian Atlassian迁移 数据中心版 server版

Portraiture最新版插件新增哪些功能?

茶色酒

Portraiture4

代码实战带你了解深度学习中的混合精度训练

华为云开发者联盟

人工智能 深度学习 华为云 华为云开发者联盟 企业号 3 月 PK 榜

币安欧意交易所合约跟单平台软件开发详情(api对接)

开发微hkkf5566

EMQ&南洋万邦云边一体化方案:激活数据潜力,打造智慧工业园区

EMQ映云科技

物联网 IoT 工业互联网 智能制造 企业号 3 月 PK 榜

美团二面特点:喜欢写一个 SQL 语句,然后问你加了哪些锁!

Java你猿哥

Java 数据库 sql ssm InnoDB存储引擎

AI笔刷怎样导入?adobe ai笔刷安装教程

Rose

AI画笔 AI教程 Illustrator 2023 下载 AI中文版

TechBits | TCP 使用 WireShark 进行抓包

Java你猿哥

Java 后端 ssm

GO语言集成开发: GoLand 2022 中文激活版

真大的脸盆

Mac 代码开发 Mac 软件 代码编辑 代码编辑工具

见技术大佬,领惊喜好礼!快来领取数据库峰会邀请函!

InfoQ写作社区官方

数据库 云原生 阿里 热门活动 阿里云瑶池数据库峰会

中小企业运维安全审计用什么软件好?有推荐吗?

行云管家

信息安全 堡垒机 运维审计

Java体系最强干货分享—挑战40天准备Java面试,最快拿到offer!

Java你猿哥

Java 后端 ssm 面经 春招

简单小巧的右键助手:MouseBoost for Mac让您的工作效率大幅度提高

Rose

mac效率工具 右键助手 MouseBoost激活版

MQTT 5.0特性Inflight Window&Message Queue

EMQ映云科技

物联网 IoT mqtt emqx 企业号 3 月 PK 榜

CorelDRAW Graphics Suite2023功能介绍

茶色酒

cdr2023

如何基于 Apache Doris 与 Apache Flink 快速构建极速易用的实时数仓

SelectDB

flink 数据湖 实时数仓 Doris 数据库、

京东三面:说说synchronized和volatile的区别

Java你猿哥

Java 面试 ssm 面经 Java多线程

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