イベント ハブを含む名前空間を作成し、テンプレートを使用してキャプチャを有効にします

この記事では、Azure Resource Manager テンプレートを使用し、1 つのイベント ハブ インスタンスを含んだ Event Hubs 名前空間を作成して、イベント ハブの Capture 機能を有効にする方法について説明します。 記事では、デプロイ対象のリソースを定義する方法と、デプロイの実行時に指定されるパラメーターを定義する方法を説明します。 このテンプレートは、独自のデプロイに使用することも、要件に合わせてカスタマイズすることもできます。

この記事では、選択した保存先に応じて Azure Storage Blob または Azure Data Lake Store にキャプチャされるイベントの指定方法についても取り上げます。

テンプレートの作成の詳細については、「 Azure Resource Manager のテンプレートの作成」を参照してください。 テンプレートで使用する JSON の構文とプロパティについては、「Microsoft.EventHub resource types (Microsoft.EventHub のリソースの種類)」を参照してください。

Azure リソースの名前付け規則のパターンとプラクティスの詳細については、Azure リソースの名前付け規則に関するページを参照してください。

完成したテンプレートについては、次の GitHub リンクを選択してください。

Note

最新のテンプレートを確認する場合は、「 Azure クイックスタート テンプレート 」ギャラリーで "Event Hubs" を検索してください。

重要

Azure Data Lake Storage Gen1 は廃止されているため、イベント データのキャプチャに使わないでください。 詳細については、公式告知を参照してください。 Azure Data Lake Storage Gen1 をお使いの場合は、Azure Data Lake Storage Gen2 に移行してください。 詳細については、「Azure Data Lake Storage 移行のガイドラインとパターン」を参照してください。

デプロイの対象

このテンプレートを使用して、イベント ハブを含んだ Event Hubs 名前空間をデプロイし、Event Hubs Capture も有効にします。 Event Hubs Capture を使用すると、指定した時間またはサイズの間隔で、Event Hubs のストリーミング データを Azure Blob Storage または Azure Data Lake Store に自動的に配信できます。 Event Hubs Capture を Azure Storage に対して有効にするには、次のボタンを選択します。

Azure にデプロイする

Event Hubs Capture を Azure Data Lake Store に対して有効にするには、次のボタンを選択します。

Azure にデプロイする

パラメーター

Azure リソース マネージャーを使用して、テンプレートのデプロイ時に値を指定するパラメーターを定義します。 テンプレートには、すべてのパラメーター値を含む Parameters という名前のセクションがあります。 これらの値用のパラメーターを定義する必要があります。これらの値は、デプロイするプロジェクトあるいはデプロイ先の環境によって異なります。 常に同じ値に対してはパラメーターを定義しないでください。 テンプレート内のそれぞれのパラメーターの値は、デプロイされるリソースを定義するために使用されます。

このテンプレートでは、次のパラメーターを定義します。

eventHubNamespaceName

作成する Event Hubs 名前空間の名前。

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

eventHubName

Event Hubs 名前空間に作成するイベント ハブの名前。

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

messageRetentionInDays

イベント ハブにメッセージを保持する日数。

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

partitionCount

イベント ハブに作成するパーティションの数。

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

captureEnabled

イベント ハブの Capture を有効にします。

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

captureEncodingFormat

イベント データのシリアル化に使用するエンコード形式。

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

captureTime

データのキャプチャが Event Hubs Capture で開始される期間。

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

captureSize

データのキャプチャが Capture で開始されるサイズ間隔。

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

captureNameFormat

Event Hubs Capture が Avro ファイルを書き込むときに使用する名前の形式。 キャプチャ名の形式には、{Namespace}{EventHub}{PartitionId}{Year}{Month}{Day}{Hour}{Minute}{Second} の各フィールドが含まれている必要があります。 これらのフィールドは任意の順序で指定でき、区切り記号はあってもなくてもかまいません。

"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

テンプレートの API バージョン。

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

Azure Storage を保存先として選ぶ場合は、次のパラメーターを使用します。

destinationStorageAccountResourceId

目的のストレージ アカウントへのキャプチャを有効にするには、Azure ストレージ アカウントのリソース ID が必要になります。

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

blobContainerName

イベント データをキャプチャする BLOB コンテナー。

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

subscriptionId

Event Hubs 名前空間と Azure Data Lake Store のサブスクリプション ID。 この 2 つのリソースは同じサブスクリプション ID に属している必要があります。

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

dataLakeAccountName

キャプチャしたイベントに使用する Azure Data Lake Store の名前。

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

dataLakeFolderPath

キャプチャしたイベントの保存先となるフォルダーのパス。 このパスは、キャプチャ操作中にイベントがプッシュされる先の Data Lake Store のフォルダーです。 このフォルダーに対してアクセス許可を設定する方法については、「Azure Data Lake Store を使用して Event Hubs からデータをキャプチャする」を参照してください。

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

保存先としての Azure Storage または Azure Data Lake Storage Gen 2

1 つのイベント ハブを含んだ Microsoft.EventHub/Namespaces 型の名前空間を作成し、さらに Azure Blob Storage または Azure Data Lake Storage Gen2 に対して Capture を有効にします。

"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')]"
                }
              }
            }
          }

        }
      ]
    }
  ]

デプロイを実行するコマンド

リソースを Azure にデプロイするには、Azure アカウントにサインインし、Azure Resource Manager モジュールを使用する必要があります。 Azure リソース マネージャーを Azure PowerShell または Azure CLI で使用する方法については、次のトピックを参照してください。

次の例では、指定した名前のアカウントにリソース グループが既にあるものと想定しています。

PowerShell

注意

Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を開始するには、Azure PowerShell のインストールに関する記事を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。

Azure Storage に対して Event Hubs Capture を有効にするには、次のようにしてテンプレートをデプロイします。

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

Azure Data Lake Store に対して Event Hubs Capture を有効にするには、次のようにしてテンプレートをデプロイします。

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:

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:

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

次のステップ

Azure Portal を使用して Event Hubs Capture を構成することもできます。 詳細については、「Azure Portal を使用して Event Hubs Capture を有効にする」を参照してください。

Event Hubs の詳細については、次のリンク先を参照してください: