Lambda InsightsをTerraformで有効化する

課題

Terraform管理のLambda FunctionのLambda Insightsをマネジメントコンソールから有効化すると、次にTerraformをapplyしたときに無効に戻されてしまいます。

それはTerraformに定義されていないのだから当たり前ですが、Terraformで有効化する方法がどこにも見つかりませんでした。

対策

最終的に以下のようにする必要がありました。

resource "aws_lambda_function" "foo" {
...
  layers           = [
    "arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension:14" 
  ]
...
}

"arn:aws:lambda:<region>:580247275435:layer:LambdaInsightsExtension:<revision>"というのはAWS側で定義されたもので、Available versions of the Lambda Insights extensionに記載されています。

末尾のリビジョン番号は、上記URLにあるように、バグ修正や機能追加などで上がっていってしまいます。

リビジョン番号を入れずにapplyしたら常に最新を向くようになったりしないかと思って試しましたが、ValidationExceptionが発生して失敗するだけでした。。

結論

少なくとも現時点では上記URLを見て、最新のリビジョン番号をベタで指定して上げる必要があるようです。