L’utilisation de Terraform vous permet de créer le rôle IAM Datadog, le document de stratégie et l’intégration Datadog/AWS à l’aide d’une seule commande terraform apply.

  1. Configurez le fournisseur Terraform Datadog pour interagir avec l’API Datadog via une configuration Terraform.

  1. Définissez votre fichier de configuration Terraform en utilisant l’exemple ci-dessous comme modèle. Mettez à jour les paramètres suivants avant d’appliquer les modifications :

    • AWS_PERMISSIONS_LIST : Les stratégies IAM requises pour les intégrations Datadog/AWS. La liste actuelle est disponible dans la documentation de l’intégration Datadog/AWS.
    • AWS_ACCOUNT_ID : L’ID de votre compte AWS.

    Consultez la page sur la ressource de l’intégration Datadog/AWS dans le registre Terraform pour obtenir d’autres exemples d’utilisation, la liste complète des paramètres facultatifs, ainsi que des ressources Datadog supplémentaires.

    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 "aws_iam_role_policy_attachment" "datadog_aws_integration_security_audit" {
       role = "${aws_iam_role.datadog_aws_integration.name}"
       policy_arn = "arn:aws:iam::aws:policy/SecurityAudit"
    }
    
    resource "datadog_integration_aws" "sandbox" {
       account_id  = "<AWS_ACCOUNT_ID>"
       role_name   = "DatadogAWSIntegrationRole"
    }
    

  1. Définissez votre fichier de configuration Terraform en utilisant l’exemple ci-dessous comme modèle. Mettez à jour les paramètres suivants avant d’appliquer les modifications :

    • AWS_PERMISSIONS_LIST : Les stratégies IAM requises pour les intégrations Datadog/AWS. La liste actuelle est disponible dans la documentation de l’intégration Datadog/AWS.
    • AWS_ACCOUNT_ID : L’ID de votre compte AWS.

    Consultez le registre Terraform pour obtenir d’autres exemples d’utilisation, la liste complète des paramètres facultatifs ainsi que des ressources Datadog supplémentaires.

    data "aws_iam_policy_document" "datadog_aws_integration_assume_role" {
       statement {
       actions = ["sts:AssumeRole"]
    
       principals {
          type = "AWS"
          identifiers = ["arn:aws:iam::417141415827: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. Si vous utilisez des clés d’accès pour installer l’intégration Datadog/AWS, assurez-vous d’avoir créé un utilisateur IAM disposant des autorisations requises ainsi que de la clé d’accès conformément aux instructions de la section Guide de configuration manuelle d’AWS. Remplacez les placeholders dans l’exemple ci-dessous par l’ID de la clé d’accès et la clé d’accès secrète. Pour en savoir plus sur l’utilisation de Terraform pour configurer l’utilisateur AWS et la clé d’accès associée, consultez les ressources AWS Provider dans le registre Terraform.

    resource "datadog_integration_aws" "sandbox" {
       access_key_id = "<ACCESS_KEY_ID>"
       secret_access_key = "<SECRET_ACCESS_KEY>"
    }
    

  1. Exécutez terraform apply. Patientez 10 minutes le temps que les données commencent à être recueillies, puis accédez au dashboard récapitulatif d’AWS prêt à l’emploi pour visualiser les métriques envoyées par vos services et votre infrastructure AWS.

Documentation, liens et articles supplémentaires utiles: