Deliver and access 課金利用ログ (legacy)
プレビュー
この機能は パブリック プレビュー段階です。
課金利用ログは、すべての商品の利用状況を記録するものではありません。 Databricks システム テーブル を使用して、完全な使用状況ログを表示することをお勧めします。
Databricksアカウント管理者は、CSVファイル形式の課金利用ログをAWS S3ストレージバケットに毎日配信するように設定し、データを利用分析に利用できるようにすることができます。Databricks は、アカウント内のワークスペースごとに個別の CSV ファイルを配信します。 この CSV ファイルには、ワークスペースのクラスターの使用状況に関するヒストリカルデータ ( Databricks Units: DBU) が含まれており、クラスター ID、請求 SKU、クラスター クリエーター、クラスタータグなどで並べ替えることができます。 各 CSV ファイル列の説明については、「 CSV ファイル スキーマ」を参照してください。
ログ配信を設定せずに API を使用して課金利用ログをダウンロードする場合は、 課金利用ログの返却を参照してください。
アカウント 管理者は、 アカウントコンソールの [使用状況] ページで、使用状況をグラフまたは表形式で表示できます。 このページには、ワークロードの種類別にグループ化された DBU でのアカウント使用量を表示する使用状況グラフも含まれており、使用状況データを CSV 形式で直接ダウンロードできます。
アカウントが別のバージョンのプラットフォームを使用している場合、アカウント所有者は レガシーアカウントコンソールの[使用状況の概要]タブで使用状況を表示できます。
オプションで、ログ配信用に作成したIAMロールに使用されるアカウント以外のAWSアカウントにログを配信することができます。これにより、たとえば複数のAWSアカウントから同じS3バケットに配信するワークスペースを設定するなど、柔軟な対応が可能になります。このオプションでは、クロスアカウントIAMロールを参照するS3バケットポリシーを設定する必要があります。この記事では、その手順とポリシーテンプレートを提供しています。
アカウント所有者とアカウント管理者のログへのアクセスは、S3バケットの設定方法によって異なります。Databricksは、AWS組み込みのBucketOwnerFullControl Canned ACLを使用してS3バケットにログを配信するため、アカウントの所有者および指定されたユーザーはログを直接ダウンロードできます。新しく作成されたオブジェクトのバケット所有権をサポートするには、バケットの「 S3オブジェクト所有権 」設定を「 バケット所有者の優先 」値に設定する必要があります。
代わりに、バケットの「 S3オブジェクト所有権 」設定を「 オブジェクトライター 」にすると、ログなどの新しいオブジェクトは、アップロードアカウント(デフォルトでは、バケットにアクセスするために作成および指定したIAMロール)が所有したままになります。この場合、AWSコンソールやバケット所有者として認証された自動化ツールからアクセスすることはできないため、ログにアクセスするのが難しくなります。
Databricksは、バケット内のデータを不要なアクセスから保護するためのガイダンスとして、S3のセキュリティベストプラクティスを確認することをお勧めしています。
実行中のワークスペースのログの配信に加えて、 キャンセルされたワークスペース のログも配信され、ワークスペースの最終日を表すログが適切に配信されるようになります。
構成オプション
アカウントに複数のワークスペースがある場合、課金利用ログ配信を構成するときに、以下のオプションを利用できます。
- アカウント内のすべてのワークスペースで同じ構成(ログ配信S3バケットとIAMロール)を共有する。これがデフォルトです。
- アカウント内の各ワークスペースに個別の構成を使用する。
- ワークスペースのグループごとに個別の構成を使用し、グループ内で構成を共有する。
アカウントAPIを使用してログ配信を構成する場合でも、アカウントAPIを使用して作成されていないワークスペースを含め、任意のワークスペースでログ配信を構成できます。
高レベルのフロー
課金利用ログ配信の大まかなフロー
- ストレージの設定: AWS で、新しい AWS S3 バケットを作成します。 Databricks APIsを使用して、アカウント APIを呼び出し、バケット名を使用するストレージ設定オブジェクトを作成します。
ログ配信用に作成したIAMロールに使用されるアカウント以外のAWSアカウントにログを配信するには、S3バケットポリシーを追加する必要があります。このステップではポリシーを追加せず、後のステップで追加します。
-
資格情報の構成: AWSで、適切な AWS IAMロールを作成します。 Databricks APIsを使用して、アカウント APIを呼び出して、IAMロールのARNを使用する資格情報設定オブジェクトを作成します。ロールポリシーでは、S3 バケット内のログ配信のパスプレフィックスを指定できます。 IAMバケットを共有し、異なるパスプレフィックスを使用する異なるワークスペースのログ配信設定が必要な場合は、複数のパスプレフィックスを含む ロールを定義することを選択できます。S3
-
オプションのクロスアカウントサポート AWSログ配信用に作成した ロールのアカウント以外の アカウントにログを配信するには、IAM S3バケットポリシーを追加します。このポリシーは、前の手順で作成したクロスアカウント IAMロールの ID を参照します。
-
ログ配信 API を呼び出す: アカウント API を呼び出して、前の手順の資格情報とストレージ設定オブジェクトを使用するログ配信設定を作成します。 この手順では、ログ配信設定をアカウント全体 (現在および将来のワークスペース) に関連付けるか、特定のワークスペースのセットに関連付けるかを指定できます。
-
分析のために CSV ファイルにアクセスする:配信場所は
<bucket-name>/<prefix>/billable-usage/csv/
で、<prefix>
は、ログ配信の設定時に設定したオプションの配信パスプレフィックスの名前です。 ファイルの名前はworkspaceId=<workspace-id>-usageMonth=<month>.csv
です。 ファイルは、ワークスペースごとにその月の CSV ファイルを上書きして毎日配信されます。 このデータを Databricks にインポートして分析できます。 また、これらの CSV ファイルに基づいて使用状況分析ダッシュボードを実行するために使用できるサンプル ノートブックもあります。 「Databricks で使用状況データを分析する」を参照してください。
アカウントに対して作成できるログ配信設定の数には制限があります。アカウントレベルを使用する有効な構成を2つ(ワークスペースフィルターなし)、特定のワークスペースごとに有効な構成を2つまで作成できます(2つの構成のワークスペースフィルターにworkspaceId
を含めることができます)。ログ配信設定を削除することはできませんが、無効にすることはできます。無効にした構成を再度有効にすることはできますが、前述の制限に違反するとリクエストが失敗します。
必要条件
- アカウント管理者である必要があります
- アカウント ID。 アカウント ID は 、アカウント コンソールで確認できます。
アカウントAPIへの認証方法
アカウント APIに対して認証するには、サービスプリンシパルの Databricks OAuth または ユーザーの Databricks OAuth を使用できます。 Databricks は、ユーザーまたはサービスプリンシパルの Databricks OAuth を使用することを強くお勧めします。 サービスプリンシパルは、自動化ツール、ジョブ、およびアプリケーションで使用するために Databricks で作成する ID です。 「を使用してDatabricks リソースへの無人アクセスをサービスプリンシパルで承認 する」を参照してください。OAuth
次の例を使用して、Databricks アカウントに認証します。 サービスプリンシパルには OAuth を、ユーザーには OAuth を使用できます。 背景については、以下を参照してください。
- OAuthサービスプリンシパルの については、「Databricksを使用してサービスプリンシパルを使用して リソースへの無人アクセスを承認OAuth する」を参照してください。
- ユーザーの OAuth については、「 OAuth を使用してユーザー アカウントで Databricks リソースへの対話型アクセスを承認する」を参照してください。
Databricks のユーザー名とパスワードを使用した基本認証は、2024 年 7 月 10 日にサポートが終了しました。 「Databricks で管理されるパスワードのサポート終了」を参照してください。
認証の例については、以下から選択してください。
- OAuth for service principals
- OAuth for users
-
Install Databricks CLI version 0.205 or above. See Install or update the Databricks CLI.
-
Complete the steps to configure OAuth M2M authentication for service principals in the account. See Authorize unattended access to Databricks resources with a service principal using OAuth.
-
Identify or manually create a Databricks configuration profile in your
.databrickscfg
file, with the profile’s fields set correctly for the relatedhost
,account_id
, andclient_id
andclient_secret
mapping to the service principal. See OAuth machine-to-machine (M2M) authentication. -
Run your target Databricks CLI command, where
<profile-name>
represents the name of the configuration profile in your.databrickscfg
file:Bashdatabricks account <command-name> <subcommand-name> -p <profile-name>
For example, to list all users in the account:
Bashdatabricks account users list -p MY-AWS-ACCOUNT
- For a list of available account commands, run the command
databricks account -h
. - For a list of available subcommands for an account command, run the command
databricks account <command-name> -h
.
- For a list of available account commands, run the command
-
Install Databricks CLI version 0.205 or above. See Install or update the Databricks CLI.
-
Complete the steps to configure OAuth U2M authentication for users in the account. See Authorize interactive access to Databricks resources with a user account using OAuth.
-
Start the user authentication process by running the following Databricks CLI command:
Bashdatabricks auth login --host <account-console-url> --account-id <account-id>
For example:
Bashdatabricks auth login --host https://accounts.cloud.databricks.com --account-id 00000000-0000-0000-0000-000000000000
If you have an existing Databricks configuration profile with the host
and account_id
fields already set, you can substitute --host <account-console-url> --account-id <account-id>
with --profile <profile-name>
.
-
Follow the on-screen instructions to have the Databricks CLI automatically create the related Databricks configuration profile in your
.databrickscfg
file. -
Continue following the on-screen instructions to sign in to your Databricks account through your web browser.
-
Run your target Databricks CLI command, where
<profile-name>
represents the name of the configuration profile in your.databrickscfg
file:Bashdatabricks account <command-name> <subcommand-name> -p <profile-name>
For example, to list all users in the account:
Bashdatabricks account users list -p ACCOUNT-00000000-0000-0000-0000-000000000000
- For a list of available account commands, run the command
databricks account -h
. - For a list of available subcommands for an account command, run the command
databricks account <command-name> -h
.
- For a list of available account commands, run the command
ステップ 1: ストレージを構成する
Databricksは、課金利用データをアカウントのS3バケットに配信します。複数のワークスペースが単一のS3バケットを使用するように構成することも、ワークスペース(またはワークスペースのグループ)ごとに異なるバケットを使用するように定義することもできます。
この手順では、アカウントの1つ以上のワークスペースに共通の構成で単一の構成オブジェクトを設定する方法について説明します。ワークスペースごとに異なる保存場所を使用するには、ワークスペースまたはワークスペースのグループごとにこの記事の手順を繰り返してください。
- 「ステップ 1: 監査ログストレージを設定する」の手順に従って、S3 バケットを作成します。
Databricks ワークスペースに使用されているアカウント以外の AWS アカウントにログを配信するには、S3 バケットポリシーを追加する必要があります。 このステップでは、バケットポリシーは追加しません。 「 ステップ 3: オプションのクロスアカウントサポート」を参照してください。
-
新しい S3 バケットを表す Databricks ストレージ構成レコードを作成します。 新しいストレージ設定 API (
POST /accounts/<account-id>/storage-configurations
) を呼び出して、S3 バケットを指定します。以下を指定します。
storage_configuration_name
— 新しい一意のストレージ構成名。root_bucket_info
— S3バケット名を含むbucket_name
フィールドを含むJSONオブジェクト。
応答本文で返された
storage_configuration_id
値をコピーします。この設定は、後のステップでログ配信設定を作成するために使用します。例えば:
Bashcurl -X POST
'https://accounts.cloud.databricks.com/api/2.0/accounts/<databricks-account-id>/storage-configurations' \
--header 'Authorization: Bearer $OAUTH_TOKEN' \
-d '{
"storage_configuration_name": "databricks-workspace-storageconf-v1",
"root_bucket_info": {
"bucket_name": "my-company-example-bucket"
}
}'応答:
JSON{
"storage_configuration_id": "<databricks-storage-config-id>",
"account_id": "<databricks-account-id>",
"root_bucket_info": {
"bucket_name": "my-company-example-bucket"
},
"storage_configuration_name": "databricks-workspace-storageconf-v1",
"creation_time": 1579754875555
}
ステップ 2: 資格情報を構成する
この手順では、アカウントの1つ以上のワークスペースに共通の構成で単一の構成オブジェクトを設定する方法について説明します。ワークスペースごとに異なる資格情報を使用するには、各ワークスペースまたはワークスペースのグループに対してこの記事の手順を繰り返します。
異なるS3バケット名を使用するには、別のIAMロールを作成する必要があります。
-
管理者権限を持つユーザーとしてAWSコンソールにログインし、 IAM サービスに移動します。
-
サイドバーの「 ロール 」タブをクリックします。
-
「 ロールの作成 」をクリックします。
-
「 信頼できるエンティティの種類の選択 」で、「 AWSサービス 」を選択します。
-
「 一般的なユースケース 」で、「 EC2 」をクリックします。
-
「 次へ:権限 」ボタンをクリックします。
-
「 次へ:タグ 」ボタンをクリックします。
-
「 次へ:確認 」ボタンをクリックします。
-
「 ロール名 」フィールドにロール名を入力します。
-
「 ロールの作成 」をクリックします。ロールのリストが表示されます。
-
-
ロールのリストで、作成したロールをクリックします。
-
インラインポリシーを追加します。
-
「権限」タブで、「 インラインポリシーを追加 」をクリックします。
-
ポリシーエディターで、「 JSON 」タブをクリックします。
-
このアクセスポリシーをコピーして変更します。ポリシー内の以下の値を独自の設定値に置き換えます:
<s3-bucket-name>
:AWS S3バケットのバケット名。<s3-bucket-path-prefix>
: (オプション) S3 バケット内の配信場所へのパス。 指定しない場合、ログはバケットのルートに配信されます。 このパスは、ログ配信 API を呼び出すときにdelivery_path_prefix
引数と一致する必要があります。
JSON{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetBucketLocation"],
"Resource": ["arn:aws:s3:::<s3-bucket-name>"]
},
{
"Effect": "Allow",
"Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:PutObjectAcl", "s3:AbortMultipartUpload"],
"Resource": [
"arn:aws:s3:::<s3-bucket-name>/<s3-bucket-path-prefix>/",
"arn:aws:s3:::<s3-bucket-name>/<s3-bucket-path-prefix>/*"
]
},
{
"Effect": "Allow",
"Action": ["s3:ListBucket", "s3:ListMultipartUploadParts", "s3:ListBucketMultipartUploads"],
"Resource": "arn:aws:s3:::<s3-bucket-name>",
"Condition": {
"StringLike": {
"s3:prefix": ["<s3-bucket-path-prefix>", "<s3-bucket-path-prefix>/*"]
}
}
}
]
}パスプレフィックスのポリシー使用をカスタマイズできます。
- バケットパスプレフィックスを使用したくない場合は、
<s3-bucket-path-prefix>/
(末尾のスラッシュを含む)が表示されるたびにポリシーから削除します。 - S3バケットを共有しているが異なるパスプレフィックスを使用している別のワークスペース用にログ配信設定が必要な場合は、複数のパスプレフィックスを含めるようにIAMロールを定義できます。ポリシーでは、2カ所で
<s3-bucket-path-prefix>
を参照しています。それぞれで、パスプレフィックスを参照する2つの隣接する行を複製します。新しいパスプレフィックスごとに各行のペアを繰り返します。例:
JSON{
"Resource": [
"arn:aws:s3:::<mybucketname>/field-team/",
"arn:aws:s3:::<mybucketname>/field-team/*",
"arn:aws:s3:::<mybucketname>/finance-team/",
"arn:aws:s3:::<mybucketname>/finance-team/*"
]
} -
「 ポリシーの確認 」をクリックします。
-
「 名前 」フィールドにポリシー名を入力します。
-
「 ポリシーの作成 」をクリックします。
-
サービスコントロールポリシーを使用して AWS アカウントレベルで特定のアクションを拒否する場合は、Databricks がクロスアカウントロールを引き受けることができるように、
sts:AssumeRole
がホワイトリストに登録されていることを確認してください。
-
-
ロールの概要ページで、「 信頼関係 」タブをクリックします。
-
このアクセスポリシーをエディタに貼り付け、ポリシー内の次の値を独自の設定値に置き換えます。 このポリシーでは、Databricks AWS アカウント ID
414351767826
を使用します。 を使用している場合は、 には Databricks on AWSGovCloudDatabricksアカウントID044793339203
AWSGovCloud170661010020
AWSGovCloud、DoDには を使用します 。<databricks-account-id>
:DatabricksアカウントID。JSON{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::414351767826:role/SaasUsageDeliveryRole-prod-IAMRole-3PLHICCRR1TK"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": ["<databricks-account-id>"]
}
}
}
]
} -
後の手順で使用するため、ロールの概要で ロールARN をコピーして保存してください。
-
AWS ロールの Databricks 資格情報構成 ID を作成します。 資格情報の作成 構成 API (
POST /accounts/<account-id>/credentials
) を呼び出します。このリクエストは、クロスアカウント信頼を確立し、新しいワークスペースを作成するときに使用する参照 ID を返します。<account-id>
をDatabricksのアカウントIDに置き換えます。さらにリクエスト本文で以下を実施します。credentials_name
にはアカウント内で一意の名前に設定します。aws_credentials
をsts_role
プロパティを含むオブジェクトに設定します。このオブジェクトには、作成したロールのrole_arn
を指定する必要があります。
応答本文には、新しいワークスペースを作成するために必要なDatabricks認証情報構成IDである
credentials_id
フィールドが含まれます。このフィールドをコピーしておくことで、後の手順でログ配信設定を作成するために使用することができます。例えば:
Bashcurl -X POST
'https://accounts.cloud.databricks.com/api/2.0/accounts/<databricks-account-id>/credentials' \
--header 'Authorization: Bearer $OAUTH_TOKEN' \
-d '{
"credentials_name": "databricks-credentials-v1",
"aws_credentials": {
"sts_role": {
"role_arn": "arn:aws:iam::<aws-account-id>:role/my-company-example-role"
}
}
}'応答例:
JSON{
"credentials_id": "<databricks-credentials-id>",
"account_id": "<databricks-account-id>",
"aws_credentials": {
"sts_role": {
"role_arn": "arn:aws:iam::<aws-account-id>:role/my-company-example-role",
"external_id": "<databricks-account-id>"
}
},
"credentials_name": "databricks-credentials-v1",
"creation_time": 1579753556257
}後で使用するために、応答から
credentials_id
フィールドをコピーします。
ステップ 3: オプションのクロスアカウントサポート
S3バケットがログ配信に使用されるIAMロールと同じAWSアカウントにある場合は、このステップをスキップしてください。
ログ配信用に作成したIAMロールに使用されるアカウント以外のAWSアカウントにログを配信するには、以下のようにS3バケットポリシーを追加します。このポリシーでは、前のステップで作成したクロスアカウントIAMロールのIDを参照します。
-
AWSコンソールで、S3サービスに移動します。
-
バケット名をクリックします。
-
「 権限 」タブをクリックします。
-
「 バケットポリシー 」ボタンをクリックします。
-
このバケットポリシーをコピーして変更します。
<s3-bucket-name>
をS3バケット名に置き換えます。<customer-iam-role-id>
を新しく作成したIAMロールのロールIDに置き換えます。<s3-bucket-path-prefix>
を目的のバケットパスプレフィックスに置き換えます。パスプレフィックスのカスタマイズについては、ポリシーサンプルの後に記載されている注記を参照してください。JSON{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": ["arn:aws:iam::<customer-iam-role-id>"]
},
"Action": "s3:GetBucketLocation",
"Resource": "arn:aws:s3:::<s3-bucket-name>"
},
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<customer-iam-role-id>"
},
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject",
"s3:PutObjectAcl",
"s3:AbortMultipartUpload",
"s3:ListMultipartUploadParts"
],
"Resource": [
"arn:aws:s3:::<s3-bucket-name>/<s3-bucket-path-prefix>/",
"arn:aws:s3:::<s3-bucket-name>/<s3-bucket-path-prefix>/*"
]
},
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<customer-iam-role-id>"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::<s3-bucket-name>",
"Condition": {
"StringLike": {
"s3:prefix": ["<s3-bucket-path-prefix>", "<s3-bucket-path-prefix>/*"]
}
}
}
]
}パスプレフィックスのポリシー使用をカスタマイズできます。
-
バケットパスプレフィックスを使用したくない場合は、
<s3-bucket-path-prefix>/
(末尾のスラッシュを含む)が表示されるたびにポリシーから削除します。 -
同じS3バケットを共有しているが異なるパスプレフィックスを使用している複数のワークスペース用にログ配信設定が必要な場合は、複数のパスプレフィックスを含めるようにIAMロールを定義できます。ポリシーでは、2カ所で
<s3-bucket-path-prefix>
を参照しています。それぞれの場所で、パスプレフィックスを参照する2つの隣接する行を複製します。新しいパスプレフィックスごとに各行のペアを繰り返します。例えば:JSON{
"Resource": [
"arn:aws:s3:::<mybucketname>/field-team/",
"arn:aws:s3:::<mybucketname>/field-team/*",
"arn:aws:s3:::<mybucketname>/finance-team/",
"arn:aws:s3:::<mybucketname>/finance-team/*"
]
}
-
ステップ 4: ログ配信 API を呼び出す
ログ配信を設定するには、 ログ配信設定 API (POST /accounts/<account-id>/log-delivery
)を呼び出します。
前の手順でコピーした以下の値が必要です。
credentials_id
:クロスアカウントロール資格情報を表すDatabricks資格情報構成ID。storage_configuration_id
:お客様のDatabricksルートS3バケットを表すストレージ構成ID。
以下のフィールドも設定します。
-
log_type
:常にBILLABLE_USAGE
に設定します。 -
output_format
: 常にCSV
に設定します。 CSVファイル形式の詳細については、「課金利用ログスキーマ(レガシー)」を参照してください。 -
delivery_path_prefix
:(オプション)パスプレフィックスに設定します。これは、ロールポリシーで使用したパスプレフィックスと一致する必要があります。 -
workspace_ids_filter
:(オプション)デフォルトでは、このログ構成はアカウントIDに関連付けられたすべてのワークスペースに適用されます。一部のタイプのデプロイメントでは、ワークスペースがアカウントIDごとに1つだけであるため、このフィールドは不要です。もともとアカウントAPIを使用してワークスペースを作成するためにアカウントを作成していた場合、アカウントIDに複数のワークスペースが関連付けられている可能性があります。オプションで、このフィールドをこの構成が適用されるワークスペースIDの配列に設定することができます。ワークスペースごとに異なるログ配信設定を使用する予定がある場合は、これを空白のままにするのではなく、明示的に設定します。これを空白のままにした場合、今後お客様のアカウントIDを追加のワークスペースに関連付けると、この構成が新しいワークスペースにも適用されます。ワークスペースが複数のログ配信設定に適用される場合があり、その場合、ログは複数の場所に書き込まれます。
アカウントに対して作成できるログ配信設定の数には制限があります。アカウントレベルを使用する有効な構成を2つ(ワークスペースフィルターなし)、特定のワークスペースごとに有効な構成を2つまで作成できます(2つの構成のワークスペースフィルターにworkspaceId
を含めることができます)。ログ配信設定を削除することはできませんが、無効にすることはできます。無効にした構成を再度有効にすることはできますが、前述の制限に違反するとリクエストが失敗します。
delivery_start_time
:(オプション)ログ配信が開始される月と年。デフォルトは現在の月です。形式は、YYYY-MM
形式のテキストです。2019-03以降の任意の月と年を入力できます。
例えば:
curl -X POST
'https://accounts.cloud.databricks.com/api/2.0/accounts/<databricks-account-id>/log-delivery' \
--header 'Authorization: Bearer $OAUTH_TOKEN' \
-d '{
"log_delivery_configuration": {
"log_type": "BILLABLE_USAGE",
"config_name": "billable usage config",
"output_format": "CSV",
"credentials_id": "<databricks-credentials-id>",
"storage_configuration_id": "<databricks-storage-config-id>",
"delivery_path_prefix": "usage-data",
"delivery_start_time": "2020-06",
"workspace_ids_filter": [
6383650456894062,
4102272838062927
]
}
}'
応答例:
{
"log_delivery_configuration": {
"config_id": "<config-id>",
"config_name": "billable usage config",
"log_type": "BILLABLE_USAGE",
"output_format": "CSV",
"account_id": "<account-id>",
"credentials_id": "<databricks-credentials-id>",
"storage_configuration_id": "<databricks-storage-config-id>",
"workspace_ids_filter": [6383650456894062, 4102272838062927],
"delivery_path_prefix": "usage-data",
"delivery_start_time": "2020-06",
"status": "ENABLED",
"creation_time": 1591638409000,
"update_time": 1593108904000,
"log_delivery_status": {
"status": "CREATED",
"message": "Log Delivery Configuration is successfully created. Status will be updated after the first delivery attempt."
}
}
}
ログ配信APIsの追加機能
ログ配信APIsには追加機能があります。詳細については、API リファレンス ドキュメントを参照してください。
追加の操作には以下のものがあります。
ログ配信設定ステータスは、API応答のlog_delivery_status
オブジェクトで確認できます。log_delivery_status
を使用すると、ステータス(成功または失敗)と、最後に試行または成功した配信の時間を確認できます。
アカウントに対して作成できるログ配信設定の数には制限があります。アカウントレベルを使用する有効な構成を2つ(ワークスペースフィルターなし)、特定のワークスペースごとに有効な構成を2つまで作成できます(2つの構成のワークスペースフィルターにworkspaceId
を含めることができます)。ログ配信設定を削除することはできませんが、無効にすることはできます。無効にした構成を再度有効にすることはできますが、前述の制限に違反するとリクエストが失敗します。
ステップ 5: 分析のためにログファイルにアクセスする
ログファイルは<bucket-name>/<prefix>/billable-usage/csv/
に配信されます。ここで、<prefix>
はログ配信設定中に設定したオプションの配信パスプレフィックスの名前です。ファイルの名前はworkspaceId=<workspace-id>-usageMonth=<month>.csv
になります。ファイルは、ワークスペースごとに月のCSVファイルを上書きして毎日配信されます。
CSV スキーマについては、「CSV ファイル スキーマ」を参照してください
Databricksを使用してこれらのファイルを分析する方法については、「Databricksで使用状況データを分析する」を参照してください。
Terraform を使用した自動構成
Databricks Terraform プロバイダーを使用すると、databricks_mws_log_delivery リソースを使用して使用状況ログの配信を自動的に構成できます。使用と監査ログの配信のエンドツーエンドの例を次に示します。
variable "databricks_account_id" {
description = "Account ID. You can get your account ID in the bottom left corner of the account console. See https://accounts.cloud.databricks.com"
}
resource "aws_s3_bucket" "logdelivery" {
bucket = "${var.prefix}-logdelivery"
acl = "private"
versioning {
enabled = false
}
force_destroy = true
tags = merge(var.tags, {
Name = "${var.prefix}-logdelivery"
})
}
resource "aws_s3_bucket_public_access_block" "logdelivery" {
bucket = aws_s3_bucket.logdelivery.id
ignore_public_acls = true
}
data "databricks_aws_assume_role_policy" "logdelivery" {
external_id = var.databricks_account_id
for_log_delivery = true
}
resource "aws_iam_role" "logdelivery" {
name = "${var.prefix}-logdelivery"
description = "(${var.prefix}) UsageDelivery role"
assume_role_policy = data.databricks_aws_assume_role_policy.logdelivery.json
tags = var.tags
}
data "databricks_aws_bucket_policy" "logdelivery" {
full_access_role = aws_iam_role.logdelivery.arn
bucket = aws_s3_bucket.logdelivery.bucket
}
resource "aws_s3_bucket_policy" "logdelivery" {
bucket = aws_s3_bucket.logdelivery.id
policy = data.databricks_aws_bucket_policy.logdelivery.json
}
resource "databricks_mws_credentials" "log_writer" {
account_id = var.databricks_account_id
credentials_name = "Usage Delivery"
role_arn = aws_iam_role.logdelivery.arn
}
resource "databricks_mws_storage_configurations" "log_bucket" {
account_id = var.databricks_account_id
storage_configuration_name = "Usage Logs"
bucket_name = aws_s3_bucket.logdelivery.bucket
}
resource "databricks_mws_log_delivery" "usage_logs" {
account_id = var.databricks_account_id
credentials_id = databricks_mws_credentials.log_writer.credentials_id
storage_configuration_id = databricks_mws_storage_configurations.log_bucket.storage_configuration_id
delivery_path_prefix = "billable-usage"
config_name = "Usage Logs"
log_type = "BILLABLE_USAGE"
output_format = "CSV"
}
resource "databricks_mws_log_delivery" "audit_logs" {
account_id = var.databricks_account_id
credentials_id = databricks_mws_credentials.log_writer.credentials_id
storage_configuration_id = databricks_mws_storage_configurations.log_bucket.storage_configuration_id
delivery_path_prefix = "audit-logs"
config_name = "Audit Logs"
log_type = "AUDIT_LOGS"
output_format = "JSON"
}