SDK for PHP 3.x

Client: Aws\BCMDashboards\BCMDashboardsClient
Service ID: bcm-dashboards
Version: 2025-08-18

This page describes the parameters and results for the operations of the AWS Billing and Cost Management Dashboards (2025-08-18), and shows how to use the Aws\BCMDashboards\BCMDashboardsClient object to call the described operations. This documentation is specific to the 2025-08-18 API version of the service.

Operation Summary

Each of the following operations can be created from a client using $client->getCommand('CommandName'), where "CommandName" is the name of one of the following operations. Note: a command is a value that encapsulates an operation and the parameters used to create an HTTP request.

You can also create and send a command immediately using the magic methods available on a client object: $client->commandName(/* parameters */). You can send the command asynchronously (returning a promise) by appending the word "Async" to the operation name: $client->commandNameAsync(/* parameters */).

CreateDashboard ( array $params = [] )
Creates a new dashboard that can contain multiple widgets displaying cost and usage data.
DeleteDashboard ( array $params = [] )
Deletes a specified dashboard.
GetDashboard ( array $params = [] )
Retrieves the configuration and metadata of a specified dashboard, including its widgets and layout settings.
GetResourcePolicy ( array $params = [] )
Retrieves the resource-based policy attached to a dashboard, showing sharing configurations and permissions.
ListDashboards ( array $params = [] )
Returns a list of all dashboards in your account.
ListTagsForResource ( array $params = [] )
Returns a list of all tags associated with a specified dashboard resource.
TagResource ( array $params = [] )
Adds or updates tags for a specified dashboard resource.
UntagResource ( array $params = [] )
Removes specified tags from a dashboard resource.
UpdateDashboard ( array $params = [] )
Updates an existing dashboard's properties, including its name, description, and widget configurations.

Paginators

Paginators handle automatically iterating over paginated API results. Paginators are associated with specific API operations, and they accept the parameters that the corresponding API operation accepts. You can get a paginator from a client class using getPaginator($paginatorName, $operationParameters). This client supports the following paginators:

ListDashboards

Operations

CreateDashboard

$result = $client->createDashboard([/* ... */]);
$promise = $client->createDashboardAsync([/* ... */]);

Creates a new dashboard that can contain multiple widgets displaying cost and usage data. You can add custom widgets or use predefined widgets, arranging them in your preferred layout.

Parameter Syntax

$result = $client->createDashboard([
    'description' => '<string>',
    'name' => '<string>', // REQUIRED
    'resourceTags' => [
        [
            'key' => '<string>', // REQUIRED
            'value' => '<string>', // REQUIRED
        ],
        // ...
    ],
    'widgets' => [ // REQUIRED
        [
            'configs' => [ // REQUIRED
                [
                    'displayConfig' => [ // REQUIRED
                        'graph' => [
                            '<GenericString>' => [
                                'visualType' => 'LINE|BAR|STACK', // REQUIRED
                            ],
                            // ...
                        ],
                        'table' => [
                        ],
                    ],
                    'queryParameters' => [ // REQUIRED
                        'costAndUsage' => [
                            'filter' => [
                                'and' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'costCategories' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                                'dimensions' => [
                                    'key' => 'AZ|INSTANCE_TYPE|LINKED_ACCOUNT|OPERATION|PURCHASE_TYPE|REGION|SERVICE|USAGE_TYPE|USAGE_TYPE_GROUP|RECORD_TYPE|RESOURCE_ID|SUBSCRIPTION_ID|TAG_KEY|OPERATING_SYSTEM|TENANCY|BILLING_ENTITY|RESERVATION_ID|COST_CATEGORY_NAME|DATABASE_ENGINE|LEGAL_ENTITY_NAME|SAVINGS_PLANS_TYPE|INSTANCE_TYPE_FAMILY|CACHE_ENGINE|DEPLOYMENT_OPTION|SCOPE|PLATFORM', // REQUIRED
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...], // REQUIRED
                                ],
                                'not' => [...], // RECURSIVE
                                'or' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'tags' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                            ],
                            'granularity' => 'HOURLY|DAILY|MONTHLY', // REQUIRED
                            'groupBy' => [
                                [
                                    'key' => '<string>', // REQUIRED
                                    'type' => 'DIMENSION|TAG|COST_CATEGORY',
                                ],
                                // ...
                            ],
                            'metrics' => ['<string>', ...], // REQUIRED
                            'timeRange' => [ // REQUIRED
                                'endTime' => [ // REQUIRED
                                    'type' => 'ABSOLUTE|RELATIVE', // REQUIRED
                                    'value' => '<string>', // REQUIRED
                                ],
                                'startTime' => [ // REQUIRED
                                    'type' => 'ABSOLUTE|RELATIVE', // REQUIRED
                                    'value' => '<string>', // REQUIRED
                                ],
                            ],
                        ],
                        'reservationCoverage' => [
                            'filter' => [
                                'and' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'costCategories' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                                'dimensions' => [
                                    'key' => 'AZ|INSTANCE_TYPE|LINKED_ACCOUNT|OPERATION|PURCHASE_TYPE|REGION|SERVICE|USAGE_TYPE|USAGE_TYPE_GROUP|RECORD_TYPE|RESOURCE_ID|SUBSCRIPTION_ID|TAG_KEY|OPERATING_SYSTEM|TENANCY|BILLING_ENTITY|RESERVATION_ID|COST_CATEGORY_NAME|DATABASE_ENGINE|LEGAL_ENTITY_NAME|SAVINGS_PLANS_TYPE|INSTANCE_TYPE_FAMILY|CACHE_ENGINE|DEPLOYMENT_OPTION|SCOPE|PLATFORM', // REQUIRED
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...], // REQUIRED
                                ],
                                'not' => [...], // RECURSIVE
                                'or' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'tags' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                            ],
                            'granularity' => 'HOURLY|DAILY|MONTHLY',
                            'groupBy' => [
                                [
                                    'key' => '<string>', // REQUIRED
                                    'type' => 'DIMENSION|TAG|COST_CATEGORY',
                                ],
                                // ...
                            ],
                            'metrics' => ['<string>', ...],
                            'timeRange' => [ // REQUIRED
                                'endTime' => [ // REQUIRED
                                    'type' => 'ABSOLUTE|RELATIVE', // REQUIRED
                                    'value' => '<string>', // REQUIRED
                                ],
                                'startTime' => [ // REQUIRED
                                    'type' => 'ABSOLUTE|RELATIVE', // REQUIRED
                                    'value' => '<string>', // REQUIRED
                                ],
                            ],
                        ],
                        'reservationUtilization' => [
                            'filter' => [
                                'and' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'costCategories' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                                'dimensions' => [
                                    'key' => 'AZ|INSTANCE_TYPE|LINKED_ACCOUNT|OPERATION|PURCHASE_TYPE|REGION|SERVICE|USAGE_TYPE|USAGE_TYPE_GROUP|RECORD_TYPE|RESOURCE_ID|SUBSCRIPTION_ID|TAG_KEY|OPERATING_SYSTEM|TENANCY|BILLING_ENTITY|RESERVATION_ID|COST_CATEGORY_NAME|DATABASE_ENGINE|LEGAL_ENTITY_NAME|SAVINGS_PLANS_TYPE|INSTANCE_TYPE_FAMILY|CACHE_ENGINE|DEPLOYMENT_OPTION|SCOPE|PLATFORM', // REQUIRED
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...], // REQUIRED
                                ],
                                'not' => [...], // RECURSIVE
                                'or' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'tags' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                            ],
                            'granularity' => 'HOURLY|DAILY|MONTHLY',
                            'groupBy' => [
                                [
                                    'key' => '<string>', // REQUIRED
                                    'type' => 'DIMENSION|TAG|COST_CATEGORY',
                                ],
                                // ...
                            ],
                            'timeRange' => [ // REQUIRED
                                'endTime' => [ // REQUIRED
                                    'type' => 'ABSOLUTE|RELATIVE', // REQUIRED
                                    'value' => '<string>', // REQUIRED
                                ],
                                'startTime' => [ // REQUIRED
                                    'type' => 'ABSOLUTE|RELATIVE', // REQUIRED
                                    'value' => '<string>', // REQUIRED
                                ],
                            ],
                        ],
                        'savingsPlansCoverage' => [
                            'filter' => [
                                'and' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'costCategories' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                                'dimensions' => [
                                    'key' => 'AZ|INSTANCE_TYPE|LINKED_ACCOUNT|OPERATION|PURCHASE_TYPE|REGION|SERVICE|USAGE_TYPE|USAGE_TYPE_GROUP|RECORD_TYPE|RESOURCE_ID|SUBSCRIPTION_ID|TAG_KEY|OPERATING_SYSTEM|TENANCY|BILLING_ENTITY|RESERVATION_ID|COST_CATEGORY_NAME|DATABASE_ENGINE|LEGAL_ENTITY_NAME|SAVINGS_PLANS_TYPE|INSTANCE_TYPE_FAMILY|CACHE_ENGINE|DEPLOYMENT_OPTION|SCOPE|PLATFORM', // REQUIRED
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...], // REQUIRED
                                ],
                                'not' => [...], // RECURSIVE
                                'or' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'tags' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                            ],
                            'granularity' => 'HOURLY|DAILY|MONTHLY',
                            'groupBy' => [
                                [
                                    'key' => '<string>', // REQUIRED
                                    'type' => 'DIMENSION|TAG|COST_CATEGORY',
                                ],
                                // ...
                            ],
                            'metrics' => ['<string>', ...],
                            'timeRange' => [ // REQUIRED
                                'endTime' => [ // REQUIRED
                                    'type' => 'ABSOLUTE|RELATIVE', // REQUIRED
                                    'value' => '<string>', // REQUIRED
                                ],
                                'startTime' => [ // REQUIRED
                                    'type' => 'ABSOLUTE|RELATIVE', // REQUIRED
                                    'value' => '<string>', // REQUIRED
                                ],
                            ],
                        ],
                        'savingsPlansUtilization' => [
                            'filter' => [
                                'and' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'costCategories' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                                'dimensions' => [
                                    'key' => 'AZ|INSTANCE_TYPE|LINKED_ACCOUNT|OPERATION|PURCHASE_TYPE|REGION|SERVICE|USAGE_TYPE|USAGE_TYPE_GROUP|RECORD_TYPE|RESOURCE_ID|SUBSCRIPTION_ID|TAG_KEY|OPERATING_SYSTEM|TENANCY|BILLING_ENTITY|RESERVATION_ID|COST_CATEGORY_NAME|DATABASE_ENGINE|LEGAL_ENTITY_NAME|SAVINGS_PLANS_TYPE|INSTANCE_TYPE_FAMILY|CACHE_ENGINE|DEPLOYMENT_OPTION|SCOPE|PLATFORM', // REQUIRED
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...], // REQUIRED
                                ],
                                'not' => [...], // RECURSIVE
                                'or' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'tags' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                            ],
                            'granularity' => 'HOURLY|DAILY|MONTHLY',
                            'timeRange' => [ // REQUIRED
                                'endTime' => [ // REQUIRED
                                    'type' => 'ABSOLUTE|RELATIVE', // REQUIRED
                                    'value' => '<string>', // REQUIRED
                                ],
                                'startTime' => [ // REQUIRED
                                    'type' => 'ABSOLUTE|RELATIVE', // REQUIRED
                                    'value' => '<string>', // REQUIRED
                                ],
                            ],
                        ],
                    ],
                ],
                // ...
            ],
            'description' => '<string>',
            'height' => <integer>,
            'horizontalOffset' => <integer>,
            'title' => '<string>', // REQUIRED
            'width' => <integer>,
        ],
        // ...
    ],
]);

Parameter Details

Members
description
Type: string

A description of the dashboard's purpose or contents.

name
Required: Yes
Type: string

The name of the dashboard. The name must be unique within your account.

resourceTags
Type: Array of ResourceTag structures

The tags to apply to the dashboard resource for organization and management.

widgets
Required: Yes
Type: Array of Widget structures

An array of widget configurations that define the visualizations to be displayed in the dashboard. Each dashboard can contain up to 20 widgets.

Result Syntax

[
    'arn' => '<string>',
]

Result Details

Members
arn
Required: Yes
Type: string

The ARN of the newly created dashboard.

Errors

ThrottlingException:

The request was denied due to request throttling. Reduce the frequency of requests and use exponential backoff.

AccessDeniedException:

You do not have sufficient permissions to perform this action. Verify your IAM permissions and any resource policies.

InternalServerException:

An internal error occurred while processing the request. Retry your request. If the problem persists, contact Amazon Web Services Support.

ValidationException:

The input parameters do not satisfy the requirements. Check the error message for specific validation details.

ServiceQuotaExceededException:

The request would exceed service quotas. For example, attempting to create more than 20 widgets in a dashboard or exceeding the maximum number of dashboards per account.

Examples

Example 1: Creating a dashboard
$result = $client->createDashboard([
    'name' => 'cost-dashboards',
    'description' => 'Dashboard for tracking costs',
    'widgets' => [
        [
            'configs' => [
                [
                    'displayConfig' => [
                        'graph' => [
                            'costTrend' => [
                                'visualType' => 'LINE',
                            ],
                        ],
                    ],
                    'queryParameters' => [
                        'costAndUsage' => [
                            'granularity' => 'MONTHLY',
                            'groupBy' => [
                                [
                                    'type' => 'DIMENSION',
                                    'key' => 'SERVICE',
                                ],
                            ],
                            'metrics' => [
                                'UnblendedCost',
                            ],
                            'timeRange' => [
                                'endTime' => [
                                    'type' => 'RELATIVE',
                                    'value' => 'now',
                                ],
                                'startTime' => [
                                    'type' => 'RELATIVE',
                                    'value' => '-9M',
                                ],
                            ],
                        ],
                    ],
                ],
            ],
            'height' => 7,
            'horizontalOffset' => 0,
            'title' => 'Monthly Cost Trend',
            'width' => 4,
        ],
    ],
]);

DeleteDashboard

$result = $client->deleteDashboard([/* ... */]);
$promise = $client->deleteDashboardAsync([/* ... */]);

Deletes a specified dashboard. This action cannot be undone.

Parameter Syntax

$result = $client->deleteDashboard([
    'arn' => '<string>', // REQUIRED
]);

Parameter Details

Members
arn
Required: Yes
Type: string

The ARN of the dashboard to be deleted.

Result Syntax

[
    'arn' => '<string>',
]

Result Details

Members
arn
Required: Yes
Type: string

The ARN of the dashboard that was deleted.

Errors

ThrottlingException:

The request was denied due to request throttling. Reduce the frequency of requests and use exponential backoff.

AccessDeniedException:

You do not have sufficient permissions to perform this action. Verify your IAM permissions and any resource policies.

InternalServerException:

An internal error occurred while processing the request. Retry your request. If the problem persists, contact Amazon Web Services Support.

ValidationException:

The input parameters do not satisfy the requirements. Check the error message for specific validation details.

Examples

Example 1: Deleting a dashboard
$result = $client->deleteDashboard([
    'arn' => 'arn:aws:bcm-dashboards::123456789012:dashboard/abcd1234-ab12-12ab-1ab2-abcd1234efgh',
]);

Result syntax:

[
    'arn' => 'arn:aws:bcm-dashboards::123456789012:dashboard/abcd1234-ab12-12ab-1ab2-abcd1234efgh',
]

GetDashboard

$result = $client->getDashboard([/* ... */]);
$promise = $client->getDashboardAsync([/* ... */]);

Retrieves the configuration and metadata of a specified dashboard, including its widgets and layout settings.

Parameter Syntax

$result = $client->getDashboard([
    'arn' => '<string>', // REQUIRED
]);

Parameter Details

Members
arn
Required: Yes
Type: string

The ARN of the dashboard to retrieve. This is required to uniquely identify the dashboard.

Result Syntax

[
    'arn' => '<string>',
    'createdAt' => <DateTime>,
    'description' => '<string>',
    'name' => '<string>',
    'type' => 'CUSTOM',
    'updatedAt' => <DateTime>,
    'widgets' => [
        [
            'configs' => [
                [
                    'displayConfig' => [
                        'graph' => [
                            '<GenericString>' => [
                                'visualType' => 'LINE|BAR|STACK',
                            ],
                            // ...
                        ],
                        'table' => [
                        ],
                    ],
                    'queryParameters' => [
                        'costAndUsage' => [
                            'filter' => [
                                'and' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'costCategories' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                                'dimensions' => [
                                    'key' => 'AZ|INSTANCE_TYPE|LINKED_ACCOUNT|OPERATION|PURCHASE_TYPE|REGION|SERVICE|USAGE_TYPE|USAGE_TYPE_GROUP|RECORD_TYPE|RESOURCE_ID|SUBSCRIPTION_ID|TAG_KEY|OPERATING_SYSTEM|TENANCY|BILLING_ENTITY|RESERVATION_ID|COST_CATEGORY_NAME|DATABASE_ENGINE|LEGAL_ENTITY_NAME|SAVINGS_PLANS_TYPE|INSTANCE_TYPE_FAMILY|CACHE_ENGINE|DEPLOYMENT_OPTION|SCOPE|PLATFORM',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                                'not' => [...], // RECURSIVE
                                'or' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'tags' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                            ],
                            'granularity' => 'HOURLY|DAILY|MONTHLY',
                            'groupBy' => [
                                [
                                    'key' => '<string>',
                                    'type' => 'DIMENSION|TAG|COST_CATEGORY',
                                ],
                                // ...
                            ],
                            'metrics' => ['<string>', ...],
                            'timeRange' => [
                                'endTime' => [
                                    'type' => 'ABSOLUTE|RELATIVE',
                                    'value' => '<string>',
                                ],
                                'startTime' => [
                                    'type' => 'ABSOLUTE|RELATIVE',
                                    'value' => '<string>',
                                ],
                            ],
                        ],
                        'reservationCoverage' => [
                            'filter' => [
                                'and' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'costCategories' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                                'dimensions' => [
                                    'key' => 'AZ|INSTANCE_TYPE|LINKED_ACCOUNT|OPERATION|PURCHASE_TYPE|REGION|SERVICE|USAGE_TYPE|USAGE_TYPE_GROUP|RECORD_TYPE|RESOURCE_ID|SUBSCRIPTION_ID|TAG_KEY|OPERATING_SYSTEM|TENANCY|BILLING_ENTITY|RESERVATION_ID|COST_CATEGORY_NAME|DATABASE_ENGINE|LEGAL_ENTITY_NAME|SAVINGS_PLANS_TYPE|INSTANCE_TYPE_FAMILY|CACHE_ENGINE|DEPLOYMENT_OPTION|SCOPE|PLATFORM',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                                'not' => [...], // RECURSIVE
                                'or' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'tags' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                            ],
                            'granularity' => 'HOURLY|DAILY|MONTHLY',
                            'groupBy' => [
                                [
                                    'key' => '<string>',
                                    'type' => 'DIMENSION|TAG|COST_CATEGORY',
                                ],
                                // ...
                            ],
                            'metrics' => ['<string>', ...],
                            'timeRange' => [
                                'endTime' => [
                                    'type' => 'ABSOLUTE|RELATIVE',
                                    'value' => '<string>',
                                ],
                                'startTime' => [
                                    'type' => 'ABSOLUTE|RELATIVE',
                                    'value' => '<string>',
                                ],
                            ],
                        ],
                        'reservationUtilization' => [
                            'filter' => [
                                'and' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'costCategories' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                                'dimensions' => [
                                    'key' => 'AZ|INSTANCE_TYPE|LINKED_ACCOUNT|OPERATION|PURCHASE_TYPE|REGION|SERVICE|USAGE_TYPE|USAGE_TYPE_GROUP|RECORD_TYPE|RESOURCE_ID|SUBSCRIPTION_ID|TAG_KEY|OPERATING_SYSTEM|TENANCY|BILLING_ENTITY|RESERVATION_ID|COST_CATEGORY_NAME|DATABASE_ENGINE|LEGAL_ENTITY_NAME|SAVINGS_PLANS_TYPE|INSTANCE_TYPE_FAMILY|CACHE_ENGINE|DEPLOYMENT_OPTION|SCOPE|PLATFORM',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                                'not' => [...], // RECURSIVE
                                'or' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'tags' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                            ],
                            'granularity' => 'HOURLY|DAILY|MONTHLY',
                            'groupBy' => [
                                [
                                    'key' => '<string>',
                                    'type' => 'DIMENSION|TAG|COST_CATEGORY',
                                ],
                                // ...
                            ],
                            'timeRange' => [
                                'endTime' => [
                                    'type' => 'ABSOLUTE|RELATIVE',
                                    'value' => '<string>',
                                ],
                                'startTime' => [
                                    'type' => 'ABSOLUTE|RELATIVE',
                                    'value' => '<string>',
                                ],
                            ],
                        ],
                        'savingsPlansCoverage' => [
                            'filter' => [
                                'and' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'costCategories' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                                'dimensions' => [
                                    'key' => 'AZ|INSTANCE_TYPE|LINKED_ACCOUNT|OPERATION|PURCHASE_TYPE|REGION|SERVICE|USAGE_TYPE|USAGE_TYPE_GROUP|RECORD_TYPE|RESOURCE_ID|SUBSCRIPTION_ID|TAG_KEY|OPERATING_SYSTEM|TENANCY|BILLING_ENTITY|RESERVATION_ID|COST_CATEGORY_NAME|DATABASE_ENGINE|LEGAL_ENTITY_NAME|SAVINGS_PLANS_TYPE|INSTANCE_TYPE_FAMILY|CACHE_ENGINE|DEPLOYMENT_OPTION|SCOPE|PLATFORM',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                                'not' => [...], // RECURSIVE
                                'or' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'tags' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                            ],
                            'granularity' => 'HOURLY|DAILY|MONTHLY',
                            'groupBy' => [
                                [
                                    'key' => '<string>',
                                    'type' => 'DIMENSION|TAG|COST_CATEGORY',
                                ],
                                // ...
                            ],
                            'metrics' => ['<string>', ...],
                            'timeRange' => [
                                'endTime' => [
                                    'type' => 'ABSOLUTE|RELATIVE',
                                    'value' => '<string>',
                                ],
                                'startTime' => [
                                    'type' => 'ABSOLUTE|RELATIVE',
                                    'value' => '<string>',
                                ],
                            ],
                        ],
                        'savingsPlansUtilization' => [
                            'filter' => [
                                'and' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'costCategories' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                                'dimensions' => [
                                    'key' => 'AZ|INSTANCE_TYPE|LINKED_ACCOUNT|OPERATION|PURCHASE_TYPE|REGION|SERVICE|USAGE_TYPE|USAGE_TYPE_GROUP|RECORD_TYPE|RESOURCE_ID|SUBSCRIPTION_ID|TAG_KEY|OPERATING_SYSTEM|TENANCY|BILLING_ENTITY|RESERVATION_ID|COST_CATEGORY_NAME|DATABASE_ENGINE|LEGAL_ENTITY_NAME|SAVINGS_PLANS_TYPE|INSTANCE_TYPE_FAMILY|CACHE_ENGINE|DEPLOYMENT_OPTION|SCOPE|PLATFORM',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                                'not' => [...], // RECURSIVE
                                'or' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'tags' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                            ],
                            'granularity' => 'HOURLY|DAILY|MONTHLY',
                            'timeRange' => [
                                'endTime' => [
                                    'type' => 'ABSOLUTE|RELATIVE',
                                    'value' => '<string>',
                                ],
                                'startTime' => [
                                    'type' => 'ABSOLUTE|RELATIVE',
                                    'value' => '<string>',
                                ],
                            ],
                        ],
                    ],
                ],
                // ...
            ],
            'description' => '<string>',
            'height' => <integer>,
            'horizontalOffset' => <integer>,
            'title' => '<string>',
            'width' => <integer>,
        ],
        // ...
    ],
]

Result Details

Members
arn
Required: Yes
Type: string

The ARN of the retrieved dashboard.

createdAt
Required: Yes
Type: timestamp (string|DateTime or anything parsable by strtotime)

The timestamp when the dashboard was created.

description
Type: string

The description of the retrieved dashboard.

name
Required: Yes
Type: string

The name of the retrieved dashboard.

type
Required: Yes
Type: string

Indicates the dashboard type.

updatedAt
Required: Yes
Type: timestamp (string|DateTime or anything parsable by strtotime)

The timestamp when the dashboard was last modified.

widgets
Required: Yes
Type: Array of Widget structures

An array of widget configurations that make up the dashboard.

Errors

ThrottlingException:

The request was denied due to request throttling. Reduce the frequency of requests and use exponential backoff.

AccessDeniedException:

You do not have sufficient permissions to perform this action. Verify your IAM permissions and any resource policies.

InternalServerException:

An internal error occurred while processing the request. Retry your request. If the problem persists, contact Amazon Web Services Support.

ValidationException:

The input parameters do not satisfy the requirements. Check the error message for specific validation details.

ResourceNotFoundException:

The specified resource (dashboard, policy, or widget) was not found. Verify the ARN and try again.

Examples

Example 1: Getting information about a dashboard
$result = $client->getDashboard([
    'arn' => 'arn:aws:bcm-dashboards::123456789012:dashboard/abcd1234-ab12-12ab-1ab2-abcd1234efgh',
]);

Result syntax:

[
    'name' => 'cost-dashboards',
    'type' => 'CUSTOM',
    'arn' => 'arn:aws:bcm-dashboards::123456789012:dashboard/abcd1234-ab12-12ab-1ab2-abcd1234efgh',
    'createdAt' => ,
    'description' => 'Dashboard for tracking costs',
    'updatedAt' => ,
    'widgets' => [
        [
            'configs' => [
                [
                    'displayConfig' => [
                        'graph' => [
                            'costTrend' => [
                                'visualType' => 'LINE',
                            ],
                        ],
                    ],
                    'queryParameters' => [
                        'costAndUsage' => [
                            'granularity' => 'MONTHLY',
                            'groupBy' => [
                                [
                                    'type' => 'DIMENSION',
                                    'key' => 'SERVICE',
                                ],
                            ],
                            'metrics' => [
                                'UnblendedCost',
                            ],
                            'timeRange' => [
                                'endTime' => [
                                    'type' => 'RELATIVE',
                                    'value' => 'now',
                                ],
                                'startTime' => [
                                    'type' => 'RELATIVE',
                                    'value' => '-6M',
                                ],
                            ],
                        ],
                    ],
                ],
            ],
            'height' => 7,
            'horizontalOffset' => 0,
            'title' => 'Monthly Cost Trend',
            'width' => 4,
        ],
    ],
]

GetResourcePolicy

$result = $client->getResourcePolicy([/* ... */]);
$promise = $client->getResourcePolicyAsync([/* ... */]);

Retrieves the resource-based policy attached to a dashboard, showing sharing configurations and permissions.

Parameter Syntax

$result = $client->getResourcePolicy([
    'resourceArn' => '<string>', // REQUIRED
]);

Parameter Details

Members
resourceArn
Required: Yes
Type: string

The ARN of the dashboard whose resource-based policy you want to retrieve.

Result Syntax

[
    'policyDocument' => '<string>',
    'resourceArn' => '<string>',
]

Result Details

Members
policyDocument
Required: Yes
Type: string

The JSON policy document that represents the dashboard's resource-based policy.

resourceArn
Required: Yes
Type: string

The ARN of the dashboard for which the resource-based policy was retrieved.

Errors

ThrottlingException:

The request was denied due to request throttling. Reduce the frequency of requests and use exponential backoff.

AccessDeniedException:

You do not have sufficient permissions to perform this action. Verify your IAM permissions and any resource policies.

InternalServerException:

An internal error occurred while processing the request. Retry your request. If the problem persists, contact Amazon Web Services Support.

ValidationException:

The input parameters do not satisfy the requirements. Check the error message for specific validation details.

ResourceNotFoundException:

The specified resource (dashboard, policy, or widget) was not found. Verify the ARN and try again.

Examples

Example 1: Getting resource policy for a resource
$result = $client->getResourcePolicy([
    'resourceArn' => 'arn:aws:bcm-dashboards::123456789012:dashboard/abcd1234-ab12-12ab-1ab2-abcd1234efgh',
]);

Result syntax:

[
    'policyDocument' => '{}',
    'resourceArn' => 'arn:aws:bcm-dashboards::123456789012:dashboard/abcd1234-ab12-12ab-1ab2-abcd1234efgh',
]

ListDashboards

$result = $client->listDashboards([/* ... */]);
$promise = $client->listDashboardsAsync([/* ... */]);

Returns a list of all dashboards in your account.

Parameter Syntax

$result = $client->listDashboards([
    'maxResults' => <integer>,
    'nextToken' => '<string>',
]);

Parameter Details

Members
maxResults
Type: int

The maximum number of results to return in a single call. The default value is 20.

nextToken
Type: string

The token for the next page of results. Use the value returned in the previous response.

Result Syntax

[
    'dashboards' => [
        [
            'arn' => '<string>',
            'createdAt' => <DateTime>,
            'description' => '<string>',
            'name' => '<string>',
            'type' => 'CUSTOM',
            'updatedAt' => <DateTime>,
        ],
        // ...
    ],
    'nextToken' => '<string>',
]

Result Details

Members
dashboards
Required: Yes
Type: Array of DashboardReference structures

An array of dashboard references, containing basic information about each dashboard.

nextToken
Type: string

The token to use to retrieve the next page of results. Not returned if there are no more results to retrieve.

Errors

ThrottlingException:

The request was denied due to request throttling. Reduce the frequency of requests and use exponential backoff.

AccessDeniedException:

You do not have sufficient permissions to perform this action. Verify your IAM permissions and any resource policies.

InternalServerException:

An internal error occurred while processing the request. Retry your request. If the problem persists, contact Amazon Web Services Support.

ValidationException:

The input parameters do not satisfy the requirements. Check the error message for specific validation details.

Examples

Example 1: Listing dashboards for a user
$result = $client->listDashboards([
]);

Result syntax:

[
    'dashboards' => [
        [
            'name' => 'monthly-cost-dashboard',
            'type' => 'CUSTOM',
            'arn' => 'arn:aws:bcm-dashboards::123456789012:dashboard/abcd1234-ab12-12ab-1ab2-abcd1234efgh',
            'createdAt' => ,
            'description' => 'Dashboard for tracking monthly cost',
            'updatedAt' => ,
        ],
    ],
]

ListTagsForResource

$result = $client->listTagsForResource([/* ... */]);
$promise = $client->listTagsForResourceAsync([/* ... */]);

Returns a list of all tags associated with a specified dashboard resource.

Parameter Syntax

$result = $client->listTagsForResource([
    'resourceArn' => '<string>', // REQUIRED
]);

Parameter Details

Members
resourceArn
Required: Yes
Type: string

The unique identifier for the resource.

Result Syntax

[
    'resourceTags' => [
        [
            'key' => '<string>',
            'value' => '<string>',
        ],
        // ...
    ],
]

Result Details

Members
resourceTags
Type: Array of ResourceTag structures

The list of tags associated with the specified dashboard resource.

Errors

ThrottlingException:

The request was denied due to request throttling. Reduce the frequency of requests and use exponential backoff.

InternalServerException:

An internal error occurred while processing the request. Retry your request. If the problem persists, contact Amazon Web Services Support.

ValidationException:

The input parameters do not satisfy the requirements. Check the error message for specific validation details.

ResourceNotFoundException:

The specified resource (dashboard, policy, or widget) was not found. Verify the ARN and try again.

Examples

Example 1: Listing tags for a resource
$result = $client->listTagsForResource([
    'resourceArn' => 'arn:aws:bcm-dashboards::123456789012:dashboard/abcd1234-ab12-12ab-1ab2-abcd1234efgh',
]);

Result syntax:

[
    'resourceTags' => [
        [
            'key' => 'keyOne',
            'value' => 'valueOne',
        ],
        [
            'key' => 'keyTwo',
            'value' => 'valueTwo',
        ],
    ],
]

TagResource

$result = $client->tagResource([/* ... */]);
$promise = $client->tagResourceAsync([/* ... */]);

Adds or updates tags for a specified dashboard resource.

Parameter Syntax

$result = $client->tagResource([
    'resourceArn' => '<string>', // REQUIRED
    'resourceTags' => [ // REQUIRED
        [
            'key' => '<string>', // REQUIRED
            'value' => '<string>', // REQUIRED
        ],
        // ...
    ],
]);

Parameter Details

Members
resourceArn
Required: Yes
Type: string

The unique identifier for the resource.

resourceTags
Required: Yes
Type: Array of ResourceTag structures

The tags to add to the dashboard resource.

Result Syntax

[]

Result Details

The results for this operation are always empty.

Errors

ThrottlingException:

The request was denied due to request throttling. Reduce the frequency of requests and use exponential backoff.

InternalServerException:

An internal error occurred while processing the request. Retry your request. If the problem persists, contact Amazon Web Services Support.

ValidationException:

The input parameters do not satisfy the requirements. Check the error message for specific validation details.

ResourceNotFoundException:

The specified resource (dashboard, policy, or widget) was not found. Verify the ARN and try again.

Examples

Example 1: Adding tag(s) to a resource
$result = $client->tagResource([
    'resourceArn' => 'arn:aws:bcm-dashboards::123456789012:dashboard/abcd1234-ab12-12ab-1ab2-abcd1234efgh',
    'resourceTags' => [
        [
            'key' => 'keyOne',
            'value' => 'valueOne',
        ],
    ],
]);

UntagResource

$result = $client->untagResource([/* ... */]);
$promise = $client->untagResourceAsync([/* ... */]);

Removes specified tags from a dashboard resource.

Parameter Syntax

$result = $client->untagResource([
    'resourceArn' => '<string>', // REQUIRED
    'resourceTagKeys' => ['<string>', ...], // REQUIRED
]);

Parameter Details

Members
resourceArn
Required: Yes
Type: string

The unique identifier for the resource.

resourceTagKeys
Required: Yes
Type: Array of strings

The keys of the tags to remove from the dashboard resource.

Result Syntax

[]

Result Details

The results for this operation are always empty.

Errors

ThrottlingException:

The request was denied due to request throttling. Reduce the frequency of requests and use exponential backoff.

InternalServerException:

An internal error occurred while processing the request. Retry your request. If the problem persists, contact Amazon Web Services Support.

ValidationException:

The input parameters do not satisfy the requirements. Check the error message for specific validation details.

ResourceNotFoundException:

The specified resource (dashboard, policy, or widget) was not found. Verify the ARN and try again.

Examples

Example 1: Removing tag(s) from a resource
$result = $client->untagResource([
    'resourceArn' => 'arn:aws:bcm-dashboards::123456789012:dashboard/abcd1234-ab12-12ab-1ab2-abcd1234efgh',
    'resourceTagKeys' => [
        'keyOne',
    ],
]);

UpdateDashboard

$result = $client->updateDashboard([/* ... */]);
$promise = $client->updateDashboardAsync([/* ... */]);

Updates an existing dashboard's properties, including its name, description, and widget configurations.

Parameter Syntax

$result = $client->updateDashboard([
    'arn' => '<string>', // REQUIRED
    'description' => '<string>',
    'name' => '<string>',
    'widgets' => [
        [
            'configs' => [ // REQUIRED
                [
                    'displayConfig' => [ // REQUIRED
                        'graph' => [
                            '<GenericString>' => [
                                'visualType' => 'LINE|BAR|STACK', // REQUIRED
                            ],
                            // ...
                        ],
                        'table' => [
                        ],
                    ],
                    'queryParameters' => [ // REQUIRED
                        'costAndUsage' => [
                            'filter' => [
                                'and' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'costCategories' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                                'dimensions' => [
                                    'key' => 'AZ|INSTANCE_TYPE|LINKED_ACCOUNT|OPERATION|PURCHASE_TYPE|REGION|SERVICE|USAGE_TYPE|USAGE_TYPE_GROUP|RECORD_TYPE|RESOURCE_ID|SUBSCRIPTION_ID|TAG_KEY|OPERATING_SYSTEM|TENANCY|BILLING_ENTITY|RESERVATION_ID|COST_CATEGORY_NAME|DATABASE_ENGINE|LEGAL_ENTITY_NAME|SAVINGS_PLANS_TYPE|INSTANCE_TYPE_FAMILY|CACHE_ENGINE|DEPLOYMENT_OPTION|SCOPE|PLATFORM', // REQUIRED
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...], // REQUIRED
                                ],
                                'not' => [...], // RECURSIVE
                                'or' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'tags' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                            ],
                            'granularity' => 'HOURLY|DAILY|MONTHLY', // REQUIRED
                            'groupBy' => [
                                [
                                    'key' => '<string>', // REQUIRED
                                    'type' => 'DIMENSION|TAG|COST_CATEGORY',
                                ],
                                // ...
                            ],
                            'metrics' => ['<string>', ...], // REQUIRED
                            'timeRange' => [ // REQUIRED
                                'endTime' => [ // REQUIRED
                                    'type' => 'ABSOLUTE|RELATIVE', // REQUIRED
                                    'value' => '<string>', // REQUIRED
                                ],
                                'startTime' => [ // REQUIRED
                                    'type' => 'ABSOLUTE|RELATIVE', // REQUIRED
                                    'value' => '<string>', // REQUIRED
                                ],
                            ],
                        ],
                        'reservationCoverage' => [
                            'filter' => [
                                'and' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'costCategories' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                                'dimensions' => [
                                    'key' => 'AZ|INSTANCE_TYPE|LINKED_ACCOUNT|OPERATION|PURCHASE_TYPE|REGION|SERVICE|USAGE_TYPE|USAGE_TYPE_GROUP|RECORD_TYPE|RESOURCE_ID|SUBSCRIPTION_ID|TAG_KEY|OPERATING_SYSTEM|TENANCY|BILLING_ENTITY|RESERVATION_ID|COST_CATEGORY_NAME|DATABASE_ENGINE|LEGAL_ENTITY_NAME|SAVINGS_PLANS_TYPE|INSTANCE_TYPE_FAMILY|CACHE_ENGINE|DEPLOYMENT_OPTION|SCOPE|PLATFORM', // REQUIRED
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...], // REQUIRED
                                ],
                                'not' => [...], // RECURSIVE
                                'or' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'tags' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                            ],
                            'granularity' => 'HOURLY|DAILY|MONTHLY',
                            'groupBy' => [
                                [
                                    'key' => '<string>', // REQUIRED
                                    'type' => 'DIMENSION|TAG|COST_CATEGORY',
                                ],
                                // ...
                            ],
                            'metrics' => ['<string>', ...],
                            'timeRange' => [ // REQUIRED
                                'endTime' => [ // REQUIRED
                                    'type' => 'ABSOLUTE|RELATIVE', // REQUIRED
                                    'value' => '<string>', // REQUIRED
                                ],
                                'startTime' => [ // REQUIRED
                                    'type' => 'ABSOLUTE|RELATIVE', // REQUIRED
                                    'value' => '<string>', // REQUIRED
                                ],
                            ],
                        ],
                        'reservationUtilization' => [
                            'filter' => [
                                'and' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'costCategories' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                                'dimensions' => [
                                    'key' => 'AZ|INSTANCE_TYPE|LINKED_ACCOUNT|OPERATION|PURCHASE_TYPE|REGION|SERVICE|USAGE_TYPE|USAGE_TYPE_GROUP|RECORD_TYPE|RESOURCE_ID|SUBSCRIPTION_ID|TAG_KEY|OPERATING_SYSTEM|TENANCY|BILLING_ENTITY|RESERVATION_ID|COST_CATEGORY_NAME|DATABASE_ENGINE|LEGAL_ENTITY_NAME|SAVINGS_PLANS_TYPE|INSTANCE_TYPE_FAMILY|CACHE_ENGINE|DEPLOYMENT_OPTION|SCOPE|PLATFORM', // REQUIRED
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...], // REQUIRED
                                ],
                                'not' => [...], // RECURSIVE
                                'or' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'tags' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                            ],
                            'granularity' => 'HOURLY|DAILY|MONTHLY',
                            'groupBy' => [
                                [
                                    'key' => '<string>', // REQUIRED
                                    'type' => 'DIMENSION|TAG|COST_CATEGORY',
                                ],
                                // ...
                            ],
                            'timeRange' => [ // REQUIRED
                                'endTime' => [ // REQUIRED
                                    'type' => 'ABSOLUTE|RELATIVE', // REQUIRED
                                    'value' => '<string>', // REQUIRED
                                ],
                                'startTime' => [ // REQUIRED
                                    'type' => 'ABSOLUTE|RELATIVE', // REQUIRED
                                    'value' => '<string>', // REQUIRED
                                ],
                            ],
                        ],
                        'savingsPlansCoverage' => [
                            'filter' => [
                                'and' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'costCategories' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                                'dimensions' => [
                                    'key' => 'AZ|INSTANCE_TYPE|LINKED_ACCOUNT|OPERATION|PURCHASE_TYPE|REGION|SERVICE|USAGE_TYPE|USAGE_TYPE_GROUP|RECORD_TYPE|RESOURCE_ID|SUBSCRIPTION_ID|TAG_KEY|OPERATING_SYSTEM|TENANCY|BILLING_ENTITY|RESERVATION_ID|COST_CATEGORY_NAME|DATABASE_ENGINE|LEGAL_ENTITY_NAME|SAVINGS_PLANS_TYPE|INSTANCE_TYPE_FAMILY|CACHE_ENGINE|DEPLOYMENT_OPTION|SCOPE|PLATFORM', // REQUIRED
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...], // REQUIRED
                                ],
                                'not' => [...], // RECURSIVE
                                'or' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'tags' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                            ],
                            'granularity' => 'HOURLY|DAILY|MONTHLY',
                            'groupBy' => [
                                [
                                    'key' => '<string>', // REQUIRED
                                    'type' => 'DIMENSION|TAG|COST_CATEGORY',
                                ],
                                // ...
                            ],
                            'metrics' => ['<string>', ...],
                            'timeRange' => [ // REQUIRED
                                'endTime' => [ // REQUIRED
                                    'type' => 'ABSOLUTE|RELATIVE', // REQUIRED
                                    'value' => '<string>', // REQUIRED
                                ],
                                'startTime' => [ // REQUIRED
                                    'type' => 'ABSOLUTE|RELATIVE', // REQUIRED
                                    'value' => '<string>', // REQUIRED
                                ],
                            ],
                        ],
                        'savingsPlansUtilization' => [
                            'filter' => [
                                'and' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'costCategories' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                                'dimensions' => [
                                    'key' => 'AZ|INSTANCE_TYPE|LINKED_ACCOUNT|OPERATION|PURCHASE_TYPE|REGION|SERVICE|USAGE_TYPE|USAGE_TYPE_GROUP|RECORD_TYPE|RESOURCE_ID|SUBSCRIPTION_ID|TAG_KEY|OPERATING_SYSTEM|TENANCY|BILLING_ENTITY|RESERVATION_ID|COST_CATEGORY_NAME|DATABASE_ENGINE|LEGAL_ENTITY_NAME|SAVINGS_PLANS_TYPE|INSTANCE_TYPE_FAMILY|CACHE_ENGINE|DEPLOYMENT_OPTION|SCOPE|PLATFORM', // REQUIRED
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...], // REQUIRED
                                ],
                                'not' => [...], // RECURSIVE
                                'or' => [
                                    [...], // RECURSIVE
                                    // ...
                                ],
                                'tags' => [
                                    'key' => '<string>',
                                    'matchOptions' => ['<string>', ...],
                                    'values' => ['<string>', ...],
                                ],
                            ],
                            'granularity' => 'HOURLY|DAILY|MONTHLY',
                            'timeRange' => [ // REQUIRED
                                'endTime' => [ // REQUIRED
                                    'type' => 'ABSOLUTE|RELATIVE', // REQUIRED
                                    'value' => '<string>', // REQUIRED
                                ],
                                'startTime' => [ // REQUIRED
                                    'type' => 'ABSOLUTE|RELATIVE', // REQUIRED
                                    'value' => '<string>', // REQUIRED
                                ],
                            ],
                        ],
                    ],
                ],
                // ...
            ],
            'description' => '<string>',
            'height' => <integer>,
            'horizontalOffset' => <integer>,
            'title' => '<string>', // REQUIRED
            'width' => <integer>,
        ],
        // ...
    ],
]);

Parameter Details

Members
arn
Required: Yes
Type: string

The ARN of the dashboard to update.

description
Type: string

The new description for the dashboard. If not specified, the existing description is retained.

name
Type: string

The new name for the dashboard. If not specified, the existing name is retained.

widgets
Type: Array of Widget structures

The updated array of widget configurations for the dashboard. Replaces all existing widgets.

Result Syntax

[
    'arn' => '<string>',
]

Result Details

Members
arn
Required: Yes
Type: string

The ARN of the updated dashboard.

Errors

ThrottlingException:

The request was denied due to request throttling. Reduce the frequency of requests and use exponential backoff.

AccessDeniedException:

You do not have sufficient permissions to perform this action. Verify your IAM permissions and any resource policies.

InternalServerException:

An internal error occurred while processing the request. Retry your request. If the problem persists, contact Amazon Web Services Support.

ValidationException:

The input parameters do not satisfy the requirements. Check the error message for specific validation details.

ResourceNotFoundException:

The specified resource (dashboard, policy, or widget) was not found. Verify the ARN and try again.

Examples

Example 1: Updating a dashboard
$result = $client->updateDashboard([
    'name' => 'cost-dashboards-updated',
    'arn' => 'arn:aws:bcm-dashboards::123456789012:dashboard/abcd1234-ab12-12ab-1ab2-abcd1234efgh',
    'description' => 'Dashboard for tracking costs version 2',
    'widgets' => [
        [
            'configs' => [
                [
                    'displayConfig' => [
                        'graph' => [
                            'costTrend' => [
                                'visualType' => 'LINE',
                            ],
                        ],
                    ],
                    'queryParameters' => [
                        'costAndUsage' => [
                            'granularity' => 'MONTHLY',
                            'groupBy' => [
                                [
                                    'type' => 'DIMENSION',
                                    'key' => 'SERVICE',
                                ],
                            ],
                            'metrics' => [
                                'UnblendedCost',
                            ],
                            'timeRange' => [
                                'endTime' => [
                                    'type' => 'RELATIVE',
                                    'value' => 'now',
                                ],
                                'startTime' => [
                                    'type' => 'RELATIVE',
                                    'value' => '-3M',
                                ],
                            ],
                        ],
                    ],
                ],
            ],
            'height' => 7,
            'horizontalOffset' => 2,
            'title' => 'Monthly Cost Trend',
            'width' => 4,
        ],
    ],
]);

Shapes

AccessDeniedException

Description

You do not have sufficient permissions to perform this action. Verify your IAM permissions and any resource policies.

Members
message
Required: Yes
Type: string

CostAndUsageQuery

Description

Defines the parameters for retrieving Amazon Web Services cost and usage data. Includes specifications for metrics, time periods, granularity, grouping dimensions, and filtering conditions.

Members
filter
Type: Expression structure

The filter expression to be applied to the cost and usage data.

granularity
Required: Yes
Type: string

The granularity of the retrieved data: HOURLY, DAILY, or MONTHLY.

groupBy
Type: Array of GroupDefinition structures

Specifies how to group the retrieved data, such as by SERVICE, ACCOUNT, or TAG.

metrics
Required: Yes
Type: Array of strings

The specific cost and usage metrics to retrieve.

Valid values for CostAndUsageQuery metrics are AmortizedCost, BlendedCost, NetAmortizedCost, NetUnblendedCost, NormalizedUsageAmount, UnblendedCost, and UsageQuantity.

timeRange
Required: Yes
Type: DateTimeRange structure

The time period for which to retrieve data. Can be specified as absolute dates or relative time periods.

CostCategoryValues

Description

Specifies the values and match options for cost category-based filtering in cost and usage queries.

Members
key
Type: string

The key of the cost category to filter on.

matchOptions
Type: Array of strings

The match options for cost category values, such as EQUALS, CONTAINS, STARTS_WITH, or ENDS_WITH.

values
Type: Array of strings

The values to match for the specified cost category key.

DashboardReference

Description

Contains basic information about a dashboard, including its ARN, name, type, and timestamps.

Members
arn
Required: Yes
Type: string

The ARN of the referenced dashboard.

createdAt
Required: Yes
Type: timestamp (string|DateTime or anything parsable by strtotime)

The timestamp when the dashboard was created.

description
Type: string

The description of the referenced dashboard.

name
Required: Yes
Type: string

The name of the referenced dashboard.

type
Required: Yes
Type: string

The dashboard type.

updatedAt
Required: Yes
Type: timestamp (string|DateTime or anything parsable by strtotime)

The timestamp when the dashboard was last modified.

DateTimeRange

Description

Defines a time period with explicit start and end times for data queries.

Members
endTime
Required: Yes
Type: DateTimeValue structure

The end time of the date range for querying data.

startTime
Required: Yes
Type: DateTimeValue structure

The start time of the date range for querying data.

DateTimeValue

Description

Represents a point in time that can be specified as either an absolute date (for example, "2025-07-01") or a relative time period using ISO 8601 duration format (for example, "-P3M" for three months ago).

Members
type
Required: Yes
Type: string

The type of date/time value: ABSOLUTE for specific dates or RELATIVE for dynamic time periods.

value
Required: Yes
Type: string

The actual date/time value.

DimensionValues

Description

Specifies the values and match options for dimension-based filtering in cost and usage queries.

Members
key
Required: Yes
Type: string

The key of the dimension to filter on (for example, SERVICE, USAGE_TYPE, or OPERATION).

matchOptions
Type: Array of strings

The match options for dimension values, such as EQUALS, CONTAINS, STARTS_WITH, or ENDS_WITH.

values
Required: Yes
Type: Array of strings

The values to match for the specified dimension key.

DisplayConfig

Description

Defines how the widget's data should be visualized, including chart type, color schemes, axis configurations, and other display preferences.

Members
graph
Type: Associative array of custom strings keys (GenericString) to GraphDisplayConfig structures

The configuration for graphical display of the widget data, including chart type and visual options.

table
Type: TableDisplayConfigStruct structure

The configuration for tabular display of the widget data.

Expression

Description

Defines complex filtering conditions using logical operators (AND, OR, NOT) and various filter types.

Members
and
Type: Array of Expression structures

A list of expressions to combine with AND logic.

costCategories
Type: CostCategoryValues structure

The cost category values to include in the filter expression.

dimensions
Type: DimensionValues structure

The dimension values to include in the filter expression.

not
Type: Expression structure

An expression to negate with NOT logic.

or
Type: Array of Expression structures

A list of expressions to combine with OR logic.

tags
Type: TagValues structure

The tag values to include in the filter expression.

GraphDisplayConfig

Description

Defines the visual representation settings for widget data, including the visualization type, styling options, and display preferences for different metric types.

Members
visualType
Required: Yes
Type: string

The type of visualization to use for the data.

GroupDefinition

Description

Specifies how to group cost and usage data.

Members
key
Required: Yes
Type: string

The key to use for grouping cost and usage data.

type
Type: string

The type of grouping to apply.

InternalServerException

Description

An internal error occurred while processing the request. Retry your request. If the problem persists, contact Amazon Web Services Support.

Members
message
Required: Yes
Type: string

QueryParameters

Description

Defines the data retrieval parameters for a widget.

Members
costAndUsage
Type: CostAndUsageQuery structure

The parameters for querying cost and usage data, including metrics, time range, granularity, grouping dimensions, and filters.

reservationCoverage
Type: ReservationCoverageQuery structure

The parameters for querying Reserved Instance coverage data, showing how much of your eligible instance usage is covered by Reserved Instances.

reservationUtilization
Type: ReservationUtilizationQuery structure

The parameters for querying Reserved Instance utilization data, showing how effectively your Reserved Instances are being used.

savingsPlansCoverage
Type: SavingsPlansCoverageQuery structure

The parameters for querying Savings Plans coverage data, showing how much of your eligible compute usage is covered by Savings Plans.

savingsPlansUtilization

The parameters for querying Savings Plans utilization data, showing how effectively your Savings Plans are being used.

ReservationCoverageQuery

Description

Defines the parameters for querying Reserved Instance coverage data, including grouping options, metrics, and sorting preferences.

Members
filter
Type: Expression structure

Defines complex filtering conditions using logical operators (AND, OR, NOT) and various filter types.

granularity
Type: string

The time granularity of the retrieved data: HOURLY, DAILY, or MONTHLY.

groupBy
Type: Array of GroupDefinition structures

Specifies how to group the Reserved Instance coverage data, such as by service, Region, or instance type.

metrics
Type: Array of strings

The coverage metrics to include in the results.

Valid values for ReservationCoverageQuery metrics are Hour, Unit, and Cost.

timeRange
Required: Yes
Type: DateTimeRange structure

Defines a time period with explicit start and end times for data queries.

ReservationUtilizationQuery

Description

Defines the parameters for querying Reserved Instance utilization data, including grouping options and time granularity.

Members
filter
Type: Expression structure

Defines complex filtering conditions using logical operators (AND, OR, NOT) and various filter types.

granularity
Type: string

The time granularity of the retrieved data: HOURLY, DAILY, or MONTHLY.

groupBy
Type: Array of GroupDefinition structures

Specifies how to group the Reserved Instance utilization data, such as by service, Region, or instance type.

timeRange
Required: Yes
Type: DateTimeRange structure

Defines a time period with explicit start and end times for data queries.

ResourceNotFoundException

Description

The specified resource (dashboard, policy, or widget) was not found. Verify the ARN and try again.

Members
message
Required: Yes
Type: string

ResourceTag

Description

A key-value pair that can be attached to a dashboard for organization and management purposes.

Members
key
Required: Yes
Type: string

The key of the tag to be attached to the dashboard resource.

value
Required: Yes
Type: string

The value of the tag to be attached to the dashboard resource.

SavingsPlansCoverageQuery

Description

Defines the parameters for querying Savings Plans coverage data, including metrics, grouping options, and time granularity.

Members
filter
Type: Expression structure

Defines complex filtering conditions using logical operators (AND, OR, NOT) and various filter types.

granularity
Type: string

The time granularity of the retrieved data: HOURLY, DAILY, or MONTHLY.

groupBy
Type: Array of GroupDefinition structures

Specifies how to group the Savings Plans coverage data, such as by service or instance family.

metrics
Type: Array of strings

The coverage metrics to include in the results.

Valid value for SavingsPlansCoverageQuery metrics is SpendCoveredBySavingsPlans.

timeRange
Required: Yes
Type: DateTimeRange structure

Defines a time period with explicit start and end times for data queries.

SavingsPlansUtilizationQuery

Description

Defines the parameters for querying Savings Plans utilization data, including time granularity and sorting preferences.

Members
filter
Type: Expression structure

Defines complex filtering conditions using logical operators (AND, OR, NOT) and various filter types.

granularity
Type: string

The time granularity of the retrieved data: HOURLY, DAILY, or MONTHLY.

timeRange
Required: Yes
Type: DateTimeRange structure

Defines a time period with explicit start and end times for data queries.

ServiceQuotaExceededException

Description

The request would exceed service quotas. For example, attempting to create more than 20 widgets in a dashboard or exceeding the maximum number of dashboards per account.

Members
message
Required: Yes
Type: string

TableDisplayConfigStruct

Description

Configuration structure for customizing the tabular display of widget data.

Members

TagValues

Description

Specifies tag-based filtering options for cost and usage queries.

Members
key
Type: string

The key of the tag to filter on.

matchOptions
Type: Array of strings

The match options for tag values, such as EQUALS, CONTAINS, STARTS_WITH, or ENDS_WITH.

values
Type: Array of strings

The values to match for the specified tag key.

ThrottlingException

Description

The request was denied due to request throttling. Reduce the frequency of requests and use exponential backoff.

Members
message
Required: Yes
Type: string

ValidationException

Description

The input parameters do not satisfy the requirements. Check the error message for specific validation details.

Members
message
Required: Yes
Type: string

Widget

Description

A configurable visualization component within a dashboard that displays specific cost and usage metrics. Each widget can show data as charts or tables and includes settings for data querying, filtering, and visual presentation.

Members
configs
Required: Yes
Type: Array of WidgetConfig structures

An array of configurations that define the data queries and display settings for the widget.

description
Type: string

A description of the widget's purpose or the data it displays.

height
Type: int

The height of the widget in row spans. The dashboard layout consists of a grid system.

horizontalOffset
Type: int

Specifies the starting column position of the widget in the dashboard's grid layout. Used to control widget placement.

title
Required: Yes
Type: string

The title of the widget.

width
Type: int

The width of the widget in column spans. The dashboard layout consists of a grid system.

WidgetConfig

Description

Defines the complete configuration for a widget, including data retrieval settings and visualization preferences.

Members
displayConfig
Required: Yes
Type: DisplayConfig structure

The configuration that determines how the retrieved data should be visualized in the widget.

queryParameters
Required: Yes
Type: QueryParameters structure

The parameters that define what data the widget should retrieve and how it should be filtered or grouped.