Shutdown: Thursday, Nov 13, 2026. AWS Bedrock ends five legacy Anthropic models in the Regions listed below: Claude 3 Sonnet, Claude 3.5 Sonnet (v1 and v2), Claude 3.7 Sonnet and Claude 3 Haiku. In ca-central-1, Claude 3 Sonnet and Claude 3 Haiku follow on Nov 27, 2026. After EOL, requests to these IDs fail, and AWS does not migrate you automatically.
Free AI model shutdown alerts: get an email only when a model you might use is being retired. No digest, no spam. Subscribe at aideprecations.com/subscribe (double opt-in).
Affected model IDs (from AWS)
| Bedrock model ID | Regions (per AWS) | EOL date | Suggested move (Anthropic's mapping) |
|---|---|---|---|
anthropic.claude-3-5-sonnet-20240620-v1:0 | ap-northeast-2, ap-south-1, ap-southeast-1 | Nov 13, 2026 | Claude Sonnet 5.5 |
anthropic.claude-3-5-sonnet-20241022-v2:0 | ap-northeast-2, ap-south-1, ap-southeast-1 | Nov 13, 2026 | Claude Sonnet 5.5 |
anthropic.claude-3-7-sonnet-20250219-v1:0 | ap-south-1, eu-west-2 | Nov 13, 2026 | Claude Sonnet 5.5 |
anthropic.claude-3-sonnet-20240229-v1:0 | ap-south-1, ap-southeast-1, eu-west-2, sa-east-1 | Nov 13, 2026 | Claude Sonnet 5.5 |
anthropic.claude-3-haiku-20240307-v1:0 | ap-northeast-2, ap-south-1, ap-southeast-1, eu-central-2, sa-east-1 | Nov 13, 2026 | Claude Haiku 4.5 |
anthropic.claude-3-sonnet-20240229-v1:0 | ca-central-1 | Nov 27, 2026 | Claude Sonnet 5.5 |
anthropic.claude-3-haiku-20240307-v1:0 | ca-central-1 | Nov 27, 2026 | Claude Haiku 4.5 |
Source: AWS Bedrock Model lifecycle (Legacy), "Models with a scheduled EOL date" (read Nov 10, 2026). For Bedrock, only AWS's dates apply, not Anthropic's API dates.
- Regions matter. AWS lists these dates per Region. A Region missing from a row isn't covered by this announcement, and that doesn't mean the model stays available there.
- Before EOL: AWS warns that existing customers may lose access to Legacy models after 15 days of inactivity, and you can't create new Provisioned Throughput on a Legacy model.
Recommended replacements
AWS's lifecycle page doesn't name a replacement. Anthropic's model deprecations page maps the same models (on its own API) as follows. Both targets are Active on Bedrock.
| Old model | Move to | Bedrock IDs (AWS model card) |
|---|---|---|
| Claude 3 Sonnet, 3.5 Sonnet (v1, v2), 3.7 Sonnet | Claude Sonnet 5.5 | anthropic.claude-sonnet-5-5; geo us. / eu. / au.anthropic.claude-sonnet-5-5; global.anthropic.claude-sonnet-5-5 (card) |
| Claude 3 Haiku | Claude Haiku 4.5 | Profiles only: us. / eu. / au. / jp. / in.anthropic.claude-haiku-4-5-20251001-v1:0, global.anthropic.claude-haiku-4-5-20251001-v1:0 (card) |
Newer option for Haiku workloads: Claude Haiku 5.5 (anthropic.claude-haiku-5-5, card). Anthropic's mapping names Haiku 4.5, so test both if cost matters.
Step 1: Find every place you call these IDs
rg -n --hidden -g '!node_modules' -e 'claude-3-(5-|7-)?sonnet' -e 'claude-3-haiku' . rg -n --hidden -g '*.{yml,yaml,json,toml,tf,tfvars}' -g '.env*' -e 'anthropic\.claude-3' . Catch prefixed forms too (us., eu., apac. inference-profile IDs and ARNs). Check Lambda env vars, Step Functions, Bedrock Agents / Knowledge Bases / Flows, CloudFormation/CDK/Terraform and LLM gateway routing tables.
Step 2: Confirm the lifecycle in each Region you use
for r in ap-south-1 ap-southeast-1 ap-northeast-2 eu-west-2 eu-central-2 sa-east-1 ca-central-1; do echo "$r: $(aws bedrock get-foundation-model --region $r \ --model-identifier anthropic.claude-3-5-sonnet-20241022-v2:0 \ --query 'modelDetails.modelLifecycle.status' --output text 2>&1)" done aws bedrock list-inference-profiles --region ap-south-1 \ --query "inferenceProfileSummaries[?contains(inferenceProfileId,'sonnet-5-5')].inferenceProfileId" Step 3: Swap the model ID (boto3)
Keep the ID in config so rollback is one change. Converse API:
import os, boto3 brt = boto3.client("bedrock-runtime", region_name=os.environ.get("AWS_REGION", "ap-south-1")) # was: "anthropic.claude-3-5-sonnet-20241022-v2:0" MODEL_ID = os.environ.get("BEDROCK_MODEL_ID", "global.anthropic.claude-sonnet-5-5") resp = brt.converse( modelId=MODEL_ID, messages=[{"role": "user", "content": [{"text": "Summarize this ticket in 3 bullets: ..."}]}], inferenceConfig={"maxTokens": 1024}, ) # Newer Claude models can return reasoning blocks first: read only the text blocks. text = "".join(b["text"] for b in resp["output"]["message"]["content"] if "text" in b) InvokeModel (Anthropic Messages body):
import json body = {"anthropic_version": "bedrock-2023-05-31", "max_tokens": 1024, "messages": [{"role": "user", "content": "Summarize this ticket in 3 bullets: ..."}]} resp = brt.invoke_model(modelId=MODEL_ID, body=json.dumps(body)) out = json.loads(resp["body"].read()) text = "".join(b.get("text", "") for b in out["content"] if b["type"] == "text") Step 4: Region and inference-profile notes
- Haiku 4.5 needs a profile ID: per AWS, the bare model ID isn't supported for on-demand throughput on bedrock-runtime. From
ap-south-1(Mumbai), thein.profile is listed on the card. - Sonnet 5.5 geo profiles are listed for US, EU and AU only. From Mumbai, Singapore, Seoul or São Paulo, check the card's Regional availability table;
global.is the listed cross-Region option. - Data residency: geo and global profiles can route requests to other Regions. If you need single-Region processing, confirm In-Region support on the model card first.
- IAM: grant
bedrock:InvokeModelon the inference-profile ARN and the destination foundation-model ARNs; update policies scoped to the old model ARN. - Quotas: check Service Quotas for the new model before moving production traffic.
Step 5: Testing checklist
- Frozen set of real prompts through old and new models: quality, refusals, length, latency.
- Thinking is on by default on Claude Sonnet 5.5 (adaptive thinking, default effort high; the AWS card says
thinking.type: "disabled"is not supported). Re-check latency, output-token cost and code that assumes the first content block is text. - Tool use: validate every tool call against your schemas; re-run agent loops end to end.
- Structured output: parse 100% of responses with your production JSON parser.
- Re-check
maxTokens, stop sequences and temperature settings against the new model card. - Compare cost on the Bedrock pricing page with your own token counts.
- Alert on
ValidationException/ResourceNotFoundException/ access-denied errors.
Step 6: Roll out before Nov 13 and block the old IDs
- Canary 5–10%, then 100%, with the old ID one config change away while it still works.
- After cutover, fail CI if any of the five
anthropic.claude-3*IDs above appears in the repo.
Free alerts + checklist
- Full guide (canonical, updated daily): https://aideprecations.com/guides/aws-bedrock-claude-3-shutdown/
- Subscribe (email only when a model is being retired; also calendar, webhooks, MCP): https://aideprecations.com/subscribe/
- Every Bedrock date: https://aideprecations.com/aws-bedrock/ · Calendar: https://aideprecations.com/calendar/
Dates come from official provider pages. Always confirm on the linked source.