Create AWS CCM config

Note: This endpoint is in preview and may be subject to change. If you have any feedback, contact Datadog support.

POST https://api.ap1.datadoghq.com/api/v2/integration/aws/accounts/{aws_account_config_id}/ccm_confighttps://api.ap2.datadoghq.com/api/v2/integration/aws/accounts/{aws_account_config_id}/ccm_confighttps://api.datadoghq.eu/api/v2/integration/aws/accounts/{aws_account_config_id}/ccm_confighttps://api.ddog-gov.com/api/v2/integration/aws/accounts/{aws_account_config_id}/ccm_confighttps://api.us2.ddog-gov.com/api/v2/integration/aws/accounts/{aws_account_config_id}/ccm_confighttps://api.datadoghq.com/api/v2/integration/aws/accounts/{aws_account_config_id}/ccm_confighttps://api.us3.datadoghq.com/api/v2/integration/aws/accounts/{aws_account_config_id}/ccm_confighttps://api.us5.datadoghq.com/api/v2/integration/aws/accounts/{aws_account_config_id}/ccm_config

Overview

Create the Cloud Cost Management config for an AWS Account Integration Config using Cost and Usage Report (CUR) 2.0 by config ID. This endpoint requires the aws_configuration_edit permission.

Arguments

Path Parameters

Name

Type

Description

aws_account_config_id [required]

string

Unique Datadog ID of the AWS Account Integration Config. To get the config ID for an account, use the List all AWS integrations endpoint and query by AWS Account ID.

Request

Body Data (required)

Create a Cloud Cost Management config for an AWS Account Integration Config.

Expand All

Field

Type

Description

data [required]

object

AWS CCM Config Create/Update Request data.

attributes [required]

object

AWS CCM Config attributes for Create/Update requests.

ccm_config [required]

object

AWS Cloud Cost Management config.

data_export_configs [required]

[object]

List of data export configurations for Cost and Usage Reports.

bucket_name [required]

string

Name of the S3 bucket where the Cost and Usage Report is stored.

bucket_region [required]

string

AWS region of the S3 bucket.

report_name [required]

string

Name of the Cost and Usage Report.

report_prefix [required]

string

S3 prefix where the Cost and Usage Report is stored.

report_type [required]

string

Type of the Cost and Usage Report. Currently only CUR2.0 is supported.

type [required]

enum

AWS CCM Config resource type. Allowed enum values: ccm_config

default: ccm_config

{
  "data": {
    "attributes": {
      "ccm_config": {
        "data_export_configs": [
          {
            "bucket_name": "billing",
            "bucket_region": "us-east-1",
            "report_name": "cost-and-usage-report",
            "report_prefix": "reports",
            "report_type": "CUR2.0"
          }
        ]
      }
    },
    "type": "ccm_config"
  }
}

Response

AWS CCM Config object

AWS CCM Config response body.

Expand All

Field

Type

Description

data [required]

object

AWS CCM Config response data.

attributes

object

AWS CCM Config response attributes.

data_export_configs

[object]

List of data export configurations for Cost and Usage Reports.

bucket_name [required]

string

Name of the S3 bucket where the Cost and Usage Report is stored.

bucket_region [required]

string

AWS region of the S3 bucket.

report_name [required]

string

Name of the Cost and Usage Report.

report_prefix [required]

string

S3 prefix where the Cost and Usage Report is stored.

report_type [required]

string

Type of the Cost and Usage Report. Currently only CUR2.0 is supported.

id

string

Unique Datadog ID of the AWS Account Integration Config. To get the config ID for an account, use the List all AWS integrations endpoint and query by AWS Account ID.

type [required]

enum

AWS CCM Config resource type. Allowed enum values: ccm_config

default: ccm_config

{
  "data": {
    "attributes": {
      "data_export_configs": [
        {
          "bucket_name": "billing",
          "bucket_region": "us-east-1",
          "report_name": "cost-and-usage-report",
          "report_prefix": "reports",
          "report_type": "CUR2.0"
        }
      ]
    },
    "id": "00000000-abcd-0001-0000-000000000000",
    "type": "ccm_config"
  }
}

Forbidden

API error response.

Expand All

Field

Type

Description

errors [required]

[string]

A list of errors.

{
  "errors": [
    "Bad Request"
  ]
}

Not Found

API error response.

Expand All

Field

Type

Description

errors [required]

[string]

A list of errors.

{
  "errors": [
    "Bad Request"
  ]
}

Conflict

API error response.

Expand All

Field

Type

Description

errors [required]

[string]

A list of errors.

{
  "errors": [
    "Bad Request"
  ]
}

Too many requests

API error response.

Expand All

Field

Type

Description

errors [required]

[string]

A list of errors.

{
  "errors": [
    "Bad Request"
  ]
}

Code Example

                  ## default
# 

# Path parameters
export aws_account_config_id="CHANGE_ME"
# Curl command
curl -X POST "https://api.ap1.datadoghq.com"https://api.ap2.datadoghq.com"https://api.datadoghq.eu"https://api.ddog-gov.com"https://api.us2.ddog-gov.com"https://api.datadoghq.com"https://api.us3.datadoghq.com"https://api.us5.datadoghq.com/api/v2/integration/aws/accounts/${aws_account_config_id}/ccm_config" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "DD-API-KEY: ${DD_API_KEY}" \ -H "DD-APPLICATION-KEY: ${DD_APP_KEY}" \ -d @- << EOF { "data": { "attributes": { "ccm_config": { "data_export_configs": [ { "bucket_name": "billing", "bucket_region": "us-east-1", "report_name": "cost-and-usage-report", "report_prefix": "reports", "report_type": "CUR2.0" } ] } }, "type": "ccm_config" } } EOF
"""
Create AWS CCM config returns "AWS CCM Config object" response
"""

from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v2.api.aws_integration_api import AWSIntegrationApi
from datadog_api_client.v2.model.aws_ccm_config import AWSCcmConfig
from datadog_api_client.v2.model.aws_ccm_config_request import AWSCcmConfigRequest
from datadog_api_client.v2.model.aws_ccm_config_request_attributes import AWSCcmConfigRequestAttributes
from datadog_api_client.v2.model.aws_ccm_config_request_data import AWSCcmConfigRequestData
from datadog_api_client.v2.model.aws_ccm_config_type import AWSCcmConfigType
from datadog_api_client.v2.model.data_export_config import DataExportConfig

body = AWSCcmConfigRequest(
    data=AWSCcmConfigRequestData(
        attributes=AWSCcmConfigRequestAttributes(
            ccm_config=AWSCcmConfig(
                data_export_configs=[
                    DataExportConfig(
                        bucket_name="billing",
                        bucket_region="us-east-1",
                        report_name="cost-and-usage-report",
                        report_prefix="reports",
                        report_type="CUR2.0",
                    ),
                ],
            ),
        ),
        type=AWSCcmConfigType.CCM_CONFIG,
    ),
)

configuration = Configuration()
configuration.unstable_operations["create_aws_account_ccm_config"] = True
with ApiClient(configuration) as api_client:
    api_instance = AWSIntegrationApi(api_client)
    response = api_instance.create_aws_account_ccm_config(aws_account_config_id="aws_account_config_id", body=body)

    print(response)

Instructions

First install the library and its dependencies and then save the example to example.py and run following commands:

    
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" python3 "example.py"
# Create AWS CCM config returns "AWS CCM Config object" response

require "datadog_api_client"
DatadogAPIClient.configure do |config|
  config.unstable_operations["v2.create_aws_account_ccm_config".to_sym] = true
end
api_instance = DatadogAPIClient::V2::AWSIntegrationAPI.new

body = DatadogAPIClient::V2::AWSCcmConfigRequest.new({
  data: DatadogAPIClient::V2::AWSCcmConfigRequestData.new({
    attributes: DatadogAPIClient::V2::AWSCcmConfigRequestAttributes.new({
      ccm_config: DatadogAPIClient::V2::AWSCcmConfig.new({
        data_export_configs: [
          DatadogAPIClient::V2::DataExportConfig.new({
            bucket_name: "billing",
            bucket_region: "us-east-1",
            report_name: "cost-and-usage-report",
            report_prefix: "reports",
            report_type: "CUR2.0",
          }),
        ],
      }),
    }),
    type: DatadogAPIClient::V2::AWSCcmConfigType::CCM_CONFIG,
  }),
})
p api_instance.create_aws_account_ccm_config("aws_account_config_id", body)

Instructions

First install the library and its dependencies and then save the example to example.rb and run following commands:

    
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" rb "example.rb"
// Create AWS CCM config returns "AWS CCM Config object" response

package main

import (
	"context"
	"encoding/json"
	"fmt"
	"os"

	"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
	"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
)

func main() {
	body := datadogV2.AWSCcmConfigRequest{
		Data: datadogV2.AWSCcmConfigRequestData{
			Attributes: datadogV2.AWSCcmConfigRequestAttributes{
				CcmConfig: datadogV2.AWSCcmConfig{
					DataExportConfigs: []datadogV2.DataExportConfig{
						{
							BucketName:   "billing",
							BucketRegion: "us-east-1",
							ReportName:   "cost-and-usage-report",
							ReportPrefix: "reports",
							ReportType:   "CUR2.0",
						},
					},
				},
			},
			Type: datadogV2.AWSCCMCONFIGTYPE_CCM_CONFIG,
		},
	}
	ctx := datadog.NewDefaultContext(context.Background())
	configuration := datadog.NewConfiguration()
	configuration.SetUnstableOperationEnabled("v2.CreateAWSAccountCCMConfig", true)
	apiClient := datadog.NewAPIClient(configuration)
	api := datadogV2.NewAWSIntegrationApi(apiClient)
	resp, r, err := api.CreateAWSAccountCCMConfig(ctx, "aws_account_config_id", body)

	if err != nil {
		fmt.Fprintf(os.Stderr, "Error when calling `AWSIntegrationApi.CreateAWSAccountCCMConfig`: %v\n", err)
		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
	}

	responseContent, _ := json.MarshalIndent(resp, "", "  ")
	fmt.Fprintf(os.Stdout, "Response from `AWSIntegrationApi.CreateAWSAccountCCMConfig`:\n%s\n", responseContent)
}

Instructions

First install the library and its dependencies and then save the example to main.go and run following commands:

    
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" go run "main.go"
// Create AWS CCM config returns "AWS CCM Config object" response

import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v2.api.AwsIntegrationApi;
import com.datadog.api.client.v2.model.AWSCcmConfig;
import com.datadog.api.client.v2.model.AWSCcmConfigRequest;
import com.datadog.api.client.v2.model.AWSCcmConfigRequestAttributes;
import com.datadog.api.client.v2.model.AWSCcmConfigRequestData;
import com.datadog.api.client.v2.model.AWSCcmConfigResponse;
import com.datadog.api.client.v2.model.AWSCcmConfigType;
import com.datadog.api.client.v2.model.DataExportConfig;
import java.util.Collections;

public class Example {
  public static void main(String[] args) {
    ApiClient defaultClient = ApiClient.getDefaultApiClient();
    defaultClient.setUnstableOperationEnabled("v2.createAWSAccountCCMConfig", true);
    AwsIntegrationApi apiInstance = new AwsIntegrationApi(defaultClient);

    AWSCcmConfigRequest body =
        new AWSCcmConfigRequest()
            .data(
                new AWSCcmConfigRequestData()
                    .attributes(
                        new AWSCcmConfigRequestAttributes()
                            .ccmConfig(
                                new AWSCcmConfig()
                                    .dataExportConfigs(
                                        Collections.singletonList(
                                            new DataExportConfig()
                                                .bucketName("billing")
                                                .bucketRegion("us-east-1")
                                                .reportName("cost-and-usage-report")
                                                .reportPrefix("reports")
                                                .reportType("CUR2.0")))))
                    .type(AWSCcmConfigType.CCM_CONFIG));

    try {
      AWSCcmConfigResponse result =
          apiInstance.createAWSAccountCCMConfig("aws_account_config_id", body);
      System.out.println(result);
    } catch (ApiException e) {
      System.err.println("Exception when calling AwsIntegrationApi#createAWSAccountCCMConfig");
      System.err.println("Status code: " + e.getCode());
      System.err.println("Reason: " + e.getResponseBody());
      System.err.println("Response headers: " + e.getResponseHeaders());
      e.printStackTrace();
    }
  }
}

Instructions

First install the library and its dependencies and then save the example to Example.java and run following commands:

    
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" java "Example.java"
// Create AWS CCM config returns "AWS CCM Config object" response
use datadog_api_client::datadog;
use datadog_api_client::datadogV2::api_aws_integration::AWSIntegrationAPI;
use datadog_api_client::datadogV2::model::AWSCcmConfig;
use datadog_api_client::datadogV2::model::AWSCcmConfigRequest;
use datadog_api_client::datadogV2::model::AWSCcmConfigRequestAttributes;
use datadog_api_client::datadogV2::model::AWSCcmConfigRequestData;
use datadog_api_client::datadogV2::model::AWSCcmConfigType;
use datadog_api_client::datadogV2::model::DataExportConfig;

#[tokio::main]
async fn main() {
    let body = AWSCcmConfigRequest::new(AWSCcmConfigRequestData::new(
        AWSCcmConfigRequestAttributes::new(AWSCcmConfig::new(vec![DataExportConfig::new(
            "billing".to_string(),
            "us-east-1".to_string(),
            "cost-and-usage-report".to_string(),
            "reports".to_string(),
            "CUR2.0".to_string(),
        )])),
        AWSCcmConfigType::CCM_CONFIG,
    ));
    let mut configuration = datadog::Configuration::new();
    configuration.set_unstable_operation_enabled("v2.CreateAWSAccountCCMConfig", true);
    let api = AWSIntegrationAPI::with_config(configuration);
    let resp = api
        .create_aws_account_ccm_config("aws_account_config_id".to_string(), body)
        .await;
    if let Ok(value) = resp {
        println!("{:#?}", value);
    } else {
        println!("{:#?}", resp.unwrap_err());
    }
}

Instructions

First install the library and its dependencies and then save the example to src/main.rs and run following commands:

    
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" cargo run
/**
 * Create AWS CCM config returns "AWS CCM Config object" response
 */

import { client, v2 } from "@datadog/datadog-api-client";

const configuration = client.createConfiguration();
configuration.unstableOperations["v2.createAWSAccountCCMConfig"] = true;
const apiInstance = new v2.AWSIntegrationApi(configuration);

const params: v2.AWSIntegrationApiCreateAWSAccountCCMConfigRequest = {
  body: {
    data: {
      attributes: {
        ccmConfig: {
          dataExportConfigs: [
            {
              bucketName: "billing",
              bucketRegion: "us-east-1",
              reportName: "cost-and-usage-report",
              reportPrefix: "reports",
              reportType: "CUR2.0",
            },
          ],
        },
      },
      type: "ccm_config",
    },
  },
  awsAccountConfigId: "aws_account_config_id",
};

apiInstance
  .createAWSAccountCCMConfig(params)
  .then((data: v2.AWSCcmConfigResponse) => {
    console.log(
      "API called successfully. Returned data: " + JSON.stringify(data)
    );
  })
  .catch((error: any) => console.error(error));

Instructions

First install the library and its dependencies and then save the example to example.ts and run following commands:

    
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" tsc "example.ts"