0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

terraformでcloudfrontにAlarmを設定する

Posted at

今回はterraformでCloudFrontにAlarmを設定してみます。
対象として、前回の記事で作成したCloudFront+S3の環境に対して設定してみます。

#providerのaliasの設定
今回CloudFrontにAlarmを設定しますが、注意点としてCloudFrontのメトリクスは"us-east-1"のリージョンにしか送信されません。
このため、Alarmやその送信先のSNS Topicについてもus-east-1で作成を行う必要があります。

terraformではaliasのパラメータを付けることで、別の設定を持つProviderを設定できるのでus-east-1のProviderを作成しておきます。

provider "aws" {
  alias      = "global"
  access_key = var.aws_access_key
  secret_key = var.aws_secret_key
  region     = "us-east-1"
}

ここでは"global"というalias名で設定しています。

#通知先の作成

SNS Topicの作成

まずはAlarm状態になった際の通知先(SNS Topic)を作成しておきます。
前述したように、us-east-1のリージョンに作成しないと動作しない為、providerパラメータに先ほど作成したglobalのproviderを設定しています。

resource "aws_sns_topic" "tfNotificationGlobalTopic" {
  provider   = aws.global
  fifo_topic = false
  name       = "tfNotificationGlobalTopic"
}

サブスクリプションの登録

次に実際に通知される宛先を登録します。
今回emailを通知先として登録しています。
※登録後に宛先のメールアドレスに確認のメールが飛んできますので、忘れず確認しておいてください。

resource "aws_sns_topic_subscription" "subscription1" {
  provider  = aws.global
  topic_arn = aws_sns_topic.tfNotificationGlobalTopic.arn
  protocol  = "email"
  endpoint  = var.notification_mailaddress
}

※notification_mailaddress(通知先のメールアドレス)はtfvarsで定義しています。

#Alarmの作成
今回は500系エラーの5分間の平均が30%以上になった場合にalarm状態にします。
対象として、前回の作成したcloudfrontのdistibutionを設定し、alarm時のアクションに先ほど作成したtopicを設定しています。

resource "aws_cloudwatch_metric_alarm" "tfWatchAlarm" {
  provider            = aws.global
  namespace           = "AWS/CloudFront"
  alarm_name          = "tfWatchAlarm"
  metric_name         = "5xxErrorRate"
  comparison_operator = "GreaterThanOrEqualToThreshold"
  evaluation_periods  = "1"
  period              = "300"
  statistic           = "Average"
  threshold           = "30"
  dimensions = {
    DistributionId = aws_cloudfront_distribution.distribution.id
    Region         = "Global"
  }

  actions_enabled = true
  alarm_actions   = [aws_sns_topic.tfNotificationGlobalTopic.arn]

}

#まとめ
これらの設定で、CloudFrontに対してAlarmの設定が行えます。
今回はCloudFront+S3の環境に対して設定しており、まず発生することはありませんが、
これらの設定はCloudFrontDistribution全般に対して有効なはずです。

注意点としては、us-east-1のリージョンで設定が必要というところになると思います。

※最終的なコードこちら。
Github - terraform_cfs3_cloudwatch

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?