コードレス コネクタ フレームワーク (CCF) を使用して RestApiPoller
データ コネクタを作成するには、Microsoft Sentinel REST API for Data Connectors ドキュメントの補足としてこのリファレンスを使用します。
各 dataConnector
は、Microsoft Sentinel データ コネクタの特定の connection を表します。 1 つのデータ コネクタに複数の接続があり、異なるエンドポイントからデータをフェッチする場合があります。 この参照ドキュメントを使用して構築された JSON 構成は、CCF データ コネクタのデプロイ テンプレートを完成させるために使用されます。
詳細については、「 Microsoft Sentinel 用のコードレス コネクタを作成する」を参照してください。
データ コネクタ - 作成または更新
REST API ドキュメントの Create または Update 操作を参照して、最新の安定した API バージョンまたはプレビュー API バージョンを見つけます。 createとupdate操作の違いは、更新にetag値が必要です。
PUT メソッド
https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.OperationalInsights/workspaces/{{workspaceName}}/providers/Microsoft.SecurityInsights/dataConnectors/{{dataConnectorId}}?api-version={{apiVersion}}
URI パラメーター
最新の API バージョンの詳細については、「 Data コネクタ - URI パラメーターの作成または更新」を参照してください。
名前 | 説明 |
---|---|
dataConnectorId | データ コネクタ ID は一意の名前である必要があり、要求本文のname パラメーターと同じです。 |
resourceGroupName | リソース グループの名前。大文字と小文字は区別されません。 |
subscriptionId | ターゲット サブスクリプションの ID。 |
workspaceName | ID ではなく、ワークスペースの 名 。 正規表現パターン: ^[A-Za-z0-9][A-Za-z0-9-]+[A-Za-z0-9]$ |
api-version | この操作に使用する API バージョン。 |
要求本文
RestApiPoller
CCF データ コネクタの要求本文には、次の構造があります。
{
"name": "{{dataConnectorId}}",
"kind": "RestApiPoller",
"etag": "",
"properties": {
"connectorDefinitionName": "",
"auth": {},
"request": {},
"response": {},
"paging": "",
"dcrConfig": ""
}
}
RestApiPoller
RestApiPoller は、データ ソースのページング、承認、要求/応答のペイロードをカスタマイズする API Poller CCF データ コネクタを表します。
名前 | 必須 | タイプ | 説明 |
---|---|---|---|
名前 | 正しい | ひも | URI パラメーターに一致する接続の一意の名前 |
親切 | 正しい | ひも | |
etag | GUID(グローバルユニーク識別子) | 新しいコネクタを作成する場合は空のままにします。 更新操作の場合、etag は既存のコネクタの etag (GUID) と一致する必要があります。 | |
properties.connectorDefinitionName | ひも | データ コネクタの UI 構成を定義する DataConnectorDefinition リソースの名前。 詳細については、「 Data コネクタ定義」を参照してください。 | |
properties.認証 | 正しい | 入れ子の JSON | データをポーリングするための認証プロパティについて説明します。 詳細については、 認証の構成を参照してください。 |
properties.依頼 | 正しい | 入れ子の JSON | API エンドポイントなど、データをポーリングするための要求ペイロードについて説明します。 詳細については、「要求の構成」をご覧ください。 |
properties.応答 | 正しい | 入れ子の JSON | データのポーリング時に API から返される応答オブジェクトと入れ子になったメッセージについて説明します。 詳細については、「応答の構成」をご覧ください。 |
properties.ページング | 入れ子の JSON | データをポーリングする際の改ページ位置の自動修正のペイロードについて説明します。 詳細については、「ページングの構成」をご覧ください。 | |
プロパティ。dcrConfig | 入れ子の JSON | データがデータ収集規則 (DCR) に送信されるときに必要なパラメーター。 詳細については、 DCR 構成を参照してください。 |
認証の構成
CCF では、次の認証の種類がサポートされています。
注
CCF OAuth2 の実装では、クライアント証明書の資格情報はサポートされていません。
ベスト プラクティスとして、資格情報をハードコーディングする代わりに、認証セクションのパラメーターを使用します。 詳細については、「 安全な機密入力」を参照してください。
パラメーターも使用するデプロイ テンプレートを作成するには、追加の開始 [
を使用して、このセクションのパラメーターをエスケープする必要があります。 これによりパラメータは、コネクタとのユーザー操作に基づいて値を割り当てることができます。 詳細については、テンプレート式のエスケープ文字に関するページを参照してください。
UI から資格情報を入力できるようにするには、 connectorUIConfig
セクションで目的のパラメーターを instructions
する必要があります。 詳細については、 コードレス コネクタ フレームワークのデータ コネクタ定義リファレンスを参照してください。
基本認証
フィールド | 必須 | タイプ |
---|---|---|
UserName | 正しい | ひも |
パスワード | 正しい | ひも |
connectorUIconfig
で定義されているパラメーターを使用した基本認証の例:
"auth": {
"type": "Basic",
"UserName": "[[parameters('username')]",
"Password": "[[parameters('password')]"
}
APIKey
フィールド | 必須 | タイプ | 説明 | 規定値 |
---|---|---|---|---|
アピキー | 正しい | ひも | ユーザー シークレット キー | |
ApiKeyName | ひも | ApiKey 値を含む Uri ヘッダーの名前 | Authorization |
|
ApiKeyIdentifier | ひも | トークンの先頭に追加する文字列値 | token |
|
IsApiKeyInPostPayload | ブーリアン | ヘッダーの代わりに POST 本文でシークレットを送信する | false |
APIKey 認証の例:
"auth": {
"type": "APIKey",
"ApiKey": "[[parameters('apikey')]",
"ApiKeyName": "X-MyApp-Auth-Header",
"ApiKeyIdentifier": "Bearer"
}
この例では、次のヘッダーで送信されたユーザー入力から定義されたシークレットになります: X-MyApp-Auth-Header: Bearer apikey
"auth": {
"type": "APIKey",
"ApiKey": "123123123",
}
この例では既定値を使用し、 Authorization: token 123123123
"auth": {
"type": "APIKey",
"ApiKey": "123123123",
"ApiKeyName": ""
}
ApiKeyName
は明示的に ""
に設定されているため、結果は次のヘッダーになります:Authorization: 123123123
OAuth2の
Codeless Connector Framework では、OAuth 2.0 承認コードの付与とクライアント資格情報がサポートされます。 認証コード付与の種類は、認証コードをアクセストークンと交換するために、機密クライアントおよびパブリッククライアントによって使用されます。 ユーザーがリダイレクト URL 経由でクライアントに戻った後、アプリケーションは URL から認証コードを取得し、それを使用してアクセス トークンを要求します。
フィールド | 必須 | タイプ | 説明 |
---|---|---|---|
ClientId | 正しい | 糸 | クライアント ID |
ClientSecret | 正しい | 糸 | クライアント シークレット |
AuthorizationCode | true の場合 grantType = authorization_code |
糸 | 許可の種類が authorization_code 場合、このフィールド値は認証サービスから返される承認コードになります。 |
スコープ | true authorization_code 許可の種類許可の種類 client_credentials 省略可能 |
糸 | ユーザーの同意のためのスコープのスペース区切りの一覧。 詳細については、「 OAuth2 のスコープとアクセス許可を参照してください。 |
RedirectUri | true の場合 grantType = authorization_code |
糸 | リダイレクトの URL。次の URL である必要があります。 https://portal.azure.com/TokenAuthorize/ExtensionName/Microsoft_Azure_Security_Insights |
GrantType | 正しい | 糸 |
authorization_code または client_credentials |
TokenEndpoint | 正しい | 糸 | 有効なトークンを持つコードを authorization_code 許可、またはクライアント ID とシークレットを有効なトークンと client_credentials 許可で交換する URL。 |
TokenEndpointHeaders | オブジェクト | トークン サーバーにカスタム ヘッダーを送信するオプションのキー値オブジェクト | |
TokenEndpointQueryParameters | オブジェクト | トークン サーバーにカスタム クエリ パラメーターを送信するオプションのキー値オブジェクト | |
認証エンドポイント (AuthorizationEndpoint) | 正しい | 糸 |
authorization_code フローに対するユーザーの同意の URL |
AuthorizationEndpointHeaders | オブジェクト | カスタム ヘッダーを認証サーバーに送信するオプションのキー値オブジェクト | |
AuthorizationEndpointQueryParameters | オブジェクト | OAuth2 承認コード フロー要求で使用されるオプションのキー値ペア |
認証コード フローは、ユーザーのアクセス許可に代わってデータをフェッチするためのものであり、クライアント資格情報はアプリケーションのアクセス許可を使用してデータをフェッチするためのフローです。 データ サーバーは、アプリケーションへのアクセスを許可します。 クライアント資格情報フローにはユーザーがないため、承認エンドポイントは必要なく、トークン エンドポイントのみが必要です。
例: OAuth2 authorization_code
許可の種類
"auth": {
"type": "OAuth2",
"ClientId": "[[parameters('appId')]",
"ClientSecret": "[[parameters('appSecret')]",
"tokenEndpoint": "https://login.microsoftonline.com/{{tenantId}}/oauth2/v2.0/token",
"authorizationEndpoint": "https://login.microsoftonline.com/{{tenantId}}/oauth2/v2.0/authorize",
"authorizationEndpointHeaders": {},
"authorizationEndpointQueryParameters": {
"prompt": "consent"
},
"redirectUri": "https://portal.azure.com/TokenAuthorize/ExtensionName/Microsoft_Azure_Security_Insights",
"tokenEndpointHeaders": {
"Accept": "application/json",
"Content-Type": "application/x-www-form-urlencoded"
},
"TokenEndpointQueryParameters": {},
"scope": "openid offline_access some_scope",
"grantType": "authorization_code"
}
例: OAuth2 client_credentials
許可の種類
"auth": {
"type": "OAuth2",
"ClientId": "[[parameters('appId')]",
"ClientSecret": "[[parameters('appSecret')]",
"tokenEndpoint": "https://login.microsoftonline.com/{{tenantId}}/oauth2/v2.0/token",
"tokenEndpointHeaders": {
"Accept": "application/json",
"Content-Type": "application/x-www-form-urlencoded"
},
"TokenEndpointQueryParameters": {},
"scope": "openid offline_access some_scope",
"grantType": "client_credentials"
}
JWT
例: JSON Web トークン (JWT)
"auth": {
"type": "JwtToken",
"userName": {
"key":"username",
"value":"[[parameters('UserName')]"
},
"password": {
"key":"password",
"value":"[[parameters('Password')]"
},
"TokenEndpoint": "https://token_endpoint.contoso.com",
"IsJsonRequest": true
}
要求の構成
要求セクションでは、CCF データ コネクタがデータ ソースに要求を送信する方法 (API エンドポイントなど) と、そのエンドポイントをポーリングする頻度を定義します。
フィールド | 必須 | タイプ | 説明 |
---|---|---|---|
ApiEndpoint | 正しい | 糸 | リモート サーバーの URL。 データのプル元のエンドポイントを定義します。 |
RateLimitQPS | 整数 | 1 秒あたりに許可される呼び出しまたはクエリの数を定義します。 | |
QueryWindowInMin | 整数 | 使用可能なクエリ ウィンドウを分単位で定義します。 最小値は 1 分です。 既定値は 5 分です。 | |
HttpMethod | 糸 | API メソッドを定義します: GET (既定) または POST |
|
QueryTimeFormat | 糸 | エンドポイント (リモート サーバー) で想定される日付と時刻の形式を定義します。 CCF では、この変数が使用されている場所であれば常に現在の日付と時刻が使用されます。 使用できる値は、定数です。 UnixTimestamp 、 UnixTimestampInMills 、またはその他の有効な日付時刻の表現 (例: yyyy-MM-dd 、 MM/dd/yyyy HH:mm:ss 既定値は ISO 8601 UTC |
|
RetryCount | 整数 (1...6) | 障害からの復旧を許可する再試行を1 する6 を定義します。 既定値は 3 です。 |
|
TimeoutInSeconds | 整数 (1...180) | 要求のタイムアウトを秒単位で定義します。 既定値は 20 です |
|
IsPostPayloadJson | ボーリアン | ポスト ペイロードが JSON 形式であるかどうかを判断します。 既定値は false です |
|
ヘッダー | オブジェクト | 要求ヘッダーを定義するキー値ペア。 | |
QueryParameters | オブジェクト | 要求クエリ パラメーターを定義するキー値ペア。 | |
StartTimeAttributeName | true EndTimeAttributeName が設定されている場合 |
糸 | クエリの開始時刻のクエリ パラメーター名を定義します。 例を参照してください。 |
EndTimeAttributeName | true StartTimeAttributeName が設定されている場合 |
糸 | クエリの終了時刻のクエリ パラメーター名を定義します。 |
QueryTimeIntervalAttributeName | 糸 | エンドポイントで時間枠内のデータに対してクエリを実行するための特殊な形式が必要な場合は、 QueryTimeIntervalPrepend パラメーターと QueryTimeIntervalDelimiter パラメーターでこのプロパティを使用します。
例を参照してください。 |
|
QueryTimeIntervalPrepend | true QueryTimeIntervalAttributeName が設定されている場合 |
糸 | 「QueryTimeIntervalAttributeName 」を参照してください。 |
QueryTimeIntervalDelimiter | true QueryTimeIntervalAttributeName が設定されている場合 |
糸 | 「QueryTimeIntervalAttributeName 」を参照してください。 |
QueryParametersTemplate | 糸 | 高度なシナリオでパラメーターを渡すときに使用するクエリ テンプレート。 br>例: "queryParametersTemplate": "{'cid': 1234567, 'cmd': 'reporting', 'format': 'siem', 'data': { 'from': '{_QueryWindowStartTime}', 'to': '{_QueryWindowEndTime}'}, '{_APIKeyName}': '{_APIKey}'}" |
API に複雑なパラメーターが必要な場合は、組み込みの変数を含む queryParameters
または queryParametersTemplate
を使用します。
組み込み変数 | で使用する場合 queryParameters |
で使用する場合 queryParametersTemplate |
---|---|---|
_QueryWindowStartTime |
はい | はい |
_QueryWindowEndTime |
はい | はい |
_APIKeyName |
いいえ | はい |
_APIKey |
いいえ | はい |
StartTimeAttributeName の例
以下に例を示します。
StartTimeAttributeName
=from
EndTimeAttributeName
=until
ApiEndpoint
=https://www.example.com
リモート サーバーに送信されるクエリは次のとおりです。 https://www.example.com?from={QueryTimeFormat}&until={QueryTimeFormat + QueryWindowInMin}
QueryTimeIntervalAttributeName の例
以下に例を示します。
QueryTimeIntervalAttributeName
=interval
QueryTimeIntervalPrepend
=time:
QueryTimeIntervalDelimiter
=..
ApiEndpoint
=https://www.example.com
リモート サーバーに送信されるクエリは次のとおりです。 https://www.example.com?interval=time:{QueryTimeFormat}..{QueryTimeFormat + QueryWindowInMin}
Microsoft Graph をデータ ソース API として使用する要求の例
この例では、フィルター クエリ パラメーターを使用してメッセージを照会します。 詳細については、「 Microsoft Graph API クエリ パラメーターを参照してください。
"request": {
"apiEndpoint": "https://graph.microsoft.com/v1.0/me/messages",
"httpMethod": "Get",
"queryTimeFormat": "yyyy-MM-ddTHH:mm:ssZ",
"queryWindowInMin": 10,
"retryCount": 3,
"rateLimitQPS": 20,
"headers": {
"Accept": "application/json",
"User-Agent": "Example-app-agent"
},
"QueryTimeIntervalAttributeName": "filter",
"QueryTimeIntervalPrepend": "receivedDateTime gt ",
"QueryTimeIntervalDelimiter": " and receivedDateTime lt "
}
前の例では、 GET
要求を https://graph.microsoft.com/v1.0/me/messages?filter=receivedDateTime gt {time of request} and receivedDateTime lt 2019-09-01T17:00:00.0000000
に送信します。 各 queryWindowInMin
時刻のタイムスタンプが更新されます。
この例では、同じ結果が得られます。
"request": {
"apiEndpoint": "https://graph.microsoft.com/v1.0/me/messages",
"httpMethod": "Get",
"queryTimeFormat": "yyyy-MM-ddTHH:mm:ssZ",
"queryWindowInMin": 10,
"retryCount": 3,
"rateLimitQPS": 20,
"headers": {
"Accept": "application/json",
},
"queryParameters": {
"filter": "receivedDateTime gt {_QueryWindowStartTime} and receivedDateTime lt {_QueryWindowEndTime}"
}
}
もう 1 つのオプションは、データ ソースで 2 つのクエリ パラメーター (開始時刻に 1 つ、終了時刻に 1 つ) が必要な場合です。
例:
"request": {
"apiEndpoint": "https://graph.microsoft.com/v1.0/me/calendarView",
"httpMethod": "Get",
"queryTimeFormat": "yyyy-MM-ddTHH:mm:ssZ",
"queryWindowInMin": 10,
"retryCount": 3,
"rateLimitQPS": 20,
"headers": {
"Accept": "application/json",
},
"StartTimeAttributeName": "startDateTime",
"EndTimeAttributeName": "endDateTime",
}
これにより、 GET
要求が https://graph.microsoft.com/me/calendarView?startDateTime=2019-09-01T09:00:00.0000000&endDateTime=2019-09-01T17:00:00.0000000
複雑なクエリの場合は、 QueryParametersTemplate
を使用します。 次の例では、本文にパラメーターを含む POST
要求を送信します。
例:
request: {
"apiEndpoint": "https://graph.microsoft.com/v1.0/me/messages",
"httpMethod": "POST",
"queryTimeFormat": "yyyy-MM-ddTHH:mm:ssZ",
"queryWindowInMin": 10,
"retryCount": 3,
"rateLimitQPS": 20,
"headers": {
"Accept": "application/json",
},
"isPostPayloadJson": true,
"queryParametersTemplate": "{\"query":"TableName | where createdTimestamp between (datetime({_QueryWindowStartTime}) .. datetime({_QueryWindowEndTime}))\"}"
}
応答の構成
次のパラメーターを使用して、データ コネクタの応答処理を定義します。
フィールド | 必須 | タイプ | 説明 |
---|---|---|---|
EventsJsonPaths | 正しい | 文字列の一覧 | 応答の JSON 内のメッセージへのパスを定義します。 JSPON パス式で、JSON 構造体の要素または要素のセットへのパスを指定します。 |
SuccessStatusJsonPath | 糸 | 応答の JSON 内の成功メッセージへのパスを定義します。 このパラメーターを定義するときは、 SuccessStatusValue パラメーターも定義する必要があります。 |
|
SuccessStatusValue | 糸 | 応答の JSON 内の成功メッセージ値へのパスを定義します。 | |
IsGzipCompressed | ボーリアン | 応答が gzip ファイルで圧縮されているかどうかを判断します | |
形式 | 正しい | 糸 |
json または csv または xml |
CompressionAlgo | 糸 |
multi-gzip またはdeflate のいずれかの圧縮アルゴリズム。 gzip 圧縮アルゴリズムの場合は、このパラメーターの値を設定するのではなく、IsGzipCompressed するようにTrue を構成するだけです。 |
|
CsvDelimiter | 糸 | 応答形式が CSV で、既定の CSV 区切り記号を変更する場合 "," |
|
HasCsvBoundary | ボーリアン | CSV データに境界があるかどうかを示す | |
HasCsvHeader | ボーリアン | CSV データにヘッダーがあるかどうかを示します。既定値は True |
|
CsvEscape | 糸 | フィールド境界のエスケープ文字。既定値は " たとえば、ヘッダーが id,name,avg された CSV や、 1,"my name",5.5 などのスペースを含むデータ行には、 " フィールド境界が必要です。 |
|
ConvertChildPropertiesToArray | ボーリアン | リモート サーバーが、各プロパティにデータが含まれるイベントのリストの代わりにオブジェクトを返す特殊なケース。 |
注
CSV 形式の種類は、 RFC4180 仕様によって解析されます。
応答構成の例
要求されたデータがプロパティ valueに含まれる、JSON 形式のサーバー応答が必要です。 response プロパティ status は、値が success
されている場合にのみ、データを取り込むよう示します。
"response": {
"EventsJsonPaths ": ["$.value"],
"format": "json",
"SuccessStatusJsonPath": "$.status",
"SuccessStatusValue": "success",
"IsGzipCompressed: true
}
この例で想定される応答は、ヘッダーのない CSV を準備します。
"response": {
"EventsJsonPaths ": ["$"],
"format": "csv",
"HasCsvHeader": false
}
ページングの構成
データ ソースが応答ペイロード全体を一度に送信できない場合、CCF データ コネクタは、応答 ページ内のデータの一部を受信する方法を認識する必要があります。 選択するページングの種類は次のとおりです。
ページングの種類 | decision factor |
---|---|
API 応答には、次のページと前のページへのリンクがありますか? | |
API 応答には、次のページと前のページのトークンまたはカーソルがありますか? | |
API 応答は、ページング時にスキップするオブジェクトの数のパラメーターをサポートしていますか? |
LinkHeader または PersistentLinkHeader の構成
最も一般的なページングの種類は、サーバー データ ソース API がデータの次のページと前のページに URL を提供する場合です。 リンクヘッダ仕様の詳細については、RFC 5988を参照してください。
LinkHeader
ページングは、API 応答に次のいずれかが含まれていることを意味します。
-
Link
HTTP 応答ヘッダー - または、応答本文からリンクを取得する JSON パス。
PersistentLinkHeader
ページングには、バックエンド ストレージにリンク ヘッダーが保持される点を除き、 LinkHeader
と同じプロパティがあります。 このオプションを使用すると、クエリ ウィンドウ間のページング リンクが有効になります。 たとえば、一部の API ではクエリの開始時刻や終了時刻がサポートされていません。 代わりに、サーバー側の cursor をサポートします。 永続的なページの種類は、サーバー側の cursorを記憶するために使用できます。 詳細については、「カーソルとは」を参照してください。
注
PersistentLinkHeader を使用するコネクタに対して実行できるクエリは 1 つだけで、サーバー側の競合状態を回避 cursor。 これは待機時間に影響する可能性があります。
フィールド | 必須 | タイプ | 説明 |
---|---|---|---|
LinkHeaderTokenJsonPath | いいえ | 糸 | このプロパティを使用して、応答本文の値を取得する場所を示します。 たとえば、データ ソースから次の JSON が返された場合、 { nextPage: "foo", value: [{data}]} LinkHeaderTokenJsonPath は次のようになります。$.nextPage |
ページサイズ | いいえ | 整数 | ページあたりのイベントの数 |
PageSizeParameterName | いいえ | 糸 | ページ サイズのクエリ パラメーター名 |
次に例をいくつか示します。
Paging: {
"pagingType": "LinkHeader",
"linkHeaderTokenJsonPath" : "$.metadata.links.next"
}
Paging: {
"pagingType" : "PersistentLinkHeader",
"pageSizeParameterName" : "limit",
"pageSize" : 500
}
NextPageUrl の構成
NextPageUrl
ページングとは、API 応答の応答本文に LinkHeader
のような複雑なリンクが含まれていることを意味しますが、URL はヘッダーではなく応答本文に含まれます。
フィールド | 必須 | タイプ | 説明 |
---|---|---|---|
ページサイズ | いいえ | 整数 | ページあたりのイベントの数 |
PageSizeParameterName | いいえ | 糸 | ページ サイズのクエリ パラメーター名 |
NextPageUrl | いいえ | 糸 | コネクタが Coralogix API 用の場合のみ |
NextPageUrlQueryParameters | いいえ | オブジェクト キーの値のペア – 次のページの各要求にカスタム クエリ パラメーターを追加する | |
NextPageParaName | いいえ | 糸 | 要求の次のページ名を決定します。 |
HasNextFlagJsonPath | いいえ | 糸 | HasNextPage フラグ属性へのパスを定義します。 |
NextPageRequestHeader | いいえ | 糸 | 要求の次のページ ヘッダー名を決定します。 |
NextPageUrlQueryParametersTemplate | いいえ | 糸 | コネクタが Coralogix API 用の場合のみ |
例:
Paging: {
"pagingType" : "NextPageUrl",
"nextPageTokenJsonPath" : "$.data.repository.pageInfo.endCursor",
"hasNextFlagJsonPath" : "$.data.repository.pageInfo.hasNextPage",
"nextPageUrl" : "https://api.github.com/graphql",
"nextPageUrlQueryParametersTemplate" : "{'query':'query{repository(owner:\"xyz\")}"
}
NextPageToken または PersistentToken の構成
NextPageToken
改ページでは、現在のページの状態を表すトークン (ハッシュまたはカーソル) が使用されます。 トークンは API 応答に含まれており、クライアントは次の要求にトークンを追加して次のページをフェッチします。 この方法は、サーバーが要求間で正確な状態を維持する必要がある場合によく使用されます。
PersistentToken
改ページでは、サーバー側を保持するトークンが使用されます。 サーバーは、クライアントによって取得された最後のトークンを記憶し、後続の要求で次のトークンを提供します。 クライアントは、後で新しい要求を行った場合でも、中断した場所を続行します。
フィールド | 必須 | タイプ | 説明 |
---|---|---|---|
ページサイズ | いいえ | 整数 | ページあたりのイベントの数 |
PageSizeParameterName | いいえ | ひも | ページ サイズのクエリ パラメーター名 |
NextPageTokenJsonPath | いいえ | ひも | 応答本文の次のページ トークンの JSON パス。 |
NextPageTokenResponseHeader | いいえ | ひも |
NextPageTokenJsonPath が空の場合は、次のページのこのヘッダー名にトークンを使用します。 |
NextPageParaName | いいえ | ひも | 要求の次のページ名を決定します。 |
HasNextFlagJsonPath | いいえ | ひも | 応答に残っているページが増えるかどうかを判断するときに、 HasNextPage フラグ属性へのパスを定義します。 |
NextPageRequestHeader | いいえ | ひも | 要求の次のページ ヘッダー名を決定します。 |
例 :
Paging: {
"pagingType" : "NextPageToken",
"nextPageRequestHeader" : "ETag",
"nextPageTokenResponseHeader" : "ETag"
}
Paging: {
"pagingType" : "PersistentToken",
"nextPageParaName" : "gta",
"nextPageTokenJsonPath" : "$.alerts[-1:]._id"
}
オフセットの構成
Offset
pagination は、スキップするページ数と、要求のページごとに取得するイベントの数の制限を指定します。 クライアントは、データ セットから特定の範囲の項目をフェッチします。
フィールド | 必須 | タイプ | 説明 |
---|---|---|---|
ページサイズ | いいえ | 整数 | ページあたりのイベントの数 |
PageSizeParameterName | いいえ | 糸 | ページ サイズのクエリ パラメーター名 |
OffsetParaName | いいえ | 糸 | 次の要求クエリ パラメーター名。 CCF は、各要求のオフセット値を計算します (取り込まれたすべてのイベント + 1) |
例:
Paging: {
"pagingType": "Offset",
"offsetParaName": "offset"
}
DCR の構成
フィールド | 必須 | タイプ | 説明 |
---|---|---|---|
DataCollectionEndpoint | 正しい | 糸 | DCE (データ収集エンドポイント) 例: https://example.ingest.monitor.azure.com 。 |
DataCollectionRuleImmutableId | 正しい | 糸 | DCR の変更できない ID。 DCR 作成応答を表示するか、 DCR API を使用して検索します |
StreamName | 正しい | ひも | この値は、DCR で定義されている streamDeclaration です (プレフィックスは Custom- で始まる必要があります) |
CCF データ コネクタの例
CCF データ コネクタ JSON のすべてのコンポーネントの一例を次に示します。
{
"kind": "RestApiPoller",
"properties": {
"connectorDefinitionName": "ConnectorDefinitionExample",
"dcrConfig": {
"streamName": "Custom-ExampleConnectorInput",
"dataCollectionEndpoint": "https://example-dce-sbsr.___location.ingest.monitor.azure.com",
"dataCollectionRuleImmutableId": "dcr-32_character_hexadecimal_id"
},
"dataType": "ExampleLogs",
"auth": {
"type": "Basic",
"password": "[[parameters('username')]",
"userName": "[[parameters('password')]"
},
"request": {
"apiEndpoint": "https://rest.contoso.com/example",
"rateLimitQPS": 10,
"queryWindowInMin": 5,
"httpMethod": "GET",
"queryTimeFormat": "UnixTimestamp",
"startTimeAttributeName": "t0",
"endTimeAttributeName": "t1",
"retryCount": 3,
"timeoutInSeconds": 60,
"headers": {
"Accept": "application/json",
"User-Agent": "Example-app-agent"
}
},
"paging": {
"pagingType": "LinkHeader"
},
"response": {
"eventsJsonPaths": ["$"]
}
}
}