AWS と Terraform のインテグレーション

Terraform を使うと、Datadog IAM ロール、ポリシードキュメント、Datadog-AWS インテグレーションを 1 つの terraform apply コマンドで作成することが可能です。

  1. Datadog Terraform プロバイダーを構成し、Terraform の構成で Datadog API と対話するように設定します。

  2. 以下の例を基本テンプレートとして、Terraform の構成ファイルを設定します。変更を適用する前に、以下のパラメーターを確実に更新してください。

    • AWS_PERMISSIONS_LIST: Datadog AWS インテグレーションが必要とする IAM ポリシー。現在のリストは、Datadog AWS インテグレーションのドキュメントで確認できます。
    • AWS_ACCOUNT_ID: AWS アカウント ID。

さらなる使用例やオプションパラメーターの全リスト、Datadog の追加リソースについては、Terraform Registry を参照してください。

data "aws_iam_policy_document" "datadog_aws_integration_assume_role" {
  statement {
    actions = ["sts:AssumeRole"]

    principals {
      type = "AWS"
      identifiers = ["arn:aws:iam::464622532012:root"]
    }
    condition {
      test = "StringEquals"
      variable = "sts:ExternalId"

      values = [
        "${datadog_integration_aws.sandbox.external_id}"
      ]
    }
  }
}

data "aws_iam_policy_document" "datadog_aws_integration" {
  statement {
    actions = [<AWS_PERMISSIONS_LIST>]

    resources = ["*"]
  }
}

resource "aws_iam_policy" "datadog_aws_integration" {
  name = "DatadogAWSIntegrationPolicy"
  policy = "${data.aws_iam_policy_document.datadog_aws_integration.json}"
}

resource "aws_iam_role" "datadog_aws_integration" {
  name = "DatadogAWSIntegrationRole"
  description = "Role for Datadog AWS Integration"
  assume_role_policy = "${data.aws_iam_policy_document.datadog_aws_integration_assume_role.json}"
}

resource "aws_iam_role_policy_attachment" "datadog_aws_integration" {
  role = "${aws_iam_role.datadog_aws_integration.name}"
  policy_arn = "${aws_iam_policy.datadog_aws_integration.arn}"
}

resource "datadog_integration_aws" "sandbox" {
  account_id  = "<AWS_ACCOUNT_ID>"
  role_name   = "DatadogAWSIntegrationRole"
}
  1. terraform apply を実行します。データ収集が開始されるまで最大 10 分待ち、すぐに使える AWS 概要ダッシュボードを表示し、AWS サービスやインフラストラクチャーから送信されるメトリクスを確認します。

お役に立つドキュメント、リンクや記事: