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), the in. 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:InvokeModel on 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

Dates come from official provider pages. Always confirm on the linked source.