Region: {{ region }}
Generated: {{ timestamp }}
{% if quotas.tpm or quotas.rpm or quotas.tpd or quotas.concurrent %}TPM (Tokens Per Minute): {{ "{:,.0f}".format(quotas.tpm.value) }}
[{{ quotas.tpm.code }}] {{ quotas.tpm.name }}
RPM (Requests Per Minute): {{ "{:,.0f}".format(quotas.rpm.value) }}
[{{ quotas.rpm.code }}] {{ quotas.rpm.name }}
TPD (Tokens Per Day): {{ "{:,.0f}".format(quotas.tpd.value) }}
[{{ quotas.tpd.code }}] {{ quotas.tpd.name }}
Concurrent Requests: {{ "{:,.0f}".format(quotas.concurrent.value) }}
[{{ quotas.concurrent.code }}] {{ quotas.concurrent.name }}
IMPORTANT: These quotas (and those on the charts) were intelligently mapped with large language model. It is always good to crosscheck with AWS service quotas
Low TPM/TPD values in this report do not rule out token-based throttling. Bedrock reserves input_tokens + max_tokens from your quota at request start, but CloudWatch only records actual tokens used after completion. If max_tokens is set high (e.g., 64K) but actual output is low, you may hit throttling limits that are invisible in these metrics. To diagnose, check your max_tokens settings and enable model invocation logging. See How tokens are counted in Amazon Bedrock for details.
Note: Numbers are rounded to the nearest integer
{# Table 1: Original Metrics #}| Metric | Statistic | {% for period in ['1hour', '1day', '7days', '14days', '30days'] %}
{{ period.upper() }} {% set granularity_seconds = granularity_config.get(period, 300) %} {% if granularity_seconds == 60 %}1-min data {% elif granularity_seconds == 300 %}5-min data {% elif granularity_seconds == 3600 %}1-hour data {% else %}{{ granularity_seconds }}s data{% endif %} |
{% endfor %}
||||
|---|---|---|---|---|---|---|
|
{{ metric }} {% if metric == 'InvocationLatency' %} aggregated with AVERAGE (milliseconds) {% else %} aggregated with SUM {% endif %} |
{% endif %}
{{ stat }} | {% for period in ['1hour', '1day', '7days', '14days', '30days'] %} {% set metric_data = time_periods[period]['__AGGREGATED__'].get(metric, {}) %} {% if stat == 'P50' %}{{ "{:,}".format(metric_data.p50|round|int) if metric_data.p50 is defined else "0" }} | {% elif stat == 'P90' %}{{ "{:,}".format(metric_data.p90|round|int) if metric_data.p90 is defined else "0" }} | {% elif stat == 'Average' %}{{ "{:,}".format(metric_data.avg|round|int) if metric_data.avg is defined else "0" }} | {% elif stat == 'Total' %}{{ "{:,}".format(metric_data.sum|round|int) if metric_data.sum is defined else "0" }} | {% elif stat == 'Data Points' %}{{ metric_data.count if metric_data.count is defined else 0 }} | {% endif %} {% endfor %}
| Metric | Statistic | {% for period in ['1hour', '1day', '7days', '14days', '30days'] %}
{{ period.upper() }} 1-min data |
{% endfor %}
||||
|---|---|---|---|---|---|---|
|
{{ rate_metric_labels[metric] }} {% if metric in ['TPM_1min', 'TPD'] %} derived from token counts {% elif metric == 'RPM_1min' %} derived from invocations {% endif %} |
{% endif %}
{{ stat }} | {% for period in ['1hour', '1day', '7days', '14days', '30days'] %} {% if metric == 'TPD' and period == '1hour' %}N/A | {% else %} {% set metric_data = time_periods[period]['__AGGREGATED__'].get(metric, {}) %} {% if stat == 'P50' %}{{ "{:,}".format(metric_data.p50|round|int) if metric_data.p50 is defined else "0" }} | {% elif stat == 'P90' %}{{ "{:,}".format(metric_data.p90|round|int) if metric_data.p90 is defined else "0" }} | {% elif stat == 'Average' %}{{ "{:,}".format(metric_data.avg|round|int) if metric_data.avg is defined else "0" }} | {% elif stat == 'Data Points' %}{{ metric_data.count if metric_data.count is defined else 0 }} | {% endif %} {% endif %} {% endfor %}
| Profile Name | ID | Tags | P50 | P90 | Average |
|---|---|---|---|---|---|
| {{ contrib.profile_name }} | {{ contrib.profile_arn_id }} | {% if contrib.profile_tags %}{% for key, value in contrib.profile_tags.items() %}{{ key }}={{ value }} {% endfor %}{% else %}N/A{% endif %} |
{{ "{:,.0f}".format(contrib.tpm_p50) }} | {{ "{:,.0f}".format(contrib.tpm_p90) }} | {{ "{:,.0f}".format(contrib.tpm_avg) }} |
| Profile Name | ID | Tags | P50 | P90 | Average |
|---|---|---|---|---|---|
| {{ contrib.profile_name }} | {{ contrib.profile_arn_id }} | {% if contrib.profile_tags %}{% for key, value in contrib.profile_tags.items() %}{{ key }}={{ value }} {% endfor %}{% else %}N/A{% endif %} |
{{ "{:,.0f}".format(contrib.rpm_p50) }} | {{ "{:,.0f}".format(contrib.rpm_p90) }} | {{ "{:,.0f}".format(contrib.rpm_avg) }} |
| Profile Name | ID | Tags | Total |
|---|---|---|---|
| {{ contrib.profile_name }} | {{ contrib.profile_arn_id }} | {% if contrib.profile_tags %}{% for key, value in contrib.profile_tags.items() %}{{ key }}={{ value }} {% endfor %}{% else %}N/A{% endif %} |
{{ "{:,.0f}".format(contrib.throttles) }} |
| Profile Name | ID | Tags | P50 | P90 | Average |
|---|---|---|---|---|---|
| {{ contrib.profile_name }} | {{ contrib.profile_arn_id }} | {% if contrib.profile_tags %}{% for key, value in contrib.profile_tags.items() %}{{ key }}={{ value }} {% endfor %}{% else %}N/A{% endif %} |
{{ "{:,.0f}".format(contrib.tpm_p50) }} | {{ "{:,.0f}".format(contrib.tpm_p90) }} | {{ "{:,.0f}".format(contrib.tpm_avg) }} |
| Profile Name | ID | Tags | P50 | P90 | Average |
|---|---|---|---|---|---|
| {{ contrib.profile_name }} | {{ contrib.profile_arn_id }} | {% if contrib.profile_tags %}{% for key, value in contrib.profile_tags.items() %}{{ key }}={{ value }} {% endfor %}{% else %}N/A{% endif %} |
{{ "{:,.0f}".format(contrib.rpm_p50) }} | {{ "{:,.0f}".format(contrib.rpm_p90) }} | {{ "{:,.0f}".format(contrib.rpm_avg) }} |
| Profile Name | ID | Tags | P50 | P90 | Average |
|---|---|---|---|---|---|
| {{ contrib.profile_name }} | {{ contrib.profile_arn_id }} | {% if contrib.profile_tags %}{% for key, value in contrib.profile_tags.items() %}{{ key }}={{ value }} {% endfor %}{% else %}N/A{% endif %} |
{{ "{:,.0f}".format(contrib.tpd_p50) }} | {{ "{:,.0f}".format(contrib.tpd_p90) }} | {{ "{:,.0f}".format(contrib.tpd_avg) }} |
| Profile Name | ID | Tags | Total |
|---|---|---|---|
| {{ contrib.profile_name }} | {{ contrib.profile_arn_id }} | {% if contrib.profile_tags %}{% for key, value in contrib.profile_tags.items() %}{{ key }}={{ value }} {% endfor %}{% else %}N/A{% endif %} |
{{ "{:,.0f}".format(contrib.throttles) }} |
| Profile Name | ID | Tags | P50 | P90 | Average |
|---|---|---|---|---|---|
| {{ contrib.profile_name }} | {{ contrib.profile_arn_id }} | {% if contrib.profile_tags %}{% for key, value in contrib.profile_tags.items() %}{{ key }}={{ value }} {% endfor %}{% else %}N/A{% endif %} |
{{ "{:,.0f}".format(contrib.tpm_p50) }} | {{ "{:,.0f}".format(contrib.tpm_p90) }} | {{ "{:,.0f}".format(contrib.tpm_avg) }} |
| Profile Name | ID | Tags | P50 | P90 | Average |
|---|---|---|---|---|---|
| {{ contrib.profile_name }} | {{ contrib.profile_arn_id }} | {% if contrib.profile_tags %}{% for key, value in contrib.profile_tags.items() %}{{ key }}={{ value }} {% endfor %}{% else %}N/A{% endif %} |
{{ "{:,.0f}".format(contrib.rpm_p50) }} | {{ "{:,.0f}".format(contrib.rpm_p90) }} | {{ "{:,.0f}".format(contrib.rpm_avg) }} |
| Profile Name | ID | Tags | P50 | P90 | Average |
|---|---|---|---|---|---|
| {{ contrib.profile_name }} | {{ contrib.profile_arn_id }} | {% if contrib.profile_tags %}{% for key, value in contrib.profile_tags.items() %}{{ key }}={{ value }} {% endfor %}{% else %}N/A{% endif %} |
{{ "{:,.0f}".format(contrib.tpd_p50) }} | {{ "{:,.0f}".format(contrib.tpd_p90) }} | {{ "{:,.0f}".format(contrib.tpd_avg) }} |
| Profile Name | ID | Tags | Total |
|---|---|---|---|
| {{ contrib.profile_name }} | {{ contrib.profile_arn_id }} | {% if contrib.profile_tags %}{% for key, value in contrib.profile_tags.items() %}{{ key }}={{ value }} {% endfor %}{% else %}N/A{% endif %} |
{{ "{:,.0f}".format(contrib.throttles) }} |
| Profile Name | ID | Tags | P50 | P90 | Average |
|---|---|---|---|---|---|
| {{ contrib.profile_name }} | {{ contrib.profile_arn_id }} | {% if contrib.profile_tags %}{% for key, value in contrib.profile_tags.items() %}{{ key }}={{ value }} {% endfor %}{% else %}N/A{% endif %} |
{{ "{:,.0f}".format(contrib.tpm_p50) }} | {{ "{:,.0f}".format(contrib.tpm_p90) }} | {{ "{:,.0f}".format(contrib.tpm_avg) }} |
| Profile Name | ID | Tags | P50 | P90 | Average |
|---|---|---|---|---|---|
| {{ contrib.profile_name }} | {{ contrib.profile_arn_id }} | {% if contrib.profile_tags %}{% for key, value in contrib.profile_tags.items() %}{{ key }}={{ value }} {% endfor %}{% else %}N/A{% endif %} |
{{ "{:,.0f}".format(contrib.rpm_p50) }} | {{ "{:,.0f}".format(contrib.rpm_p90) }} | {{ "{:,.0f}".format(contrib.rpm_avg) }} |
| Profile Name | ID | Tags | P50 | P90 | Average |
|---|---|---|---|---|---|
| {{ contrib.profile_name }} | {{ contrib.profile_arn_id }} | {% if contrib.profile_tags %}{% for key, value in contrib.profile_tags.items() %}{{ key }}={{ value }} {% endfor %}{% else %}N/A{% endif %} |
{{ "{:,.0f}".format(contrib.tpd_p50) }} | {{ "{:,.0f}".format(contrib.tpd_p90) }} | {{ "{:,.0f}".format(contrib.tpd_avg) }} |
| Profile Name | ID | Tags | Total |
|---|---|---|---|
| {{ contrib.profile_name }} | {{ contrib.profile_arn_id }} | {% if contrib.profile_tags %}{% for key, value in contrib.profile_tags.items() %}{{ key }}={{ value }} {% endfor %}{% else %}N/A{% endif %} |
{{ "{:,.0f}".format(contrib.throttles) }} |
| Profile Name | ID | Tags | P50 | P90 | Average |
|---|---|---|---|---|---|
| {{ contrib.profile_name }} | {{ contrib.profile_arn_id }} | {% if contrib.profile_tags %}{% for key, value in contrib.profile_tags.items() %}{{ key }}={{ value }} {% endfor %}{% else %}N/A{% endif %} |
{{ "{:,.0f}".format(contrib.tpm_p50) }} | {{ "{:,.0f}".format(contrib.tpm_p90) }} | {{ "{:,.0f}".format(contrib.tpm_avg) }} |
| Profile Name | ID | Tags | P50 | P90 | Average |
|---|---|---|---|---|---|
| {{ contrib.profile_name }} | {{ contrib.profile_arn_id }} | {% if contrib.profile_tags %}{% for key, value in contrib.profile_tags.items() %}{{ key }}={{ value }} {% endfor %}{% else %}N/A{% endif %} |
{{ "{:,.0f}".format(contrib.rpm_p50) }} | {{ "{:,.0f}".format(contrib.rpm_p90) }} | {{ "{:,.0f}".format(contrib.rpm_avg) }} |
| Profile Name | ID | Tags | P50 | P90 | Average |
|---|---|---|---|---|---|
| {{ contrib.profile_name }} | {{ contrib.profile_arn_id }} | {% if contrib.profile_tags %}{% for key, value in contrib.profile_tags.items() %}{{ key }}={{ value }} {% endfor %}{% else %}N/A{% endif %} |
{{ "{:,.0f}".format(contrib.tpd_p50) }} | {{ "{:,.0f}".format(contrib.tpd_p90) }} | {{ "{:,.0f}".format(contrib.tpd_avg) }} |
| Profile Name | ID | Tags | Total |
|---|---|---|---|
| {{ contrib.profile_name }} | {{ contrib.profile_arn_id }} | {% if contrib.profile_tags %}{% for key, value in contrib.profile_tags.items() %}{{ key }}={{ value }} {% endfor %}{% else %}N/A{% endif %} |
{{ "{:,.0f}".format(contrib.throttles) }} |