|
64 | 64 | DATES AND DATA FRESHNESS (all three operations): |
65 | 65 | - start_date must be within the last 13 months (the Cost Explorer lookback); an |
66 | 66 | older start_date returns a ValidationException. |
67 | | -- Savings Plans data lags roughly one day. A window whose end_date is today (an |
68 | | - incomplete UTC day) commonly comes back as a DataUnavailableException with an |
69 | | - empty message. Set end_date to exclude today (end_date is exclusive), then the |
70 | | - window resolves. A DataUnavailableException means there is no data for THIS |
71 | | - window (no active plans, or the window is outside the plan period); report none |
72 | | - and do NOT retry the identical request — change the window instead. |
| 67 | +- Savings Plans data for the most recent 2-3 days (counting today) is not processed |
| 68 | + yet: yesterday is usually still missing, so excluding only today is not enough. A |
| 69 | + start_date inside those days returns a DataUnavailableException, which the service |
| 70 | + sends without a message. A window that only reaches into those days succeeds but |
| 71 | + silently leaves them out, so the last entry can end before end_date. A start_date at |
| 72 | + least 3 days before today is usually past that delay. |
| 73 | +- A DataUnavailableException means there is no data for THIS window and filter: the |
| 74 | + window is too recent, no plan was active in it, or a filter value matches nothing |
| 75 | + (an unknown SAVINGS_PLANS_TYPE, for example, returns this error, not a |
| 76 | + ValidationException). Report that no data is available for that window (not zero |
| 77 | + utilization or coverage) and do NOT resend the identical request. Correct an unknown |
| 78 | + filter value; query an earlier window only if the question allows it. |
73 | 79 |
|
74 | 80 | UTILIZATION DETAILS filters (get_savings_plans_utilization_details): |
75 | 81 | - filter accepts LINKED_ACCOUNT, SAVINGS_PLAN_ARN, REGION, PAYMENT_OPTION, |
@@ -126,7 +132,7 @@ async def sp_performance( |
126 | 132 | ctx: The MCP context object |
127 | 133 | operation: The operation to perform: 'get_savings_plans_coverage', 'get_savings_plans_utilization', or 'get_savings_plans_utilization_details' |
128 | 134 | start_date: Start date in YYYY-MM-DD format (inclusive). Defaults to 30 days ago if not provided. Must be within the last 13 months. |
129 | | - end_date: End date in YYYY-MM-DD format (exclusive). Defaults to today if not provided. Savings Plans data lags ~1 day; a window ending today may return an empty-message DataUnavailableException, so set end_date to exclude today. |
| 135 | + end_date: End date in YYYY-MM-DD format (exclusive). Defaults to today if not provided. Savings Plans data for the last 2-3 days (counting today) is not processed yet: a start_date in those days returns a DataUnavailableException, and a window reaching into them leaves them out. |
130 | 136 | granularity: Time granularity of the data (DAILY or MONTHLY). Defaults to DAILY. For coverage, ignored when group_by is provided (granularity and group_by are mutually exclusive). |
131 | 137 | metrics: List of metrics to retrieve as a JSON string. For coverage, only 'SpendCoveredBySavingsPlans' is valid. |
132 | 138 | group_by: Optional grouping of results as a JSON string. For coverage, supports SERVICE, REGION, or INSTANCE_FAMILY (NOT LINKED_ACCOUNT). Each entry is {"Type": ..., "Key": ...}; there is no "Value" field. |
|
0 commit comments