如何在 AWS 中已有的 Terraform 资源(手动创建)中使用?

2024-04-27

有没有办法在我的 AWS 帐户中使用手动创建的 terraform 资源?我不想改变它们,老实说,我不想“碰”它们。我只需要为我正在创建的环境提供一些资源。 例如,vpc 和 IAM。

我读过一些有关导入的内容,但我不确定这就是答案吗?


Terraform 有两种使用其所应用的上下文或目录之外存在的资源的方法。

第一个是数据源 https://www.terraform.io/docs/configuration/data-sources.html它允许您查找现有资源并将有关它们的信息传递给其他资源。这aws_ami数据源 https://www.terraform.io/docs/providers/aws/r/instance.html文档提供了这个有用的示例:

data "aws_ami" "ubuntu" {
  most_recent = true

  filter {
    name   = "name"
    values = ["ubuntu/images/hvm-ssd/ubuntu-trusty-14.04-amd64-server-*"]
  }

  filter {
    name   = "virtualization-type"
    values = ["hvm"]
  }

  owners = ["099720109477"] # Canonical
}

resource "aws_instance" "web" {
  ami           = "${data.aws_ami.ubuntu.id}"
  instance_type = "t2.micro"

  tags = {
    Name = "HelloWorld"
  }
}

这允许 Terraform 获取与数据源中指定的条件匹配的现有 AMI,选择最新的 AMI,然后将 AMI 的 ID 传递给aws_instance资源,以便从该 AMI 构建它。

即使您使用 Terraform 创建所有资源,这仍然很有用,因为它允许您拆分 Terraform 配置以限制爆炸半径并控制同时更新的内容,同时仍然允许您访问有关这些资源的信息。这aws_subnet_ids https://www.terraform.io/docs/providers/aws/d/subnet_ids.html文档中有一个示例提供了一个很好的示例,其中子网可能是由 Terraform 在与您要创建的实例不同的上下文或目录中创建的:

data "aws_subnet_ids" "private" {
  vpc_id = "${var.vpc_id}"

  tags = {
    Tier = "Private"
  }
}

resource "aws_instance" "app" {
  count         = "3"
  ami           = "${var.ami}"
  instance_type = "t2.micro"
  subnet_id     = "${element(data.aws_subnet_ids.private.ids, count.index)}"
}

利用现有资源的第二种方法是将它们导入该州 https://www.terraform.io/docs/import/index.html。这允许 Terraform 开始管理现有资源,就像 Terraform 最初创建它们一样。因此,当您下次运行时,对 Terraform 配置所做的任何更改都将应用于现有资源terraform apply。这也意味着如果你跑了terraform destroy那么该资源将被删除。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 AWS 中已有的 Terraform 资源(手动创建)中使用? 的相关文章

随机推荐

  • 修复核心数据失败

    我的应用程序商店中有一个使用 Core Data 的应用程序 我必须在明天之前发布更新 但是 我在使用 Core Data 时遇到了一些问题 我错误地更改了 Core Data 中的模型 现在我的应用程序崩溃了 我尝试迁移数据 但当我在 i
  • 如何在项目之间移动 TFS 2010 构建定义?

    我有一些在 ProjectX 下创建的 TFS 2010 构建定义 现在源代码已移至 ProjectY 下属的文件夹中 如何将构建定义移至 ProjectY 以便它们显示在 ProjectY 的团队资源管理器的构建节点下 我认为没有现成的东
  • intellij 中的搜索到处停止工作

    当我在 intellij 中到处搜索时 我只得到我处理过的最新文件 而不是完整的结果 除了重新安装还有什么办法可以解决这个问题吗 尝试使用 Ctrl shift R 吗 这就像到处搜索一样 也允许您替换单词
  • 类数据默认初始化

    我有以下代码 include
  • 如何让我的用户脚本也在隔离沙箱和 unsafeWindow 中执行代码?

    对于我的用户脚本中的大部分代码 我需要使用unsafeWindow对于我的脚本执行的网站 我通过使用来做到这一点 grant unsafeWindow 但是 我的一些代码无法执行unsafeWindow并且需要在 Tampermonkey
  • 如何从后端路由内的第三方API获取?

    尝试从第三方 url 获取 JSON 数据并将其带到我的后端路由 首先 我将查询字符串输入到应用程序的 url 中 并将它们存储到变量中 并在第三方 url 中使用它 尽管来自应用程序 url 的查询字符串已正确存储 但第二个和第三个查询字
  • 如何从 Visual Studio Online 在 FTP 上部署工件?

    我已经在 Visual Studio Online 上设置了自动构建 并且能够在构建下获取工件 现在我想在 FTP 上部署工件 由于我的网站托管在 GoDaddy 上 并且他们为我提供了 FTP 帐户 任何人都可以帮我设置此帐户吗 这可以通
  • Reactjs中的递归函数

    我正在使用递归函数制作动态菜单 并且我已经制作了菜单并且它以正确的顺序显示 没有任何问题 我从以下位置收到菜单数据服务 js文件 您可以在下面的代码沙箱示例中看到整个工作应用程序 https codesandbox io s reactst
  • 为什么 jquery $.ajax 会删除数据中的换行符而 $.get 不会?

    我使用 ajax 和 get 调用相同的 PHP 脚本 并得到两个不同的结果 ajax 会从通过函数传递的数据中去除换行符 而 get 不会 我尝试将 dataType 显式设置为 text 和 html 但没有成功 get 的大多数参数默
  • 如何使 Java 中的自定义泛型类型链表排序?

    我正在用 java 编写自己的泛型链表 而不是使用 java 集合链表 链表的add方法由以下代码组成 public void add T item int position Node
  • 如何更改 Android 设备上的 MAC 地址? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 有没有一种简单的方法可以手动更改 A
  • 如何从分叉中签出 PR?

    我正在使用 github 托管一些项目 有人分叉了我的存储库并提交了 pr 我以前从未需要在 fork 中测试 pr 我如何检查分支并测试它 我可以如何将其放入我的仓库中吗 或者我应该检查分叉并以这种方式测试分支吗 您不需要访问叉子 只需使
  • 如何在两个图像之间淡出和淡出?

    好的 这里有一点帮助 所以我的启动屏幕中加载了两个图像 第一个图像打开 启动启动画面 然后第二个图像打开 一旦第二个图像关闭 主活动就会开始 现在我的问题是如何使我的第一张图像淡出 然后淡入第二张图像 哦 是的 而且没有交叉淡入淡出 只是完
  • 在辅助方法中 React i18next useTranslation Hook

    我正在使用 React 和react i18next 我的 index tsx 文件包含一些组件 我可以在那里使用翻译功能 index js import React Suspense from react import ReactDOM
  • 检查数组中元素的数据类型是否为日期对象的最简单方法?

    我想创建一个条件来检查数组中元素的数据类型 由电子表格中的数据组成 是否是日期对象 因此 我可以操纵该日期的字符串格式 因为我不想要像这样的日期 Thu May 23 2013 00 00 00 GMT 0400 EDT 但像这样 23 0
  • 如何在 Microsoft Edge 上运行本机消息传递示例?

    我想跑安全输入 https github com MicrosoftEdge MicrosoftEdge Extensions Demos tree master SecureInput例如 但在我构建并部署 NativeMessaging
  • 有没有一种好的方法可以将每个 Meteor.user 包装在具有原型函数等的对象中?

    我正在尝试想出一种很好的方法来将从 Meteor Accounts Collection 中获取的每个用户包装在一个函数中 包括一些原型辅助函数和来自其他集合的计数等 描述这一点的最佳方法是使用代码 我想要包装每个用户的 User 函数看起
  • Android 支持 v4 22.2.0 的 Proguard 配置

    更新 Gradle Android 构建的依赖关系后使用com android support support v4 22 2 0从本地 Maven extras 存储库 在 SDK 内 Proguard 开始抛出这些问题 Warning
  • 如何避免 Scala 中的可变局部变量?

    避免在 Scala 中使用可变变量被认为是一种很好的做法 来自 Scala 编程 第 2 版 第 52 页 Scala 允许您以命令式风格进行编程 但鼓励您采用更具函数式的风格 后来 Scala 鼓励您倾向于 vals 但最终达到适合手头工
  • 如何在 AWS 中已有的 Terraform 资源(手动创建)中使用?

    有没有办法在我的 AWS 帐户中使用手动创建的 terraform 资源 我不想改变它们 老实说 我不想 碰 它们 我只需要为我正在创建的环境提供一些资源 例如 vpc 和 IAM 我读过一些有关导入的内容 但我不确定这就是答案吗 Terr