Créer un espace de noms avec un Event Hub et activer Capture à l’aide d’un modèle

Cet article explique comment utiliser un modèle Azure Resource Manager qui crée un espace de noms Event Hubs avec une instance de concentrateur d’événements, et active la fonctionnalité Capture sur le concentrateur d’événements. L’article décrit comment définir les ressources à déployer et configurer les paramètres qui sont spécifiés lors de l’exécution du déploiement. Vous pouvez utiliser ce modèle pour vos propres déploiements, ou le personnaliser afin qu’il réponde à vos besoins.

Cet article explique également comment spécifier la capture des événements soit dans Azure Storage Blobs, soit dans Azure Data Lake Store, en fonction de la destination choisie.

Pour en savoir plus sur la création de modèles, voir Création de modèles Azure Resource Manager. Pour connaître la syntaxe JSON et les propriétés à utiliser dans un modèle, consultez Types de ressources Microsoft.EventHub.

Pour plus d’informations sur les modèles et les pratiques des conventions d’affectation de noms des ressources Azure, voir Conventions d’affectation de noms des ressources Azure.

Pour les modèles terminés, sélectionnez les liens GitHub suivants :

Remarque

Pour connaître les derniers modèles, recherchez Event Hubs dans la galerie de modèles de démarrage rapide Azure .

Important

Azure Data Lake Storage Gen1 est mis hors service. Ne l’utilisez donc pas pour capturer les données d’événement. Pour plus d’informations, consultez l’annonce officielle. Si vous utilisez Azure Data Lake Storage Gen1, migrez vers Azure Data Lake Storage Gen2. Pour plus d’informations, consultez Instructions et modèles de migration Azure Data Lake Storage.

Qu'allez-vous déployer ?

Avec ce modèle, vous déployez un espace de noms Event Hubs avec un concentrateur d’événements, et activez Event Hubs Capture. Event Hubs Capture vous permet de transmettre automatiquement les données de streaming des instances Event Hubs au stockage Blob Azure ou à Azure Data Lake Store et ce, dans l’intervalle de temps ou de taille que vous spécifiez. Sélectionnez le bouton suivant pour activer Event Hubs Capture dans le stockage Azure :

Déployer sur Azure

Sélectionnez le bouton suivant pour activer Event Hubs Capture dans Azure Data Lake Store :

Déployer sur Azure

Paramètres

Azure Resource Manager vous permet de définir des paramètres pour les valeurs que vous voulez spécifier lorsque le modèle est déployé. Ce modèle inclut une section appelée Parameters , qui contient toutes les valeurs des paramètres. Vous devez définir un paramètre pour les valeurs qui varient en fonction du projet que vous déployez ou de l’environnement dans lequel vous effectuez le déploiement. Ne définissez pas de paramètres pour les valeurs qui restent inchangées. Chaque valeur de paramètre est utilisée dans le modèle pour définir les ressources déployées.

Le modèle définit les paramètres suivants.

eventHubNamespaceName

Nom de l’espace de noms Event Hubs à créer.

"eventHubNamespaceName":{
     "type":"string",
     "metadata":{
         "description":"Name of the EventHub namespace"
      }
}

eventHubName

Nom du concentrateur d’événements créé dans l’espace de noms Event Hubs.

"eventHubName":{
    "type":"string",
    "metadata":{
        "description":"Name of the event hub"
    }
}

messageRetentionInDays

Nombre de jours pendant lesquels conserver les messages dans le concentrateur d’événements.

"messageRetentionInDays":{
    "type":"int",
    "defaultValue": 1,
    "minValue":"1",
    "maxValue":"7",
    "metadata":{
       "description":"How long to retain the data in event hub"
     }
 }

partitionCount

Nombre de partitions à créer dans le concentrateur d’événements.

"partitionCount":{
    "type":"int",
    "defaultValue":2,
    "minValue":2,
    "maxValue":32,
    "metadata":{
        "description":"Number of partitions chosen"
    }
 }

captureEnabled

Active la fonction Capture sur le concentrateur d’événements.

"captureEnabled":{
    "type":"string",
    "defaultValue":"true",
    "allowedValues": [
    "false",
    "true"],
    "metadata":{
        "description":"Enable or disable the Capture for your event hub"
    }
 }

captureEncodingFormat

Format de codage que vous spécifiez pour sérialiser les données d’événement.

"captureEncodingFormat":{
    "type":"string",
    "defaultValue":"Avro",
    "allowedValues":[
    "Avro"],
    "metadata":{
        "description":"The encoding format in which Capture serializes the EventData"
    }
}

captureTime

L’intervalle de temps pendant lequel la fonctionnalité Event Hubs Capture démarre la capture des données.

"captureTime":{
    "type":"int",
    "defaultValue":300,
    "minValue":60,
    "maxValue":900,
    "metadata":{
         "description":"The time window in seconds for the capture"
    }
}

captureSize

L’intervalle de taille pour lequel la fonctionnalité Capture démarre la capture des données.

"captureSize":{
    "type":"int",
    "defaultValue":314572800,
    "minValue":10485760,
    "maxValue":524288000,
    "metadata":{
        "description":"The size window in bytes for capture"
    }
}

captureNameFormat

Le format de nom utilisé par Event Hubs Capture pour écrire les fichiers Avro. Le format de nom de Capture doit contenir les champs {Namespace}, {EventHub}, {PartitionId}, {Year}, {Month}, {Day}, {Hour}, {Minute} et {Second}. Ces champs peuvent être organisés dans n’importe quel ordre, avec ou sans délimiteurs.

"captureNameFormat": {
      "type": "string",
      "defaultValue": "{Namespace}/{EventHub}/{PartitionId}/{Year}/{Month}/{Day}/{Hour}/{Minute}/{Second}",
      "metadata": {
        "description": "A Capture Name Format must contain {Namespace}, {EventHub}, {PartitionId}, {Year}, {Month}, {Day}, {Hour}, {Minute} and {Second} fields. These can be arranged in any order with or without delimeters. E.g.  Prod_{EventHub}/{Namespace}\\{PartitionId}_{Year}_{Month}/{Day}/{Hour}/{Minute}/{Second}"
      }
    }

apiVersion

Version d’API du modèle.

 "apiVersion":{
    "type":"string",
    "defaultValue":"2017-04-01",
    "metadata":{
        "description":"ApiVersion used by the template"
    }
 }

Utilisez les paramètres suivants si vous choisissez le stockage Azure comme destination.

destinationStorageAccountResourceId

La fonctionnalité Capture nécessite un ID de ressource de compte de stockage Azure pour activer la capture dans le compte de stockage souhaité.

 "destinationStorageAccountResourceId":{
    "type":"string",
    "metadata":{
        "description":"Your existing Storage account resource ID where you want the blobs be captured"
    }
 }

blobContainerName

Conteneur d’objets blob dans lequel vos données d’événement sont capturées.

 "blobContainerName":{
    "type":"string",
    "metadata":{
        "description":"Your existing storage container in which you want the blobs captured"
    }
}

subscriptionId

ID d’abonnement pour l’espace de noms Event Hubs et Azure Data Lake Store. Ces deux ressources doivent être liées au même ID d’abonnement.

"subscriptionId": {
    "type": "string",
    "metadata": {
        "description": "Subscription ID of both Azure Data Lake Store and Event Hubs namespace"
     }
 }

dataLakeAccountName

Le nom Azure Data Lake Store pour les événements capturés.

"dataLakeAccountName": {
    "type": "string",
    "metadata": {
        "description": "Azure Data Lake Store name"
    }
}

dataLakeFolderPath

Le chemin d’accès du dossier de destination pour les événements capturés. Ce chemin d’accès est le dossier de votre Data Lake Store vers lequel les événements sont poussés lors de l’opération de capture. Pour définir des autorisations sur ce dossier, consultez Utiliser Azure Data Lake Store pour capturer des données Event Hubs.

"dataLakeFolderPath": {
    "type": "string",
    "metadata": {
        "description": "Destination capture folder path"
    }
}

Stockage Azure ou Azure Data Lake Storage Gen2 en tant que destination

Crée un espace de noms de type Microsoft.EventHub/Namespaces, avec un seul event hub et active Capture pour Stockage Blob Azure ou Azure Data Lake Storage Gen2.

"resources":[
      {
         "apiVersion":"[variables('ehVersion')]",
         "name":"[parameters('eventHubNamespaceName')]",
         "type":"Microsoft.EventHub/Namespaces",
         "location":"[variables('location')]",
         "sku":{
            "name":"Standard",
            "tier":"Standard"
         },
         "resources": [
    {
      "apiVersion": "2017-04-01",
      "name": "[parameters('eventHubNamespaceName')]",
      "type": "Microsoft.EventHub/Namespaces",
      "location": "[resourceGroup().location]",
      "sku": {
        "name": "Standard"
      },
      "properties": {
        "isAutoInflateEnabled": "true",
        "maximumThroughputUnits": "7"
      },
      "resources": [
        {
          "apiVersion": "2017-04-01",
          "name": "[parameters('eventHubName')]",
          "type": "EventHubs",
          "dependsOn": [
            "[concat('Microsoft.EventHub/namespaces/', parameters('eventHubNamespaceName'))]"
          ],
          "properties": {
            "messageRetentionInDays": "[parameters('messageRetentionInDays')]",
            "partitionCount": "[parameters('partitionCount')]",
            "captureDescription": {
              "enabled": "true",
              "skipEmptyArchives": false,
              "encoding": "[parameters('captureEncodingFormat')]",
              "intervalInSeconds": "[parameters('captureTime')]",
              "sizeLimitInBytes": "[parameters('captureSize')]",
              "destination": {
                "name": "EventHubArchive.AzureBlockBlob",
                "properties": {
                  "storageAccountResourceId": "[parameters('destinationStorageAccountResourceId')]",
                  "blobContainer": "[parameters('blobContainerName')]",
                  "archiveNameFormat": "[parameters('captureNameFormat')]"
                }
              }
            }
          }

        }
      ]
    }
  ]

Commandes pour l’exécution du déploiement

Pour déployer les ressources sur Azure, vous devez être connecté à votre compte Azure et utiliser le module Azure Resource Manager. Pour en savoir plus sur l'utilisation de ce module avec Azure PowerShell ou la CLI Azure, consultez :

Les exemples suivants supposent que vous disposez déjà d'un groupe de ressources dans votre compte, qui porte le nom spécifié.

PowerShell

Notes

Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour commencer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.

Déployer votre modèle pour activer Event Hubs Capture dans le stockage Azure :

New-AzResourceGroupDeployment -ResourceGroupName \<resource-group-name\> -TemplateFile https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-capture/azuredeploy.json

Déployer votre modèle pour activer Event Hubs Capture dans Azure Data Lake Store :

New-AzResourceGroupDeployment -ResourceGroupName \<resource-group-name\> -TemplateFile https://raw.githubusercontent.com/azure/azure-quickstart-templates/master/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-capture-for-adls/azuredeploy.json

Azure CLI

Stockage Blob Azure comme destination :

az deployment group create \<my-resource-group\> \<my-deployment-name\> --template-uri [https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-capture/azuredeploy.json][]

Azure Data Lake Store comme destination :

az deployment group create \<my-resource-group\> \<my-deployment-name\> --template-uri [https://raw.githubusercontent.com/azure/azure-quickstart-templates/master/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-capture-for-adls/azuredeploy.json][]

Étapes suivantes

Vous pouvez également configurer la fonctionnalité Event Hubs Capture via le portail Azure. Pour en savoir plus, voir Activer Event Hubs Capture à l’aide du portail Azure.

Vous pouvez en apprendre plus sur Event Hubs en consultant les liens suivants :