ツナワタリマイライフ

日常ネタから技術ネタ、音楽ネタまで何でも書きます。

Terraform aws provider PR / lambdaのnode engine v6.10のEOL対応

はじめに

github.com

mergeされた!

これはなにかというと、Lambda側でnodeのengine v6.10がEOLのせいでapplyにこけたので、テストとドキュメントを修正した。

もともとは別の aws_lambda_permission resourceのimport supportをやろうとしていた。

github.com

このページの以下のサンプル。

resource "aws_lambda_permission" "allow_cloudwatch" {
  statement_id  = "AllowExecutionFromCloudWatch"
  action        = "lambda:InvokeFunction"
  function_name = "${aws_lambda_function.test_lambda.function_name}"
  principal     = "events.amazonaws.com"
  source_arn    = "arn:aws:events:eu-west-1:111122223333:rule/RunDaily"
  qualifier     = "${aws_lambda_alias.test_alias.name}"
}

resource "aws_lambda_alias" "test_alias" {
  name             = "testalias"
  description      = "a sample description"
  function_name    = "${aws_lambda_function.test_lambda.function_name}"
  function_version = "$LATEST"
}

resource "aws_lambda_function" "test_lambda" {
  filename      = "lambdatest.zip"
  function_name = "lambda_function_name"
  role          = "${aws_iam_role.iam_for_lambda.arn}"
  handler       = "exports.handler"
  runtime       = "nodejs6.10"
}

resource "aws_iam_role" "iam_for_lambda" {
  name = "iam_for_lambda"

  assume_role_policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Effect": "Allow",
      "Sid": ""
    }
  ]
}
EOF
}

runtime = "nodejs6.10"

ここね。

EOLになってるので The runtime parameter of nodejs6.10 is no longer supported for creating or updating AWS Lambda functions. という怒られが発生する。

aws.amazon.com

代わりに10.xが使えるので、古い世代をやめて1世代分送った感じ。

今回は実装ではないにせよ、ドキュメントの修正も大事な貢献だと思う。ちなみにaws providerのdocumentは website 以下にあるので気づいたらどんどんPR投げたらいいと思う。

github.com

おわりに

方針がよくわかんなかったのでとりあえずreplaceして投げたら丁寧にコメントくれて、その指摘に対応したらマージされた。

昨日からこのリポジトリのissue/PRをwatchしてるけど、かなりのスピードでReview/Mergeされていて、Hashicorpのcore committerたちしっかり働いています。いずれも24時間以内に反応もらえる感じです。

次は元々やろうとしてた lambda_permission のimportをやろうと思う。