在 Terraform 支持更简洁的 ALB 高级监听规则之前的讨论

这篇文章是关于2019年Nifty集团Advent Calendar第21篇的文章。

昨天我在@shin27的「使用MySQL外部复制在最短时间内将数据库迁移到AWS RDS」的文章中看到了。实际上,我现在和@shin27在同一个部门工作,每天都在看着他努力克服困难,但却十分快乐的样子。

首先

本文将涉及与我在2019年12月14日发布的文章「关于如何更简洁地编写ALB高级监听规则,使用Terraform进行操作的故事」相关的内容,具体将介绍在AWS提供商的v2.41.0之前的世界中,对于管理的方式是如何处理的。

自我介绍

初次见面,我是七。

日常生活中,我会运营现有系统,编写Go程序和Terraform代码,并为了激发工程师们的活力而着手对该系统进行现代化改造。

另外,回顾2019年,最令人难忘的回忆是在第二天参加了「AWS Summit Tokyo 2019」并发表演讲。关于详细情况,您可以在这篇文章中找到,如果您有兴趣,请去看看。

在进入正题之前,让我们复习一下2019年12月14日发布的文章是什么。

「Terraform中ALB高级监听规则的简化书写能力提升的讨论」主要记录了AWS提供商v2.42.0版本中于2019年12月14日(日本时间)发布的有关ALB高级监听规则的更新。

スクリーンショット 2019-12-15 11.03.06.png

我們試試看在 Terraform 中實際撰寫 ALB 的高級監聽規則。

前置环境

    • Terraform v0.12

 

    AWSプロバイダー v2.41.0以前(なおv2.42.0以降でも動きます)

设定内容 (shè

本次将实现一个用于检测Chrome和Safari浏览器的监听规则。
以下是从elb.tf中提取的部分设置。

resource "aws_cloudformation_stack" "http_header_based_routing" {
  name = "http-header-based-routing-stack"

  template_body = <<STACK
  {
      "Resources": {
        "ListenerRuleBasedOnHTTPHeader": {
          "Type": "AWS::ElasticLoadBalancingV2::ListenerRule",
          "Properties": {
            "Actions": [{
              "Type": "forward",
              "TargetGroupArn": "${aws_lb_target_group.tg.arn}"
            }],
            "Conditions": [{
              "Field": "http-header",
              "HttpHeaderConfig": {
                  "HttpHeaderName": "User-Agent",
                  "Values": [
                    "*Chrome*",
                    "*Safari*"
                  ]
              }
            }],
            "ListenerArn": "${aws_lb_listener.front_end.arn}",
            "Priority": 10
          }
        }
      }
  }
  STACK
}

使用以下命令进行部署后,请在AWS管理控制台上确认。

$ terraform init
$ terraform plan
$ terraform apply
スクリーンショット 2019-12-15 12.00.14.png
スクリーンショット 2019-12-15 12.04.35.png

顺便提一下,与以前在Terraform中编写ALB的高级监听规则相比,代码的长度增加了近2倍。乍一看维护起来似乎很麻烦。
不过,由于可以利用现有的CloudFormation代码,所以在遇到CloudFormation写法问题时可以享受到AWS官方支持,并能充分利用官方文档,这样挺好的。同时,对于那些基本上只想用Terraform来写的人来说,这也是一种合适的方法。

总结

這次,我寫了一個比較,作為2019年12月14日所寫文章的對象,在 Terraform 中,講述了在能夠更簡潔地撰寫ALB進階聽取規則之前的情況。在基礎設施運營方面,讓我們一同充分利用現有的代碼並不斷優化。

谢谢你的帮助。明天由@hamakou108负责!请多多关照。

闲谈之一

在我写这篇文章的时候,偶然发现了一篇关于试图将Terraform和AWS云开发工具包(AWS CDK)进行协作的文章。我感到在CDK领域也有人持有同样的想法。

闲聊第二部分

スクリーンショット 2019-12-20 19.57.02.png

请参考下面网站

    • 【まいうー】TerraformからCloudFormationをおいしくいただく | Developers.IO

 

    • AWS::ElasticLoadBalancingV2::ListenerRule – AWS CloudFormation

 

    AWS: aws_cloudformation_stack – Terraform by HashiCorp
广告
将在 10 秒后关闭
bannerAds