---
title: Update AWS CCM config
description: Datadog, the leading service for cloud-scale monitoring.
breadcrumbs: Docs > API Reference > AWS Integration
---

> For the complete documentation index, see [llms.txt](https://docs.datadoghq.com/llms.txt).

# Update AWS CCM config{% #update-aws-ccm-config %}

{% tab title="v2" %}
**Note**: This endpoint is in preview and may be subject to change. If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
| Datadog site      | API endpoint                                                                                           |
| ----------------- | ------------------------------------------------------------------------------------------------------ |
| ap1.datadoghq.com | PATCH https://api.ap1.datadoghq.com/api/v2/integration/aws/accounts/{aws_account_config_id}/ccm_config |
| ap2.datadoghq.com | PATCH https://api.ap2.datadoghq.com/api/v2/integration/aws/accounts/{aws_account_config_id}/ccm_config |
| app.datadoghq.eu  | PATCH https://api.datadoghq.eu/api/v2/integration/aws/accounts/{aws_account_config_id}/ccm_config      |
| app.ddog-gov.com  | PATCH https://api.ddog-gov.com/api/v2/integration/aws/accounts/{aws_account_config_id}/ccm_config      |
| us2.ddog-gov.com  | PATCH https://api.us2.ddog-gov.com/api/v2/integration/aws/accounts/{aws_account_config_id}/ccm_config  |
| uk1.datadoghq.com | PATCH https://api.uk1.datadoghq.com/api/v2/integration/aws/accounts/{aws_account_config_id}/ccm_config |
| app.datadoghq.com | PATCH https://api.datadoghq.com/api/v2/integration/aws/accounts/{aws_account_config_id}/ccm_config     |
| us3.datadoghq.com | PATCH https://api.us3.datadoghq.com/api/v2/integration/aws/accounts/{aws_account_config_id}/ccm_config |
| us5.datadoghq.com | PATCH https://api.us5.datadoghq.com/api/v2/integration/aws/accounts/{aws_account_config_id}/ccm_config |

### Overview

Update 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 all of the following permissions:
`aws_configuration_edit``cloud_cost_management_write` 


### 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](https://docs.datadoghq.com/api/latest/aws-integration.md#list-all-aws-integrations) endpoint and query by AWS Account ID. |

### Request

#### Body Data (required)

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

{% tab title="Model" %}

| Parent field        | Field                                 | Type     | Description                                                              |
| ------------------- | ------------------------------------- | -------- | ------------------------------------------------------------------------ |
|                     | data [*required*]                | object   | AWS CCM Config Create/Update Request data.                               |
| data                | attributes [*required*]          | object   | AWS CCM Config attributes for Create/Update requests.                    |
| attributes          | ccm_config [*required*]          | object   | AWS Cloud Cost Management config.                                        |
| ccm_config          | data_export_configs [*required*] | [object] | List of data export configurations for Cost and Usage Reports.           |
| data_export_configs | bucket_name [*required*]         | string   | Name of the S3 bucket where the Cost and Usage Report is stored.         |
| data_export_configs | bucket_region [*required*]       | string   | AWS region of the S3 bucket.                                             |
| data_export_configs | report_name [*required*]         | string   | Name of the Cost and Usage Report.                                       |
| data_export_configs | report_prefix [*required*]       | string   | S3 prefix where the Cost and Usage Report is stored.                     |
| data_export_configs | report_type [*required*]         | string   | Type of the Cost and Usage Report. Currently only `CUR2.0` is supported. |
| data                | type [*required*]                | enum     | AWS CCM Config resource type. Allowed enum values: `ccm_config`          |

{% /tab %}

{% tab title="Example" %}

```json
{
  "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"
  }
}
```

{% /tab %}

### Response

{% tab title="200" %}
AWS CCM Config object
{% tab title="Model" %}
AWS CCM Config response body.

| Parent field        | Field                           | Type     | Description                                                                                                                                                                                                                                                 |
| ------------------- | ------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|                     | data [*required*]          | object   | AWS CCM Config response data.                                                                                                                                                                                                                               |
| data                | attributes                      | object   | AWS CCM Config response attributes.                                                                                                                                                                                                                         |
| attributes          | data_export_configs             | [object] | List of data export configurations for Cost and Usage Reports.                                                                                                                                                                                              |
| data_export_configs | bucket_name [*required*]   | string   | Name of the S3 bucket where the Cost and Usage Report is stored.                                                                                                                                                                                            |
| data_export_configs | bucket_region [*required*] | string   | AWS region of the S3 bucket.                                                                                                                                                                                                                                |
| data_export_configs | report_name [*required*]   | string   | Name of the Cost and Usage Report.                                                                                                                                                                                                                          |
| data_export_configs | report_prefix [*required*] | string   | S3 prefix where the Cost and Usage Report is stored.                                                                                                                                                                                                        |
| data_export_configs | report_type [*required*]   | string   | Type of the Cost and Usage Report. Currently only `CUR2.0` is supported.                                                                                                                                                                                    |
| data                | 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](https://docs.datadoghq.com/api/latest/aws-integration.md#list-all-aws-integrations) endpoint and query by AWS Account ID. |
| data                | type [*required*]          | enum     | AWS CCM Config resource type. Allowed enum values: `ccm_config`                                                                                                                                                                                             |

{% /tab %}

{% tab title="Example" %}

```json
{
  "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"
  }
}
```

{% /tab %}

{% /tab %}

{% tab title="403" %}
Forbidden
{% tab title="Model" %}
API error response.

| Field                    | Type     | Description       |
| ------------------------ | -------- | ----------------- |
| errors [*required*] | [string] | A list of errors. |

{% /tab %}

{% tab title="Example" %}

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

{% /tab %}

{% /tab %}

{% tab title="404" %}
Not Found
{% tab title="Model" %}
API error response.

| Field                    | Type     | Description       |
| ------------------------ | -------- | ----------------- |
| errors [*required*] | [string] | A list of errors. |

{% /tab %}

{% tab title="Example" %}

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

{% /tab %}

{% /tab %}

{% tab title="429" %}
Too many requests
{% tab title="Model" %}
API error response.

| Field                    | Type     | Description       |
| ------------------------ | -------- | ----------------- |
| errors [*required*] | [string] | A list of errors. |

{% /tab %}

{% tab title="Example" %}

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

{% /tab %}

{% /tab %}

### Code Example

##### 
                  \## default
# 
 \# Path parameters export aws_account_config_id="CHANGE_ME" \# Use a Personal Access Token or Service Access Token export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"  \# Curl command curl -X PATCH "https://api.datadoghq.com/api/v2/integration/aws/accounts/${aws_account_config_id}/ccm_config" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-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 

                
##### 

```python
"""
Update AWS CCM config returns "AWS CCM Config object" response
"""

from os import environ
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.access_token = environ["DD_BEARER_TOKEN"]
configuration.unstable_operations["update_aws_account_ccm_config"] = True
with ApiClient(configuration) as api_client:
    api_instance = AWSIntegrationApi(api_client)
    response = api_instance.update_aws_account_ccm_config(aws_account_config_id="aws_account_config_id", body=body)

    print(response)
```

#### Instructions

First [install the library and its dependencies](https://docs.datadoghq.com/api/latest.md?code-lang=python) and then save the example to `example.py` and run following commands:
    DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"
##### 

```ruby
# Update AWS CCM config returns "AWS CCM Config object" response

require "datadog_api_client"
DatadogAPIClient.configure do |config|
  config.access_token = ENV["DD_BEARER_TOKEN"]
  config.unstable_operations["v2.update_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.update_aws_account_ccm_config("aws_account_config_id", body)
```

#### Instructions

First [install the library and its dependencies](https://docs.datadoghq.com/api/latest.md?code-lang=ruby) and then save the example to `example.rb` and run following commands:
    DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"
##### 

```go
// Update 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())
	ctx = context.WithValue(ctx, datadog.ContextAccessToken, os.Getenv("DD_BEARER_TOKEN"))
	configuration := datadog.NewConfiguration()
	configuration.SetUnstableOperationEnabled("v2.UpdateAWSAccountCCMConfig", true)
	apiClient := datadog.NewAPIClient(configuration)
	api := datadogV2.NewAWSIntegrationApi(apiClient)
	resp, r, err := api.UpdateAWSAccountCCMConfig(ctx, "aws_account_config_id", body)

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

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

#### Instructions

First [install the library and its dependencies](https://docs.datadoghq.com/api/latest.md?code-lang=go) and then save the example to `main.go` and run following commands:
    DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"
##### 

```java
// Update 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.setAccessToken(System.getenv("DD_BEARER_TOKEN"));
    defaultClient.setUnstableOperationEnabled("v2.updateAWSAccountCCMConfig", 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.updateAWSAccountCCMConfig("aws_account_config_id", body);
      System.out.println(result);
    } catch (ApiException e) {
      System.err.println("Exception when calling AwsIntegrationApi#updateAWSAccountCCMConfig");
      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](https://docs.datadoghq.com/api/latest.md?code-lang=java) and then save the example to `Example.java` and run following commands:
    DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"
##### 

```rust
// Update 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.update_aws_account_ccm_config", true);
    let api = AWSIntegrationAPI::with_config(configuration);
    let resp = api
        .update_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](https://docs.datadoghq.com/api/latest.md?code-lang=rust) and then save the example to `src/main.rs` and run following commands:
    DD_SITE="datadoghq.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" cargo run
##### 

```typescript
/**
 * Update AWS CCM config returns "AWS CCM Config object" response
 */

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

const configuration = client.createConfiguration({
  authMethods: {
    AuthZ: {
      accessToken: process.env.DD_BEARER_TOKEN as string,
    },
  },
});
configuration.unstableOperations["v2.updateAWSAccountCCMConfig"] = true;
const apiInstance = new v2.AWSIntegrationApi(configuration);

const params: v2.AWSIntegrationApiUpdateAWSAccountCCMConfigRequest = {
  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
  .updateAWSAccountCCMConfig(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](https://docs.datadoghq.com/api/latest.md?code-lang=typescript) and then save the example to `example.ts` and run following commands:
    DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"
{% /tab %}
