【问题标题】:Terraform - Azure - Extract API from one resource group and import into another resource groupTerraform - Azure - 从一个资源组提取 API 并导入到另一个资源组
【发布时间】:2022-11-23 22:17:04
【问题描述】:

我的开发环境中有 5 个不同的 API。这个环境是手动搭建的。

但是,对于测试、预生产等后续环境,正在使用 Terraform。

由于我需要在后续环境中创建每个 API,我将每个 API 提取为 JSON 文件,对 API URL 进行微调并将其导入新环境。

以下是现在正在做的过程。

  1. 转到 Azure 中的资源组
  2. 然后在 API 管理服务 > API 下,单击必要的 API
  3. 现在,单击我需要的 API 旁边的三个点,然后单击导出
  4. 选定的 OpenAPI v3 (JSON) 格式

    现在,我正在使用提取的 JSON 文件并使用下面的 Terraform 代码将其添加到 APIM

    resource "azurerm_api_management_api" "example" {
      name                = "example-api"
      resource_group_name = azurerm_resource_group.example.name
      api_management_name = azurerm_api_management.example.name
      revision            = "1"
      display_name        = "Example API"
      path                = "api/path"
      protocols           = ["https"]
      service_url         = "https://actualURL-of-the-API"
    
    import {
        content_format = "openapi+json"
        content_value  = file("extracted-filename.json")
      }
     
    }
    

    这里的问题是: 即使 API 被添加到 APIM,这也不会创建所有数据——比如 Web 服务 URL、后端 HTTP(s) 端点

    我该怎么做呢?

【问题讨论】:

    标签: azure terraform apim


    【解决方案1】:

    您是否锁定了导出 Json 文件并通过 Terraform 将其导入其他环境?

    我问的原因是因为我尝试了类似的事情但决定走另一条路。

    最初我在开发环境中手动创建了 API。然后,我仅使用 Terraform 从头开始​​重新创建了相同的 API。没有 Json 导出和导入。 然后,我使用该 Terraform 脚本创建我的其他环境。

    这让我完全绕过了导入问题,因为没有导入任何东西。

    我发现采用这种方法有缺点;通过 Terraform 脚本编写 API 比通过 Azure GUI 编写 API 更不直观。因此,这更耗时。特别是因为我的初始 API 被 Terraform 脚本生成的 API 丢弃了。 此外,我在 Terraform diffs 报告示例更改时遇到了问题,但没有(我怀疑使用导入方法时会遇到同样的问题)。

    如果您想知道为什么我决定走另一条路?原因是双重的;首先,与您类似,我在获取导出/导入以生成我想要的 API 时遇到了麻烦。其次,我不喜欢依赖自动生成的文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      相关资源
      最近更新 更多