{"record":{"id":"79cb2fd3f197515b","repo":"openai/openai-python","slug":"the-bedrock-aws-region-is-invalid-use-a-standar","errorCode":null,"errorMessage":"The Bedrock AWS `region` is invalid. Use a standard AWS region such as `us-east-1`.","messagePattern":"The Bedrock AWS `region` is invalid\\. Use a standard AWS region such as `us-east-1`\\.","errorType":"error_code","errorClass":"OpenAIError","httpStatus":null,"severity":"error","filePath":"src/openai/providers/bedrock.py","lineNumber":79,"sourceCode":"    return \"amazonaws.com\", \"api.aws\"\n\n\ndef _parse_bedrock_endpoint_hostname(hostname: str) -> tuple[BedrockEndpoint, str] | None:\n    service, separator, remainder = hostname.removesuffix(\".\").lower().partition(\".\")\n    region, region_separator, suffix = remainder.partition(\".\")\n    if not separator or not region_separator or _AWS_REGION.fullmatch(region) is None:\n        return None\n\n    if service == \"bedrock-mantle\" and suffix == \"api.aws\":\n        return \"mantle\", region\n    if service in {\"bedrock-runtime\", \"bedrock-runtime-fips\"} and suffix in _runtime_dns_suffixes(region):\n        return \"runtime\", region\n    return None\n\n\ndef _validate_bedrock_region(region: str | None) -> None:\n    if region is not None and _AWS_REGION.fullmatch(region) is None:\n        raise OpenAIError(\"The Bedrock AWS `region` is invalid. Use a standard AWS region such as `us-east-1`.\")\n\n\ndef _validate_canonical_bedrock_endpoint(\n    base_url: httpx2.URL, *, endpoint: BedrockEndpoint, region: str | None\n) -> None:\n    canonical_endpoint = _parse_bedrock_endpoint_hostname(base_url.host)\n    if canonical_endpoint is None:\n        return\n\n    canonical_family, canonical_region = canonical_endpoint\n    if base_url.scheme != \"https\":\n        raise OpenAIError(\"Canonical Amazon Bedrock endpoints require HTTPS.\")\n    if canonical_family != endpoint:\n        raise OpenAIError(\n            f\"The Bedrock {canonical_family} hostname does not match the selected `{endpoint}` endpoint. \"\n            f\"Set `endpoint='{canonical_family}'` to use this hostname.\"\n        )\n    if region is not None and canonical_region != region:","sourceCodeStart":61,"sourceCodeEnd":97,"githubUrl":"https://github.com/openai/openai-python/blob/9917c6e28e66e90e1227b3d223c06a8c5441515a/src/openai/providers/bedrock.py#L61-L97","documentation":"The Bedrock provider validates the AWS region against a standard region pattern (e.g. `us-east-1`, `eu-central-1`) and throws this OpenAIError when the supplied region string does not match. This catches typos and non-existent regions before a request is ever signed or sent.","triggerScenarios":"Calling `bedrock(region=...)` or `configure()` with a malformed region such as `us_east_1`, `USEast1`, `us-east-1a` (an AZ id), or an empty string; or setting AWS_REGION to such a value.","commonSituations":"Copy-pasting an availability-zone id instead of a region; using underscores; trailing whitespace; environment variables from a custom AWS setup with arbitrary values.","solutions":["Pass a standard AWS region name, e.g. `region=\"us-east-1\"`.","Check and correct the AWS_REGION / AWS_DEFAULT_REGION environment variable.","Strip whitespace and remove underscores/zone suffixes from the value."],"exampleFix":"// before\nprovider = bedrock(region=\"us_east_1\")\n\n// after\nprovider = bedrock(region=\"us-east-1\")","handlingStrategy":"validation","validationCode":"import re\nAWS_REGION = re.compile(r\"^(us|eu|ap|ca|cn|sa|af|me|il)-[a-z]+-\\d+$\")\nassert AWS_REGION.fullmatch(region or \"\"), f\"invalid region: {region!r}\"","typeGuard":"def is_valid_aws_region(r: str | None) -> bool:\n    import re\n    return r is not None and re.fullmatch(r\"(us|eu|ap|ca|cn|sa|af|me|il)-[a-z]+-\\d+\", r) is not None","tryCatchPattern":"try:\n    provider = bedrock(region=region)\nexcept OpenAIError as e:\n    if \"region\" in str(e):\n        region = \"us-east-1\"\n        provider = bedrock(region=region)\n    else:\n        raise","preventionTips":["Source regions from botocore's session.region_name rather than hand-typed strings.","Validate region strings at config-load time in CI.","Use AWS_REGION consistently instead of ad-hoc constants."],"tags":["bedrock","aws","region","config"],"backgroundTag":"invalid-aws-region","analyzedSha":"9917c6e28e66e90e1227b3d223c06a8c5441515a","analyzedAt":"2026-08-28T11:46:34.183Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}