标签: terraform-provider-aws

Terraform - aws_cloud_watch_log_metric_filter

有人有尝试在 cloudwatch 日志上设置指标过滤器的经验吗?想知道我是否发现 Terraform 中的错误?

这就是我正在尝试做的事情;

resource "aws_cloudwatch_log_metric_filter" "AWS_Console_Login" {
  name           = "${var.aws_account_id}_Console_Login_Failure"
  pattern        = "{ ($.eventName = ConsoleLogin) && ($.errorMessage = "Failed authentication") }"
  log_group_name  = "${var.aws_cloudtrail_name}"  

  metric_transformation {
    name      = "${var.aws_account_id}_Console_Login_Failure"
    namespace = "AccountMonitoring${var.aws_account_id}"
    value     = "1"
  }
}
Run Code Online (Sandbox Code Playgroud)

当我运行 Terraform apply 或 validate 时,我收到此响应;

错误:解析 cloudwatch.tf 时出错:157:19:预期嵌套对象:LBRACE 得到:ASSIGN

需要明确的是,157:19 与包含 log_group_name 的代码行相关,其中 19 位于 = 符号之前。

不过,我认为这与我的模式有关,如果我删除日志组..并运行我得到的验证;

aws_cloudwatch_log_metric_filter.AWS_Console_Login::无效或未知密钥:失败

我对 AWS 过滤模式的要求是否过高?

谢谢斯蒂芬

terraform terraform-provider-aws

6
推荐指数
1
解决办法
6367
查看次数

摧毁特定的地形基础设施

我使用工作区、本地文件和 -backend-config 使用 terraform 创建了不同环境(测试/产品)的基础设施,因此只有两个不同的文件,其他文件对于这两种环境都是通用的。

不幸的是,我没有找到一种方法以相同的方式破坏特定环境(无需为每个环境创建大量特定文件)。

我错过了什么吗?有办法做到吗?

任何帮助,将不胜感激。

提前致谢 !

问候,

弗洛朗

编辑:感谢您的回答,我设法使用工作区、本地变量和后端配置来做我想做的事情!

terraform terraform-provider-aws

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

指定模块时 terraform init 不起作用

我是 terraform 的新手,并试图解决测试模块时遇到的一个小问题。

以下是我本地计算机中的文件夹结构。

在此输入图像描述

我在存储文件夹级别有以下代码

#-------storage/main.tf

provider "aws" {
  region = "us-east-1"
}

resource "aws_s3_bucket" "my-first-terraform-bucket" {
    bucket = "first-terraform-bucket"
    acl = "private"
    force_destroy = true
}
Run Code Online (Sandbox Code Playgroud)

以下是引用存储模块的 main_code 级别的片段

#-------main_code/main.tf

module "storage" {
    source = "../storage"
}
Run Code Online (Sandbox Code Playgroud)

当我从存储文件夹发出 terraform init / plan / apply 时,它工作得非常好,并且 terraform 创建了 s3 存储桶。

但是当我从 main_code 文件夹中尝试相同的操作时,我收到以下错误 -

main_code@DFW11-8041WL3: terraform init
Initializing modules...
- module.storage
Error downloading modules: Error loading modules: module storage: No Terraform configuration files found in directory: .terraform/modules/0d1a7f4efdea90caaf99886fa2f65e95
Run Code Online (Sandbox Code Playgroud)

我已经阅读了 Stack Overflow …

terraform terraform-provider-aws

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

无法利用现有的 pem 文件通过 terraform 创建 EC2 实例

我想知道如何停止错误消息中的无限循环,以便它创建 AWS EC2 实例?

地形代码如下:

 provider "aws" {
  region = "${var.location}"
}

resource "aws_instance" "ins1_ec2" {
  ami           = "${var.ami}"
  instance_type = "${var.inst_type}"

  tags = {
    Name = "cluster"
  }
  provisioner "remote-exec" {
    inline = [
      "hostnamectl set-hostname centos-76-1",
    ]
  }
}

resource "aws_eip" "ins1_eip" {
  instance = "${aws_instance.ins1_ec2.id}"
  vpc      = false
}

resource "aws_instance" "ins2_ec2" {
  ami           = "${var.ami}"
  instance_type = "${var.inst_type}"

 provisioner "remote-exec" {
    inline = [
      "hostnamectl set-hostname centos-76-2",
    ]
  }

  tags = {
    Name = "cluster"
  } …
Run Code Online (Sandbox Code Playgroud)

amazon-ec2 terraform-provider-aws

6
推荐指数
1
解决办法
8686
查看次数

如何配置 AWS 网络负载均衡器以使用 Terraform 路由 HTTPS 流量?

我正在尝试使用 API Gateway\xe2\x80\x99s VPC 链接将流量路由到 HTTPS 上的内部 API。\n但是,VPC 链接迫使我将 API\xe2\x80\x99s 负载均衡器从“应用程序”更改为“网络”。

\n\n

据我所知,网络负载均衡器位于第 4 层,因此不知道 HTTPS。

\n\n

我习惯使用第 7 层应用程序负载均衡器。因此,我不确定应该如何在 terraform 中配置或使用网络负载均衡器。

\n\n

以下是我在 Terraform 中配置网络负载均衡器的尝试。\n健康检查失败,我不确定我做错了什么。

\n\n
resource "aws_ecs_service" \xe2\x80\x9capp\xe2\x80\x9d {\n  name = "${var.env}-${var.subenv}-${var.appname}"\n  cluster = "${aws_ecs_cluster.cluster.id}"\n  task_definition = "${aws_ecs_task_definition.app.arn}"\n  desired_count = "${var.desired_app_count}"\n  deployment_minimum_healthy_percent = 50\n  deployment_maximum_percent = 200\n  iam_role = "arn:aws:iam::${var.account}:role/ecsServiceRole"\n\n  load_balancer {\n    target_group_arn = "${aws_lb_target_group.app-lb-tg.arn}"\n    container_name = "${var.env}-${var.subenv}-${var.appname}"\n    container_port = 9000\n  }\n  depends_on = [\n    "aws_lb.app-lb"\n  ]\n}\n\nresource "aws_lb" \xe2\x80\x9capp-lb" {\n  name               = "${var.env}-${var.subenv}-${var.appname}"\n  internal           = false\n  load_balancer_type = …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-elb terraform aws-api-gateway terraform-provider-aws

6
推荐指数
1
解决办法
4813
查看次数

如何固定 Terraform 提供商?

我正在开发 terraform rds 集群来构建 aurora,有人可以帮助我如何将 aws 提供程序版本固定到 2.0 吗?

这是正确的方法吗?

provider "aws" {
  region = "us-east-1"

  version = "<= 2.0"
}
Run Code Online (Sandbox Code Playgroud)

另外,我的模块之前使用的是 2.46 版本,我在尝试降级时是否应该遵循任何步骤?

使用terraform 0.12.6版本

terraform terraform-provider-aws

6
推荐指数
2
解决办法
5023
查看次数

Terraform 配置 LB 属性失败

我已按照 StackOverflow 上这篇文章的第一个答案进行操作,但收到此错误:

配置 LB 属性失败:InvalidConfigurationRequest:存储桶:myproject-log 的访问被拒绝。请检查S3bucket权限状态码:400

这是我的代码:

s3_bucket

data "aws_elb_service_account" "main" {}

resource "aws_s3_bucket" "bucket_log" {
  bucket = "${var.project}-log"
  acl    = "log-delivery-write"

policy = <<POLICY
{
  "Id": "Policy",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::${var.project}-log/AWSLogs/*",
      "Principal": {
        "AWS": [
          "${data.aws_elb_service_account.main.arn}"
        ]
      }
    }
  ]
}
POLICY

}
Run Code Online (Sandbox Code Playgroud)

负载均衡器

resource "aws_lb" "vm_stage" {
  name = "${var.project}-lb-stg"
  internal           = false
  load_balancer_type = "application"
  subnets         = [aws_subnet.subnet_1.id, aws_subnet.subnet_2.id, aws_subnet.subnet_3.id]
  security_groups = [aws_security_group.elb_project_stg.id]
  access_logs {
    bucket …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services terraform terraform-provider-aws

6
推荐指数
1
解决办法
3842
查看次数

使用 terraform 部署 EKS 节点组时出错

我在使用 Terraform 部署 EKS 集群中的节点组时遇到问题。该错误看起来像是一个插件有问题,但我不知道如何解决它。

如果我在 AWS 控制台(Web)中看到 EC2,我可以看到集群的实例,但集群中出现此错误。

该错误显示在我的管道中:

错误:等待 EKS 节点组 (UNIR-API-REST-CLUSTER-DEV:node_sping_boot) 创建:NodeCreationFailure:实例未能加入 kubernetes 集群。资源 ID:[i-05ed58f8101240dc8]
在 EKS.tf 第 17 行,资源“aws_eks_node_group”“nodes”中:
17:资源“aws_eks_node_group”“nodes”
2020-06-01T00:03:50.576Z [DEBUG]插件:插件进程退出:路径=/home/ubuntu/.jenkins/workspace/shop_infraestucture_generator_pipline/shop-proyect-dev/.terraform/plugins/linux_amd64/terraform-provider-aws_v2.64.0_x4 pid=13475
2020-06-01T00:03:50.576Z [DEBUG]插件:插件已退出

并且错误打印在AWS控制台中:

关联

这是我用来创建项目的 Terraform 中的代码:

EKS.tf用于创建集群和节点

resource "aws_eks_cluster" "CLUSTER" {
  name     = "UNIR-API-REST-CLUSTER-${var.SUFFIX}"
  role_arn = "${aws_iam_role.eks_cluster_role.arn}"
  vpc_config {
    subnet_ids = [
      "${aws_subnet.unir_subnet_cluster_1.id}","${aws_subnet.unir_subnet_cluster_2.id}"
    ]
  }
  depends_on = [
    "aws_iam_role_policy_attachment.AmazonEKSWorkerNodePolicy",
    "aws_iam_role_policy_attachment.AmazonEKS_CNI_Policy",
    "aws_iam_role_policy_attachment.AmazonEC2ContainerRegistryReadOnly",
  ]
}


resource "aws_eks_node_group" "nodes" {
  cluster_name    = "${aws_eks_cluster.CLUSTER.name}"
  node_group_name = "node_sping_boot"
  node_role_arn   = "${aws_iam_role.eks_nodes_role.arn}" …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services kubernetes terraform terraform-provider-aws amazon-eks

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

从头开始 AWS EKS - terraform 还是 eksctl?

使用 terraform 或 eksctl 生成新的 AWKS EKS 集群有什么好处吗?

与另一种相比,是否有一些长期维护的好处?

terraform terraform-provider-aws amazon-eks eksctl

6
推荐指数
1
解决办法
2542
查看次数

Terraform通过数据找到最新的ami

我正在尝试实现某种机制,让某人可以填写一个变量,该变量定义是要部署 Amazon Linux 机器还是自行创建的打包机。但由于某种原因,它在找到我自己的 AMI 的同时却没有找到 AWS AMI。这是代码:

模块的Main.tf:

    data "aws_ami" "latest" {
  most_recent = true
  owners      = [var.owner]

  filter {
    name   = "name"
    values = [lookup(var.default_ami, var.ami)]
  }
}

resource "aws_instance" "test-ec2deployment" {
  ami                         = data.aws_ami.latest.id
Run Code Online (Sandbox Code Playgroud)

变量.tf:

variable "default_ami" {
  type        = map
  description = "Choose windows 2016 or 2019"
  default = {
    "2016"  = "WIN2016-CUSTOM*"
    "2019"  = "WIN2019-CUSTOM*"
    "linux" = "ami-0fb02dcdd38048fb9"
  }
}

#Above are the options, here you need to make a decision.
variable "ami" {
  description …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services terraform terraform-provider-aws terraform0.12+

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