Accessing OpenAI GPT models on Amazon Bedrock with global cross-Region inference in Thailand, Malaysia, Singapore, Indonesia, and Taiwan

Single-Region inference can throttle when demand exceeds local capacity. Teams in Thailand, Malaysia, Singapore, Indonesia, and Taiwan need access to the newest OpenAI models beyond that capacity. Amazon Bedrock offers OpenAI GPT-6 Sol and GPT-6 Luna through global cross-Region inference from all five AWS Regions, and GPT-6 Astra from Asia Pacific (Singapore). This post shows you how to configure the call, set permissions, and monitor inference from your source Region. GPT-6 Sol, GPT-6 Luna, and GPT-6 Astra are all available through global cross-Region inference from the preceding Regions, on the bedrock-runtime endpoint. See Cross-Region inference in the Amazon Bedrock User Guide. For the full list of source and destination Regions in each profile, see Supported Regions and models for inference profiles . In this post, we introduce the global cross-Region inference profiles and invoke them from Asia Pacific (Singapore) using the Converse API, the OpenAI-compatible APIs, and coding clients. We then cover the AWS Identity and Access Management (IAM) and service control policy (SCP) configuration, quota management, and monitoring. Global cross-Region inference profiles for OpenAI GPT-6 The GPT-6 family offers three models, each available through global cross-Region inference. GPT-6 Sol brings strong reasoning and coding capabilities to complex tasks performed throughout the week. GPT-6 Luna makes focused, repeatable tasks practical at high volume. GPT-6 Astra handles complex reasoning, coding, and long-document work. All three accept text and image input, client-side tool use, and prompt caching. They differ on reasoning effort. GPT-6 Sol and GPT-6 Luna accept none, low, medium, high, xhigh, and max. GPT-6 Astra accepts the same levels except none. For GPT-6 Sol and GPT-6 Luna, see Bring more intelligence to everyday work with GPT-6 Sol and GPT-6 Luna on Amazon Bedrock . For GPT-6 Astra, see Take on your most ambitious work with GPT-6 Astra on Amazon Bedrock . Global cross-Region inference routes requests across supported commercial AWS Regions where the model is deployed, giving you broad access to Amazon Bedrock capacity. You invoke it by passing a global cross-Region inference profile ID in place of a model ID. Your source Region is where you make the API call. Amazon Bedrock selects the destination Region for processing. Billing, quota tracking, AWS CloudTrail, and Amazon CloudWatch all stay in your source Region. The following table lists the global cross-Region inference profile IDs and the source Regions covered in this post. Global cross-Region inference profiles Source Regions Destination Regions global.openai.gpt-6-sol global.openai.gpt-6-luna Asia Pacific (Singapore) ap-southeast-1 Asia Pacific (Jakarta) ap-southeast-3 Asia Pacific (Malaysia) ap-southeast-5 Asia Pacific (Thailand) ap-southeast-7 Asia Pacific (Taipei) ap-east-2 Supported commercial AWS Regions where the model is deployed global.openai.gpt-6-astra Asia Pacific (Singapore) ap-southeast-1 Supported commercial AWS Regions where the model is deployed Inference profile availability and Region support change as AWS adds Regions and profiles, so confirm both on the model card before you build: GPT-6 Sol , GPT-6 Luna , and GPT-6 Astra . For per-token rates, see Amazon Bedrock pricing . Getting started with OpenAI models on Amazon Bedrock Start with the prerequisites, then invoke any of the three profiles through the Converse API, the OpenAI-compatible APIs, or your existing coding client. Prerequisites An IAM identity with permission to invoke the profile. The IAM policy in the Security and permissions section grants only what these examples need. Your source Region activated. Only the Region you call from needs activating. You do not activate destination Regions, which run on Amazon Bedrock managed capacity. Singapore ( ap-southeast-1 ) is a Region that is enabled by default. Jakarta ( ap-southeast-3 ), Malaysia ( ap-southeast-5 ), Thailand ( ap-southeast-7 ), and Taipei ( ap-east-2 ) are opt-in Regions you must activate first. For more information, see Enable or disable AWS Regions in your account . A current AWS SDK or CLI. The OpenAI-compatible examples also require the OpenAI SDK and the Amazon Bedrock token generator. Install them with pip install boto3 openai aws-bedrock-token-generator . The Amazon Bedrock console lists all three global cross-Region inference profiles under system-defined inference profiles. See Figure 1. Figure 1: The three global OpenAI GPT-6 inference profiles among the system-defined profiles in the Amazon Bedrock console Invoke GPT-6 models through Amazon Bedrock Runtime Each model supports three access paths on this endpoint: the Amazon Bedrock Converse API, the OpenAI Responses API, and the OpenAI Chat Completions API. The OpenAI-compatible APIs are called on the /openai/v1 paths rather than through the AWS SDKs, and the endpoint accepts either Signature Version 4 (SigV4) or an Amazon Bedrock API key. Pass the global cross-Region inference profile ID as the model in every case. Converse API. This example calls GPT-6 Sol from Asia Pacific (Singapore) and logs the response. Set BEDROCK_PROFILE_ID to global.openai.gpt-6-luna or global.openai.gpt-6-astra to switch models, or call converse_stream for streaming. import logging import os import boto3 # AWS_REGION overrides this default, so set it to your source Region or unset it. REGION = os.environ.get("AWS_REGION", "ap-southeast-1") PROFILE_ID = os.environ.get("BEDROCK_PROFILE_ID", "global.openai.gpt-6-sol") PROMPT = ( "In three bullet points, explain when a workload should use " "cross-Region inference instead of calling a model in a single Region." ) logging.basicConfig(format="%(levelname)s %(message)s") log = logging.getLogger("bedrock-cris") log.setLevel(logging.INFO) client = boto3.client("bedrock-runtime", region_name=REGION) # AccessDeniedException points at the IAM policy. ValidationException usually # means the model ID is not a global cross-Region inference profile. response = client.converse( modelId=PROFILE_ID, messages=[{"role": "user", "content": [{"text": PROMPT}]}], inferenceConfig={"maxTokens": 1024}, # GPT-6 Sol and Luna accept none through max. GPT-6 Astra rejects none. additionalModelRequestFields={"reasoning": {"effort": "low"}}, ) # Any effort above none can prepend a reasoningContent block, so pick the text # block by key rather than by position. text = "".join(b["text"] for b in response["output"]["message"]["content"] if "text" in b) log.info("Called %s from %s", PROFILE_ID, REGION) log.info("Stop reason: %s", response["stopReason"]) log.info("Response:\n%s", text) OpenAI Chat Completions API. Point the OpenAI SDK at the Regional endpoint and pass the same profile ID. import logging import os from aws_bedrock_token_generator import provide_token from openai import OpenAI REGION = os.environ.get("AWS_REGION", "ap-southeast-1") PROFILE_ID = os.environ.get("BEDROCK_PROFILE_ID", "global.openai.gpt-6-sol") PROMPT = "List three uses for a message queue." logging.basicConfig(format="%(levelname)s %(message)s") log = logging.getLogger("bedrock-cris") log.setLevel(logging.INFO) # provide_token mints a short-term key from your AWS credentials, valid up to 12 hours. client = OpenAI( base_url=f"https://bedrock-runtime.{REGION}.amazonaws.com/openai/v1", api_key=provide_token(region=REGION), ) response = client.chat.completions.create( model=PROFILE_ID, messages=[{"role": "user", "content": PROMPT}], max_completion_tokens=256, ) log.info("Called %s from %s", PROFILE_ID, REGION) log.info("Response:\n%s", response.choices[0].message.content) When migrating an existing OpenAI client: Set the model parameter on every request, including those referencing a previous response. Use supported tool types: function , mcp , custom , namespace , and tool_search . Configure the inference profile ID directly in your client rather than querying the models endpoint. Set up the ChatGPT desktop app and Codex CLI