For AI agents: A markdown version of this page is available at https://docs.datadoghq.com/api/latest/aws-integration/validate-aws-ccm-config.md. A documentation index is available at /llms.txt.

Validate 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/validate_ccm_confighttps://api.ap2.datadoghq.com/api/v2/integration/aws/validate_ccm_confighttps://api.datadoghq.eu/api/v2/integration/aws/validate_ccm_confighttps://api.ddog-gov.com/api/v2/integration/aws/validate_ccm_confighttps://api.us2.ddog-gov.com/api/v2/integration/aws/validate_ccm_confighttps://api.uk1.datadoghq.com/api/v2/integration/aws/validate_ccm_confighttps://api.datadoghq.com/api/v2/integration/aws/validate_ccm_confighttps://api.us3.datadoghq.com/api/v2/integration/aws/validate_ccm_confighttps://api.us5.datadoghq.com/api/v2/integration/aws/validate_ccm_config

Overview

Validate a Cloud Cost Management config for an AWS account using Cost and Usage Report (CUR) 2.0 against Datadog’s ingest requirements without persisting it. This endpoint requires any of the following permissions:

  • cloud_cost_management_read
  • cloud_cost_management_write

  • Request

    Body Data (required)

    Validate a Cloud Cost Management config for an AWS account integration config.

    Expand All

    Field

    Type

    Description

    data [required]

    object

    AWS CCM config validation request data.

    attributes [required]

    object

    Attributes for an AWS CCM config validation request.

    account_id [required]

    string

    Your AWS Account ID without dashes.

    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

    string

    S3 prefix where the Cost and Usage Report is stored.

    type [required]

    enum

    AWS CCM config validation resource type. Allowed enum values: ccm_config_validation

    default: ccm_config_validation

    {
      "data": {
        "attributes": {
          "account_id": "123456789012",
          "bucket_name": "billing",
          "bucket_region": "us-east-1",
          "report_name": "cost-and-usage-report",
          "report_prefix": "reports"
        },
        "type": "ccm_config_validation"
      }
    }

    Response

    AWS CCM Config validation result

    AWS CCM config validation response body.

    Expand All

    Field

    Type

    Description

    data [required]

    object

    AWS CCM config validation response data.

    attributes [required]

    object

    Attributes for an AWS CCM config validation response.

    account_id [required]

    string

    Your AWS Account ID without dashes.

    issues [required]

    [object]

    List of validation issues found for the Cost and Usage Report (CUR) 2.0 configuration. Empty when the configuration is valid.

    code [required]

    enum

    Identifies the specific reason a Cost and Usage Report (CUR) 2.0 configuration failed validation. Allowed enum values: ISSUE_CODE_UNSPECIFIED,CREDENTIAL_ERROR,BUCKET_NAME_INVALID_GOVCLOUD,S3_LIST_PERMISSION_MISSING,S3_GET_PERMISSION_MISSING,S3_BUCKET_REGION_MISMATCH,S3_BUCKET_NOT_ACCESSIBLE,EXPORT_LIST_PERMISSION_MISSING,EXPORT_GET_PERMISSION_MISSING,EXPORT_NOT_FOUND

    Show 7 more,EXPORT_STATUS_UNHEALTHY,TIME_GRANULARITY_INVALID,FILE_FORMAT_INVALID,INCLUDE_RESOURCES_DISABLED,REFRESH_CADENCE_INVALID,OVERWRITE_MODE_INVALID,QUERY_STATEMENT_INVALID

    description [required]

    string

    Human-readable description of the validation issue.

    id [required]

    string

    AWS CCM config validation resource identifier.

    type [required]

    enum

    AWS CCM config validation resource type. Allowed enum values: ccm_config_validation

    default: ccm_config_validation

    {
      "data": {
        "attributes": {
          "account_id": "123456789012",
          "issues": [
            {
              "code": "EXPORT_NOT_FOUND",
              "description": "no CUR 2.0 export named \"cost-and-usage-report\" found"
            }
          ]
        },
        "id": "ccm_config_validation",
        "type": "ccm_config_validation"
      }
    }

    Bad Request

    API error response.

    Expand All

    Field

    Type

    Description

    errors [required]

    [object]

    A list of errors.

    detail

    string

    A human-readable explanation specific to this occurrence of the error.

    meta

    object

    Non-standard meta-information about the error

    source

    object

    References to the source of the error.

    header

    string

    A string indicating the name of a single request header which caused the error.

    parameter

    string

    A string indicating which URI query parameter caused the error.

    pointer

    string

    A JSON pointer to the value in the request document that caused the error.

    status

    string

    Status code of the response.

    title

    string

    Short human-readable summary of the error.

    {
      "errors": [
        {
          "detail": "Missing required attribute in body",
          "meta": {},
          "source": {
            "header": "Authorization",
            "parameter": "limit",
            "pointer": "/data/attributes/title"
          },
          "status": "400",
          "title": "Bad Request"
        }
      ]
    }

    Forbidden

    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"
      ]
    }

    Service Unavailable

    API error response.

    Expand All

    Field

    Type

    Description

    errors [required]

    [object]

    A list of errors.

    detail

    string

    A human-readable explanation specific to this occurrence of the error.

    meta

    object

    Non-standard meta-information about the error

    source

    object

    References to the source of the error.

    header

    string

    A string indicating the name of a single request header which caused the error.

    parameter

    string

    A string indicating which URI query parameter caused the error.

    pointer

    string

    A JSON pointer to the value in the request document that caused the error.

    status

    string

    Status code of the response.

    title

    string

    Short human-readable summary of the error.

    {
      "errors": [
        {
          "detail": "Missing required attribute in body",
          "meta": {},
          "source": {
            "header": "Authorization",
            "parameter": "limit",
            "pointer": "/data/attributes/title"
          },
          "status": "400",
          "title": "Bad Request"
        }
      ]
    }

    Code Example

                      ## default
    # 
    
    # 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.uk1.datadoghq.com"https://api.datadoghq.com"https://api.us3.datadoghq.com"https://api.us5.datadoghq.com/api/v2/integration/aws/validate_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": { "account_id": "123456789012", "bucket_name": "billing", "bucket_region": "us-east-1", "report_name": "cost-and-usage-report", "report_prefix": "reports" }, "type": "ccm_config_validation" } } EOF
    """
    Validate AWS CCM config returns "AWS CCM Config validation result" 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_validation_request import AWSCcmConfigValidationRequest
    from datadog_api_client.v2.model.aws_ccm_config_validation_request_attributes import (
        AWSCcmConfigValidationRequestAttributes,
    )
    from datadog_api_client.v2.model.aws_ccm_config_validation_request_data import AWSCcmConfigValidationRequestData
    from datadog_api_client.v2.model.aws_ccm_config_validation_type import AWSCcmConfigValidationType
    
    body = AWSCcmConfigValidationRequest(
        data=AWSCcmConfigValidationRequestData(
            attributes=AWSCcmConfigValidationRequestAttributes(
                account_id="123456789012",
                bucket_name="billing",
                bucket_region="us-east-1",
                report_name="cost-and-usage-report",
                report_prefix="reports",
            ),
            type=AWSCcmConfigValidationType.CCM_CONFIG_VALIDATION,
        ),
    )
    
    configuration = Configuration()
    configuration.unstable_operations["validate_awsccm_config"] = True
    with ApiClient(configuration) as api_client:
        api_instance = AWSIntegrationApi(api_client)
        response = api_instance.validate_awsccm_config(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.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" python3 "example.py"
    # Validate AWS CCM config returns "AWS CCM Config validation result" response
    
    require "datadog_api_client"
    DatadogAPIClient.configure do |config|
      config.unstable_operations["v2.validate_awsccm_config".to_sym] = true
    end
    api_instance = DatadogAPIClient::V2::AWSIntegrationAPI.new
    
    body = DatadogAPIClient::V2::AWSCcmConfigValidationRequest.new({
      data: DatadogAPIClient::V2::AWSCcmConfigValidationRequestData.new({
        attributes: DatadogAPIClient::V2::AWSCcmConfigValidationRequestAttributes.new({
          account_id: "123456789012",
          bucket_name: "billing",
          bucket_region: "us-east-1",
          report_name: "cost-and-usage-report",
          report_prefix: "reports",
        }),
        type: DatadogAPIClient::V2::AWSCcmConfigValidationType::CCM_CONFIG_VALIDATION,
      }),
    })
    p api_instance.validate_awsccm_config(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.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" rb "example.rb"
    // Validate AWS CCM config returns "AWS CCM Config validation result" 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.AWSCcmConfigValidationRequest{
    		Data: datadogV2.AWSCcmConfigValidationRequestData{
    			Attributes: datadogV2.AWSCcmConfigValidationRequestAttributes{
    				AccountId:    "123456789012",
    				BucketName:   "billing",
    				BucketRegion: "us-east-1",
    				ReportName:   "cost-and-usage-report",
    				ReportPrefix: datadog.PtrString("reports"),
    			},
    			Type: datadogV2.AWSCCMCONFIGVALIDATIONTYPE_CCM_CONFIG_VALIDATION,
    		},
    	}
    	ctx := datadog.NewDefaultContext(context.Background())
    	configuration := datadog.NewConfiguration()
    	configuration.SetUnstableOperationEnabled("v2.ValidateAWSCCMConfig", true)
    	apiClient := datadog.NewAPIClient(configuration)
    	api := datadogV2.NewAWSIntegrationApi(apiClient)
    	resp, r, err := api.ValidateAWSCCMConfig(ctx, body)
    
    	if err != nil {
    		fmt.Fprintf(os.Stderr, "Error when calling `AWSIntegrationApi.ValidateAWSCCMConfig`: %v\n", err)
    		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
    	}
    
    	responseContent, _ := json.MarshalIndent(resp, "", "  ")
    	fmt.Fprintf(os.Stdout, "Response from `AWSIntegrationApi.ValidateAWSCCMConfig`:\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.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" go run "main.go"
    // Validate AWS CCM config returns "AWS CCM Config validation result" 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.AWSCcmConfigValidationRequest;
    import com.datadog.api.client.v2.model.AWSCcmConfigValidationRequestAttributes;
    import com.datadog.api.client.v2.model.AWSCcmConfigValidationRequestData;
    import com.datadog.api.client.v2.model.AWSCcmConfigValidationResponse;
    import com.datadog.api.client.v2.model.AWSCcmConfigValidationType;
    
    public class Example {
      public static void main(String[] args) {
        ApiClient defaultClient = ApiClient.getDefaultApiClient();
        defaultClient.setUnstableOperationEnabled("v2.validateAWSCCMConfig", true);
        AwsIntegrationApi apiInstance = new AwsIntegrationApi(defaultClient);
    
        AWSCcmConfigValidationRequest body =
            new AWSCcmConfigValidationRequest()
                .data(
                    new AWSCcmConfigValidationRequestData()
                        .attributes(
                            new AWSCcmConfigValidationRequestAttributes()
                                .accountId("123456789012")
                                .bucketName("billing")
                                .bucketRegion("us-east-1")
                                .reportName("cost-and-usage-report")
                                .reportPrefix("reports"))
                        .type(AWSCcmConfigValidationType.CCM_CONFIG_VALIDATION));
    
        try {
          AWSCcmConfigValidationResponse result = apiInstance.validateAWSCCMConfig(body);
          System.out.println(result);
        } catch (ApiException e) {
          System.err.println("Exception when calling AwsIntegrationApi#validateAWSCCMConfig");
          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.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" java "Example.java"
    // Validate AWS CCM config returns "AWS CCM Config validation result" response
    use datadog_api_client::datadog;
    use datadog_api_client::datadogV2::api_aws_integration::AWSIntegrationAPI;
    use datadog_api_client::datadogV2::model::AWSCcmConfigValidationRequest;
    use datadog_api_client::datadogV2::model::AWSCcmConfigValidationRequestAttributes;
    use datadog_api_client::datadogV2::model::AWSCcmConfigValidationRequestData;
    use datadog_api_client::datadogV2::model::AWSCcmConfigValidationType;
    
    #[tokio::main]
    async fn main() {
        let body = AWSCcmConfigValidationRequest::new(AWSCcmConfigValidationRequestData::new(
            AWSCcmConfigValidationRequestAttributes::new(
                "123456789012".to_string(),
                "billing".to_string(),
                "us-east-1".to_string(),
                "cost-and-usage-report".to_string(),
            )
            .report_prefix("reports".to_string()),
            AWSCcmConfigValidationType::CCM_CONFIG_VALIDATION,
        ));
        let mut configuration = datadog::Configuration::new();
        configuration.set_unstable_operation_enabled("v2.ValidateAWSCCMConfig", true);
        let api = AWSIntegrationAPI::with_config(configuration);
        let resp = api.validate_awsccm_config(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.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" cargo run
    /**
     * Validate AWS CCM config returns "AWS CCM Config validation result" response
     */
    
    import { client, v2 } from "@datadog/datadog-api-client";
    
    const configuration = client.createConfiguration();
    configuration.unstableOperations["v2.validateAWSCCMConfig"] = true;
    const apiInstance = new v2.AWSIntegrationApi(configuration);
    
    const params: v2.AWSIntegrationApiValidateAWSCCMConfigRequest = {
      body: {
        data: {
          attributes: {
            accountId: "123456789012",
            bucketName: "billing",
            bucketRegion: "us-east-1",
            reportName: "cost-and-usage-report",
            reportPrefix: "reports",
          },
          type: "ccm_config_validation",
        },
      },
    };
    
    apiInstance
      .validateAWSCCMConfig(params)
      .then((data: v2.AWSCcmConfigValidationResponse) => {
        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.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" tsc "example.ts"