amazon-web-services - Terraform:使用存储在 AWS CodeCommit 中的版本化模块

标签 amazon-web-services terraform aws-codecommit

目前有一个用于存储在 AWS CodeCommit 中的 Terraform 模块的存储库。在 Dev 和 Prod 之间,我们希望为模块使用相同的存储库,但能够让 Dev 和 Prod 使用不同的版本。

我已将标签附加到特定的提交,以便更容易地区分版本。但我似乎找不到任何关于如何引用该标签的文档。

我在 github 上找到了下面的例子来说明它是如何完成的

module "stage_vpc" {
  source = "git::git@github.com:gruntwork-io/module-vpc.git//modules/vpc-app?ref=v0.0.4"

  vpc_name         = "stage"
  aws_region       = "us-east-1"
  num_nat_gateways = 3
  cidr_block       = "10.2.0.0/18"
}

但尝试对 CodeCommit 做同样的事情似乎并不奏效。它报告“错误的响应代码:401”

试图确定这个 ?ref 是否是在 codecommit 中引用标签的正确方法。

https://git-codecommit.eu-west-1.amazonaws.com/v1/repos/reddwarf-terraform-infrastructure-modules/modules/subnets?ref=subnets-v0.0.1

任何人都可以确认这是否是正确的方法吗?或者还有其他方法吗?

编辑:我现在已经按照设置指南创建了一个 SSH key ,并将其放入我的 IAM 用户中。

module "subnets" {
  source = "git::ssh://git-codecommit.eu-west-1.amazonaws.com/v1/repos/reddwarf-terraform-infrastructure-modules/Modules//subnets.git"

产生了以下错误

bobscutter@git-codecommit.eu-west-1.amazonaws.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

./ssh 文件夹存在正确的凭据,不确定我还缺少什么。我还检查了我可以从 Git Bash 连接并且它有效。

最终编辑:从 https 切换到 SSH 并根据 The AWS documentation 创建 ./ssh 目录后,现在可以正常工作了

我只需要在下面的路径中添加//而不是/

  source = "git::ssh://git-codecommit.eu-west-1.amazonaws.com/v1/repos/reddwarf-terraform-infrastructure-modules//Modules//modules-orchestration//subnets

Terraform 成功找到并应用了模块。

最佳答案

对于任何来到这里想知道您是否可以使用 git-remote-codecommit 的人使用 terraform 从 CodeCommit 克隆。答案是肯定的,你可以!

根据 the terraform docs

Terraform installs modules from Git repositories by running git clone, and so it will respect any local Git configuration set on your system, including credentials.

这意味着只要您的 AWS 配置文件设置正确,您就可以设置您的模块 source使用以下任一格式到 codecommmit 存储库

  • codecommit://<profile>@<repository>
  • codecommit::<region>://<profile>@<repository>

它还尊重通过环境变量的配置,如 AWS_PROFILEAWS_DEFAULT_REGION

关于amazon-web-services - Terraform:使用存储在 AWS CodeCommit 中的版本化模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62516401/

相关文章:

amazon-web-services - 服务无法放置任务

java - 无法在本地 Java 上调用 Lambda AWS

linux - 如何进行持续部署 - C++ on AWS

amazon-web-services - Terraform:将 SEARCH 表达式与 CloudWatch 警报结合使用

azure - 在通过 Terraform 创建的可公开访问的 Azure 实例上运行 ifconfig 时没有公共(public) IP

azure - Terraform azurerm azurerm_data_factory_dataset_binary 参数定义

git - 如何设置自定义子域映射到 aws codecommit?

Git 为每次推送继续构建我的 'known_hosts' 文件

java - AWS SWF Java : Activity returns value but promise never becomes ready

aws-cloudformation - CodePipeline - 遇到不支持的属性配置