A plugin that collects Google Cloud Platform billing data for the SpaceONE platform.
This plugin can collect GCP billing data from the following sources:
- BigQuery: Direct queries from GCP Billing Export tables
- Google Cloud Storage: Billing Export files (CSV, Parquet, Avro formats)
First, you need to register the plugin in SpaceONE.
register_plugin.yaml example:
capability: {} image: <docker_image_name> labels: - Cost - GCP - BigQuery - GCS Billing File - Google Cost DataSource name: <plugin_name> plugin_id: <unique_plugin_id> provider: google_cloud registry_config: image_pull_secret: <image_pull_secret> # Docker image authentication secret url: <docker_registry_url> # Docker registry URL registry_type: DOCKER_HUB # DOCKER_HUB, GCP_PRIVATE_GCR, AWS_PRIVATE_ECR resource_type: cost_analysis.DataSource tags: {}Registration command:
spacectl exec register repository.Plugin -f register_plugin.yamlRegister the plugin as a data source to enable actual billing data collection.
register_datasource.yaml example:
name: <datasource_name> data_source_type: EXTERNAL provider: google_cloud secret_type: MANUAL plugin_info: plugin_id: <plugin_id> version: <version> secret_data: # Google Cloud Service Account key information auth_provider_x509_cert_url: https://www.googleapis.com/oauth2/v1/certs auth_uri: https://accounts.google.com/o/oauth2/auth client_email: <service_account_email> client_id: <client_id> client_x509_cert_url: <certificate_url> private_key: <private_key> private_key_id: <key_id> project_id: <gcp_project_id> token_uri: https://oauth2.googleapis.com/token type: service_account universe_domain: googleapis.com metadata: currency: USD # Currency unit (USD, KRW, etc.) data_source_rules: - name: match_workspace actions: match_workspace: source: additional_info.Project ID target: data.project_id conditions_policy: ALWAYS options: stop_processing: true resource_group: DOMAIN options: # Plugin execution options source: bigquery # Data source: bigquery or gcs billing_export_project_id: <project_id> # Project ID where billing export is stored billing_dataset_id: <dataset_id> # BigQuery dataset ID billing_account_id: <billing_account_id> # GCP billing account ID select_cost: list_price # Cost selection: list_price or actual_cost currency: USD # Currency unit upgrade_mode: AUTO # Auto-update enabled schedule: state: ENABLED # Schedule enabled hours: 16 # Execution time (0-23) resource_group: DOMAIN tags: {}Registration command:
spacectl exec register cost_analysis.DataSource -f register_datasource.yamloptions: source: bigquery billing_export_project_id: <billing_export_project_id> billing_dataset_id: <bigquery_dataset_id> billing_account_id: <billing_account_id> selected_cost: list_price # or actual_cost currency: USDoptions: source: gcs bucket_name: <gcs_bucket_name> project_id: <project_id> selected_cost: list_price # or actual_cost currency: USD| Option | Description | Required | Example |
|---|---|---|---|
source | Data source selection | Required | bigquery, gcs |
billing_export_project_id | GCP project ID where billing export data is stored | Required | my-billing-project |
billing_dataset_id | BigQuery dataset ID (for BigQuery source) | Required for BigQuery | billing_data |
billing_account_id | GCP billing account ID | Required | 01AB23-CD45EF-GH69IJ |
bucket_name | GCS bucket name (for GCS source) | Required for GCS | my-billing-bucket |
project_id | GCS project ID (for GCS source) | Required for GCS | project_id |
select_cost | Cost data selection criteria | Required | list_price |
currency | Currency unit | Required | USD, KRW |
- Enable Billing Export: Set up Cloud Billing Export to BigQuery or GCS in the GCP console
- Create Service Account: Create a service account with the following permissions:
- For BigQuery:
BigQuery Data Viewer,BigQuery Job User - For GCS:
Storage Object Viewer
- For BigQuery:
- Generate Service Account Key: Create a JSON format key file
BigQuery table names must follow this pattern:
{billing_export_project_id}.{billing_dataset_id}.gcp_billing_export_v1_{billing_account_id} - Authentication Error: Check your service account key and permissions
- Table Not Found: Verify your billing account ID and export settings
- No Data Collected: Ensure billing export is enabled and data exists