标签: terraform-provider-aws

Terraform 升级提供程序

在现有的 Terraform 目录中:

~ terraform version  
Terraform v0.11.11
+ provider.aws v1.51.0
Run Code Online (Sandbox Code Playgroud)

如果我设置了一个新的 Terraform 目录:

~ terraform version
Terraform v0.11.11
+ provider.aws v1.55.0
Run Code Online (Sandbox Code Playgroud)

如何升级我的provider.aws?如果我设置version = "~> 1.55.0"provider "aws"我的.tf文件,我得到一个错误:

* provider.aws: no suitable version installed
  version requirements: "~> 1.55.0"
  versions installed: "1.51.0"
Run Code Online (Sandbox Code Playgroud)

我希望找到一个terraform update命令或类似的东西。但我找不到那个。

我不应该升级提供程序吗?我需要删除状态,重新运行init然后refresh吗?或者,还有更好的方法?

terraform terraform-provider-aws

8
推荐指数
3
解决办法
5338
查看次数

如何使用 terraform 创建具有访问权限和密钥的 AWS IAM 服务帐户

我想使用 terraform 而不是控制台创建具有访问权限和密钥的 IAM 用户(服务帐户)。我怎样才能做到这一点?谢谢,迪帕克

terraform-provider-aws

8
推荐指数
1
解决办法
2万
查看次数

如何使用 Terraform 创建 AWS Cognito 用户

我想使用 Terraform 创建一个测试用户的AWS Cognito 用户池。创建用户池非常简单:

resource "aws_cognito_user_pool" "users" {
  name = "${var.cognito_user_pool_name}"
  admin_create_user_config {
    allow_admin_create_user_only = true
    unused_account_validity_days = 7
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,我找不到创建 AWS Cognito 用户的资源。使用AWS Cli是可行的

aws cognito-idp admin-create-user --user-pool-id <value> --username <value>
Run Code Online (Sandbox Code Playgroud)

关于如何使用 Terraform 做到这一点的任何想法?

amazon-cognito terraform terraform-provider-aws

8
推荐指数
2
解决办法
5618
查看次数

地形变量中的地图内的地图

有谁知道是否有可能用代码片段来表示我是否可以在 terraform 变量的地图变量中创建地图变量?

variable "var" {
  type = map
  default = {
    firstchoice = {
      firstAChoice ="foo"
      firstBChoice = "bar"
    }
    secondchoice = {
      secondAChoice = "foobar"
      secondBChoice = "barfoo"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

如果有人对这是否可行或任何详细说明的文档有任何见解,那就太好了。

variables terraform terraform-provider-aws

8
推荐指数
2
解决办法
1万
查看次数

如何使用 terraform 重新启动 EC2 实例而不破坏它们?

我想知道我们如何停止和重新启动使用 terraform 创建的 AWS ec2 实例。有没有办法做到这一点?

terraform terraform-provider-aws

8
推荐指数
1
解决办法
7814
查看次数

启动源实例时出错:UnauthorizedOperation:您无权执行此操作

我尝试使用 Terraform 启动 EC2 实例,但收到以下错误:

启动源实例时出错:UnauthorizedOperation:您无权执行此操作。

我已将 AdministratorAccess 策略应用到我的 IAM 帐户,因此我想应该不存在 IAM 限制问题。

另外,我为我的帐户启用了 MFA,但我使用的是 STS 令牌,并且 API 调用正在从 Amazon 接受,因此这也不应该是问题。

我使用的 Terraform 代码非常简单:

provider "aws"{
    region="us-east-1"
}
resource "aws_instance" "web" {
  ami           = "ami-00d4e9ff62bc40e03"
  instance_type = "t2.micro"
  tags = {
    Name = "HelloWorld"
  }
}
Run Code Online (Sandbox Code Playgroud)

请您帮助我,因为我厌倦了很多事情,但我没能解决这个问题。及时感谢!

amazon-web-services terraform terraform-provider-aws

8
推荐指数
3
解决办法
2万
查看次数

如何在 terraform 应用期间忽略重复资源错误?

我正在尝试使用重新应用我的更改terraform apply,但是当我再次执行此操作时,它会给我错误,资源已存在并停止部署。

例子:

Error: AlreadyExistsException: An alias with the name arn:aws:kms:us-east-1:490449857273:alias/continuedep-cmk-us-east-1 already exists
        status code: 400, request id: 4447fd20-d33b-4c87-891e-cc5e09cc6108

  on ../../../modules/kms_cmk/main.tf line 11, in resource "aws_kms_alias" "keyalias":
  11: resource "aws_kms_alias" "keyalias" {



Error: Error creating DB Subnet Group: DBSubnetGroupAlreadyExists: The DB subnet group 'continuedep-sbg' already exists.
        status code: 400, request id: 97d662b6-79d4-4fde-aaf7-a2f3e5a0bd9e

  on ../../../modules/rds-postgres/main.tf line 2, in resource "aws_db_subnet_group" "generic_db_subnet_group":
   2: resource "aws_db_subnet_group" "generic_db_subnet_group" {
Run Code Online (Sandbox Code Playgroud)

同样,我在许多其他现有资源中遇到错误。我想避免/忽略此类错误并继续我的部署。

我还可以使用什么其他方式从中间中断的地方重新启动我的 terraform 资源部署。

我的地形版本是: Terraform v0.12.9

terraform terraform-provider-aws

8
推荐指数
1
解决办法
1万
查看次数

从 Terraform 地图变量中提取键/值

我试图从 terraform 地图变量中提取左值和右值,但无法提取左值。下面是我的代码:-

variables.tf
  variable "notebook" {
    type = "map"
    default = {
    "01" = "a@a.com"
    "02" = "b@a.com"
    "03" = "c@a.com"
    "04" = "d@a.com"
    ......
  }
}
Run Code Online (Sandbox Code Playgroud)

下面是我在 main.tf 中的模块

 module "instance" {
   instance_ip = ["1.1.1.x", "1.1.2.y", "1.1.1.z","1.1.2.p"]
   dns         = ["x", "y", "z","p"]
   name        = ["a", "b", "c",  "d"]
 }
Run Code Online (Sandbox Code Playgroud)

输出应如下所示:-

 module "instance" {
   instance_ip = ["1.1.1.01", "1.1.2.02", "1.1.1.03","1.1.2.04" and so on]
   dns         = ["01", "02", "03","04" and so on]
   name        = ["a@a.com", "b@a.com", "c@a.com", "d@a.com and so on] …
Run Code Online (Sandbox Code Playgroud)

terraform terraform-provider-aws

8
推荐指数
1
解决办法
2万
查看次数

创建 AWS 路由表以使子网可公开访问时 Terraform“不支持路由目标”

使用 terraform v0.12.21 和 AWS provider v2.51.0,我试图从头开始创建一些基础设施(没有以前的 terraform 状态)。

目标是在单个 VPC 中拥有一些可公开访问的 EC2 实例,我认为这些是我需要完成的资源:

  • 专有网络
  • VPC中的互联网网关
  • VPC 中的子网
  • VPC 中用于将子网连接到 Internet 网关的路由表
  • 将子网连接到路由表的路由表关联
  • VPC中的一个安全组,将为实例设置
  • 多个 EC2 实例

使用这个 terraform 配置:

locals {
  office_cidr = ["x.x.x.x/32", "x.x.x.x/32"]
}

provider "aws" {
  region  = var.region
  version = "~> 2.51"
}

resource "aws_vpc" "main" {
  cidr_block       = "10.0.0.0/16"
  instance_tenancy = "default"
}

resource "aws_internet_gateway" "gw" {
  vpc_id = aws_vpc.main.id
}

resource "aws_subnet" "main" {
  vpc_id     = aws_vpc.main.id
  cidr_block = "10.0.1.0/24"
}

resource "aws_route_table" …
Run Code Online (Sandbox Code Playgroud)

routing amazon-ec2 vpc terraform terraform-provider-aws

8
推荐指数
1
解决办法
3127
查看次数

使用依赖存储桶名称的模板设置 S3 存储桶策略时如何避免循环错误?

我有一个terraform运行时失败的文件,terraform plan我收到错误消息:

Error: Cycle: module.hosting.data.template_file.bucket_policy, module.hosting.aws_s3_bucket.website
Run Code Online (Sandbox Code Playgroud)

这是有道理的,因为存储桶指的是策略,反之亦然:

data "template_file" "bucket_policy" {
  template = file("${path.module}/policy.json")
  vars = {
    bucket = aws_s3_bucket.website.arn
  }
}

resource "aws_s3_bucket" "website" {
  bucket = "xxx-website"

  website {
    index_document = "index.html"
  }

  policy = data.template_file.bucket_policy.rendered
}
Run Code Online (Sandbox Code Playgroud)

如何避免这种双向引用?

amazon-web-services terraform terraform-template-file terraform-provider-aws

8
推荐指数
2
解决办法
715
查看次数