課金利用ログの配信とアクセス

プレビュー

この機能はパブリックプレビュー段階です。

注:

課金利用ログでは全ての製品の使用状況は記録されません。 Databricks 、完全な使用状況ログを表示するには、システムテーブルを使用することをお勧めします。

Databricksアカウント管理者は、課金利用ログをCSVファイル形式でAWS S3ストレージバケットに毎日配信するように設定し、そのデータを使用状況分析に利用できるようにすることができます。 Databricks は、アカウント内のワークスペースごとに個別の CSV ファイルを提供します。 このCSVファイルには、ワークスペースのクラスターの使用状況に関する履歴データがDatabricksユニット (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を使用して作成されていないワークスペースを含め、任意のワークスペースでログ配信を構成できます。

大まかなフロー

課金利用ログ配信の大まかなフロー

  1. ストレージを構成する: AWS で、新しい AWS S3 バケットを作成します。 Databricks APIsを使用して、アカウントAPIを呼び出して、バケット名を使用するストレージ構成オブジェクトを作成します。

    注:

    ログ配信用に作成したIAMロールに使用されるアカウント以外のAWSアカウントにログを配信するには、S3バケットポリシーを追加する必要があります。このステップではポリシーを追加せず、後のステップで追加します。

  2. 資格情報を構成する: AWSで、適切なAWS IAM ロールを作成します。 Databricks APIsを使用して、アカウントAPIを呼び出して、IAM ロールのARNを使用する資格情報設定オブジェクトを作成します。 ロールポリシーでは、S3 バケット内でのログ配信のパスのプレフィックスを指定できます。 S3バケットを共有するが異なるパスプレフィックスを使用する異なるワークスペースに対してログ配信設定が必要な場合は、複数のパスプレフィックスを含むように IAM ロールを定義することを選択できます。

  3. オプションのクロスアカウントサポートログ配信用に作成した IAM ロールのアカウント以外のAWSアカウントにログを配信するには、 S3バケットポリシーを追加します。 このポリシーは、前のステップで作成したクロスアカウント IAM ロールの ID を参照します。

  4. ログ配信APIを呼び出す: アカウントAPIを呼び出して、前のステップの資格情報とストレージ構成オブジェクトを使用するログ配信構成を作成します。 このステップでは、ログ配信構成をアカウント全体 (現在のワークスペースと将来のワークスペース) に関連付けるか、特定のワークスペースのセットに関連付けるかを指定できます。

  5. 分析のために 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で認証するには、サービス プリンシパルを使用する」を参照してください。

次の例を使用して、Databricks アカウントに認証します。 サービスプリンシパルにOAuth使用するか、ユーザーにOAuthを使用できます。 背景については、以下を参照してください。

注:

Databricks のユーザー名とパスワードを使用した基本認証は、2024 年 7 月 10 日にサポートが終了しました。 Databricks 管理パスワードのサポート終了を参照してください。

認証の例については、以下から選択してください。

  1. Databricks CLI バージョン 0.205 以上をインストールします。 「Databricks CLI のインストールまたは更新」を参照してください。

  2. アカウントの サービスプリンシパル のOAuth M2M 認証を構成するには、手順を完了します。 「 Databricksで認証するにはサービスプリンシパルを使用する」を参照してください。

  3. .databrickscfg ファイルでDatabricks構成プロファイルを識別するか手動で作成し、サービスプリンシパルに関連する hostaccount_idclient_id、および client_secret のマッピングに対してプロファイルのフィールドが正しく設定されていることを確認します。 OAuth マシン間 (M2M) 認証を参照してください。

  4. 対象のDatabricks CLIコマンドを実行します。ここで、<profile-name>.databrickscfgファイル内の構成プロファイルの名前を表します。

    databricks account <command-name> <subcommand-name> -p <profile-name>
    

    たとえば、アカウント内のすべてのユーザーを一覧表示するには、以下のようにします。

    databricks account users list -p MY-AWS-ACCOUNT
    
    • 使用可能なアカウントコマンドを一覧表示するには、コマンドdatabricks account -hを実行します。

    • accountコマンドで使用可能なサブコマンドを一覧表示するには、コマンドdatabricks account <command-name> -hを実行します。

  1. Databricks CLI バージョン 0.205 以上をインストールします。 「Databricks CLI のインストールまたは更新」を参照してください。

  2. ステップを完了して、アカウント内のユーザーに対してOAuth U2M 認証を構成します。 OAuth ユーザー対マシン (U2M) 認証を参照してください。

  3. 以下のDatabricks CLIコマンドを実行して、ユーザー認証プロセスを開始します。

    databricks auth login --host <account-console-url> --account-id <account-id>
    

    例:

    databricks auth login --host https://accounts.cloud.databricks.com --account-id 00000000-0000-0000-0000-000000000000
    

    注:

    hostフィールドとaccount_idフィールドが既に設定されている既存の Databricks 構成プロファイルがある場合は、 --host <account-console-url> --account-id <account-id>--profile <profile-name>に置き換えることができます。

  4. 画面の指示に従って、Databricks CLIが関連するDatabricks構成プロファイルを.databrickscfg ファイルに自動的に作成します。

  5. 画面の指示に従って、WebブラウザからDatabricksアカウントにサインインします。

  6. 対象のDatabricks CLIコマンドを実行します。ここで、<profile-name>.databrickscfgファイル内の構成プロファイルの名前を表します。

    databricks account <command-name> <subcommand-name> -p <profile-name>
    

    たとえば、アカウント内のすべてのユーザーを一覧表示するには、以下のようにします。

    databricks account users list -p ACCOUNT-00000000-0000-0000-0000-000000000000
    
    • 使用可能なアカウントコマンドを一覧表示するには、コマンドdatabricks account -hを実行します。

    • accountコマンドで使用可能なサブコマンドを一覧表示するには、コマンドdatabricks account <command-name> -hを実行します。

ステップ1:ストレージを構成する

Databricksは、課金利用データをアカウントのS3バケットに配信します。複数のワークスペースが単一のS3バケットを使用するように構成することも、ワークスペース(またはワークスペースのグループ)ごとに異なるバケットを使用するように定義することもできます。

この手順では、アカウントの1つ以上のワークスペースに共通の構成で単一の構成オブジェクトを設定する方法について説明します。ワークスペースごとに異なる保存場所を使用するには、ワークスペースまたはワークスペースのグループごとにこの記事の手順を繰り返してください。

  1. ステップ1:監査ログストレージを構成する」の手順に従って、S3バケットを作成します。

    重要

    Databricks ワークスペースに使用されているもの以外の AWS アカウントにログを配信するには、S3 バケットポリシーを追加する必要があります。 このステップではバケット ポリシーを追加しません。 ステップ 3: オプションのクロスアカウント サポートを参照してください。

  2. 新しい S3 バケットを表す Databricks ストレージ構成レコードを作成します。 新しいストレージ構成 API ( POST /accounts/<account-id>/storage-configurations ) を作成して、S3 バケットを指定します。

    以下を指定します。

    • storage_configuration_name — 新しい一意のストレージ構成名。

    • root_bucket_info — S3バケット名を含むbucket_nameフィールドを含むJSONオブジェクト。

    応答本文で返されたstorage_configuration_id値をコピーします。この設定は、後のステップでログ配信設定を作成するために使用します。

    例:

    curl -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"
        }
      }'
    

    応答:

    {
      "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ロールを作成する必要があります。

  1. 管理者権限を持つユーザーとしてAWSコンソールにログインし、IAMサービスに移動します。

  2. サイドバーの「ロール」タブをクリックします。

  3. ロールの作成」をクリックします。

    1. 信頼できるエンティティの種類の選択」で、「AWSサービス」を選択します。

    2. 一般的なユースケース」で、「EC2」をクリックします。

    3. 次へ:権限」ボタンをクリックします。

    4. 次へ:タグ」ボタンをクリックします。

    5. 次へ:確認」ボタンをクリックします。

    6. ロール名」フィールドにロール名を入力します。

      ロール名
    7. ロールの作成」をクリックします。ロールのリストが表示されます。

  4. ロールのリストで、作成したロールをクリックします。

  5. インラインポリシーを追加します。

    1. 「権限」タブで、「インラインポリシーを追加」をクリックします。

      インラインポリシー
    2. ポリシーエディターで、「JSON」タブをクリックします。

      JSONエディター
    3. このアクセスポリシーをコピーして変更します。ポリシー内の以下の値を独自の設定値に置き換えます:

      • <s3-bucket-name>:AWS S3バケットのバケット名。

      • <s3-bucket-path-prefix>: (オプション) S3 バケット内の配信場所へのパス。 指定しない場合、ログはバケットのルートに配信されます。 ログ配信 API を呼び出すとき、このパスはdelivery_path_prefix引数と一致する必要があります。

      {
        "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つの隣接する行を複製します。新しいパスプレフィックスごとに各行のペアを繰り返します。例:

      {
        "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. ポリシーの確認」をクリックします。

    5. 名前」フィールドにポリシー名を入力します。

    6. ポリシーの作成」をクリックします。

    7. AWSアカウントレベルで特定のアクションを拒否するためにService Control Policiesを使用する場合、Databricksがクロスアカウントロールを引き受けることができるようにsts:AssumeRoleがホワイトリストに登録されていることを確認します。

  6. ロールの概要ページで、「信頼関係」タブをクリックします。

  7. このアクセス ポリシーをエディターに貼り付け、ポリシー内の次の値を独自の構成値に置き換えます。 ポリシーでは、Databricks AWS アカウント ID 414351767826を使用します。 Databricks on AWS GovCloud で Databricksを使用している場合は、 Databricksアカウント ID 044793339203 を使用してください。

    <databricks-account-id>:DatabricksアカウントID。

    {
      "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>"
              ]
            }
          }
        }
      ]
    }
    
  8. 後の手順で使用するため、ロールの概要でロールARNをコピーして保存してください。

    ロールARN
  9. AWS ロールの Databricks 認証情報構成 ID を作成します。 資格情報構成 API ( POST /accounts/<account-id>/credentials ) を作成します。 このリクエストはアカウント間の信頼を確立し、新しいワークスペースを作成するときに使用する参照 ID を返します。

    <account-id>をDatabricksのアカウントIDに置き換えます。さらにリクエスト本文で以下を実施します。

    • credentials_nameにはアカウント内で一意の名前に設定します。

    • aws_credentialssts_roleプロパティを含むオブジェクトに設定します。このオブジェクトには、作成したロールのrole_arnを指定する必要があります。

    応答本文には、新しいワークスペースを作成するために必要なDatabricks認証情報構成IDであるcredentials_idフィールドが含まれます。このフィールドをコピーしておくことで、後の手順でログ配信設定を作成するために使用することができます。

    例:

     curl -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"
         }
       }
     }'
    

    応答例:

     {
       "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を参照します。

  1. AWSコンソールで、S3サービスに移動します。

  2. バケット名をクリックします。

  3. 権限」タブをクリックします。

  4. バケットポリシー」ボタンをクリックします。

    バケットポリシーボタン
  5. このバケットポリシーをコピーして変更します。

    <s3-bucket-name>をS3バケット名に置き換えます。<customer-iam-role-id>を新しく作成したIAMロールのロールIDに置き換えます。<s3-bucket-path-prefix>を目的のバケットパスプレフィックスに置き換えます。パスプレフィックスのカスタマイズについては、ポリシーサンプルの後に記載されている注記を参照してください。

    {
      "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つの隣接する行を複製します。新しいパスプレフィックスごとに各行のペアを繰り返します。例:

      {
        "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."
        }
    }
}

ログ配信APIの追加機能

ログ配信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"
}