Creación de un espacio de nombres con Event Hubs y habilitación de la característica Capture mediante una plantilla

En este artículo se muestra cómo usar una plantilla de Azure Resource Manager que crea un espacio de nombres de Event Hubs, con una instancia de centro de eventos, y también habilita la característica Capture en el centro de eventos. En este artículo se describe cómo definir los recursos que se implementan y los parámetros que se especifican cuando se ejecuta la implementación. Puede usar esta plantilla para sus propias implementaciones o personalizarla para satisfacer sus necesidades.

En este artículo también se muestra cómo especificar los eventos que se capturan en instancias de Azure Storage Blob o de Azure Data Lake Store, basándose en el destino que elija.

Para más información sobre la creación de plantillas, consulte Creación de plantillas de Azure Resource Manager. Para la sintaxis y las propiedades de JSON que se usan en una plantilla, consulte Tipos de recursos de Microsoft.EventHub.

Para obtener más información sobre patrones y prácticas de convenciones de nomenclatura de recursos de Azure, consulte las convenciones de nomenclatura de los recursos de Azure.

Para ver las plantillas completas, seleccione los siguientes vínculos de GitHub:

Nota:

Para buscar las últimas plantillas, visite la galería de Plantillas de inicio rápido de Azure y busque Event Hubs.

Importante

Azure Data Lake Storage Gen1 se retira, así que no lo use para capturar datos de eventos. Para obtener más información, consulte el anuncio oficial. Si usa Azure Data Lake Storage Gen1, migre a Azure Data Lake Storage Gen2. Para obtener más información, consulte Azure Data Lake Storage directrices y patrones de migración.

¿Qué va a implementar?

Con esta plantilla, implementará un espacio de nombres de Event Hubs con un centro de eventos y habilitará la captura de Event Hubs. Event Hubs Capture le permite entregar automáticamente los datos de streaming de sus instancias de Event Hubs a una instancia de Azure Blob Storage o Azure Data Lake Store, en el tiempo especificado o el intervalo de tamaño que prefiera. Seleccione el botón siguiente para habilitar Event Hubs Capture en Azure Storage:

Implementación en Azure

Seleccione el botón siguiente para habilitar Event Hubs Capture en Azure Data Lake Store:

Implementación en Azure

Parámetros

Con el Administrador de recursos de Azure, se definen los parámetros de los valores que desea especificar al implementar la plantilla. La plantilla incluye una sección denominada Parameters que contiene todos los valores de los parámetros. Debe definir un parámetro para esos valores que variarán según el proyecto que vaya a implementar o según el entorno en el que vaya a realizar la implementación. No defina parámetros para valores que siempre permanezcan igual. Cada valor de parámetro se usa en la plantilla para definir los recursos que se implementan.

La plantilla define los parámetros siguientes.

eventHubNamespaceName

El nombre del espacio de nombres de Event Hubs que se creará.

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

eventHubName

El nombre del centro de eventos creado en el espacio de nombres de Event Hubs.

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

messageRetentionInDays

El número de días que se deben conservar los mensajes en el centro de eventos.

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

partitionCount

El número de particiones que se van a crear en el centro de eventos.

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

captureEnabled

Habilita la funcionalidad de captura en el centro de eventos.

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

captureEncodingFormat

El formato de codificación que especifica para serializar los datos de eventos.

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

captureTime

El intervalo de tiempo en el que Event Hubs Capture comienza a capturar los datos.

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

captureSize

El intervalo de tamaño en el que Capture comienza a capturar los datos.

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

captureNameFormat

El formato de nombre que usa Event Hubs Capture para escribir archivos Avro. El formato de nombre de Capture debe contener los campos {Namespace}, {EventHub}, {PartitionId}, {Year}, {Month}, {Day}, {Hour}, {Minute} y {Second}. Estos campos se pueden organizar en cualquier orden, con o sin delimitadores.

"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

La versión de API de la plantilla.

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

Si elige como destino Azure Storage, use los parámetros siguientes.

destinationStorageAccountResourceId

La funcionalidad de captura requiere un identificador de recurso de una cuenta de Azure Storage para habilitar esta funcionalidad en la cuenta deseada de Storage.

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

blobContainerName

El contenedor de blobs en el que se van a capturar los datos del evento.

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

subscriptionId

El identificador de suscripción para el espacio de nombres de Event Hubs y Azure Data Lake Store. Ambos recursos deben estar en el mismo identificador de suscripción.

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

dataLakeAccountName

El nombre de Azure Data Lake Store para los eventos capturados.

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

dataLakeFolderPath

La ruta de acceso de la carpeta de destino para los eventos capturados. Esta ruta de acceso es la carpeta de Data Lake Storage en la que se insertan los eventos durante la operación de captura. Para establecer los permisos de esta carpeta, consulte Uso de Azure Data Lake Store para capturar datos de Event Hubs.

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

Azure Storage o Azure Data Lake Storage Gen 2 como destino

Crea un espacio de nombres de tipo Microsoft.EventHub/Namespaces, con un centro de eventos y, además, habilita Capture en Azure Blob Storage o 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')]"
                }
              }
            }
          }

        }
      ]
    }
  ]

Comandos para ejecutar la implementación

Para implementar los recursos en Azure, debe haber iniciado sesión en la cuenta de Azure y debe usar el módulo de Azure Resource Manager. Para obtener información sobre cómo usar el Administrador de recursos de Azure con PowerShell de Azure o la CLI de Azure, consulte:

En los ejemplos siguientes se supone que ya dispone de un grupo de recursos en la cuenta con el nombre especificado.

PowerShell

Nota:

Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Consulte Instalación de Azure PowerShell para empezar. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.

Implemente la plantilla para habilitar Event Hubs Capture en Azure Storage:

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

Implemente la plantilla para habilitar Event Hubs Capture en 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

Azure Blob Storage como destino:

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 como destino:

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][]

Pasos siguientes

También puede configurar la funcionalidad de captura de Event Hubs mediante Azure Portal. Para más información, consulte Habilitación de la funcionalidad de captura de Event Hubs mediante Azure Portal.

Para más información acerca de Event Hubs, visite los vínculos siguientes: