Почему region_name требуется для некоторых сервисов aws в boto3.client при использовании региональной конечной точки?

#amazon-web-services #boto3 #aws-regions

#amazon-web-services #boto3 #aws-регионы

Вопрос:

Зачем нам нужно указывать region_name, если мы уже используем региональные конечные точки?

А также, если я не укажу region_name для sqs, это выдаст ошибку (NoRegionError : You must specify a region) . При создании клиента для s3 region_name не требуется.

 client = boto3.client(
    "sqs",
    aws_access_key_id=key_id,
    aws_secret_access_key=secret_key,
    aws_session_token=token,
    endpoint_url="https://sqs.us-east-1.amazonaws.com",
    region_name="us-east-1",  # For some reason region name is required here
)

client = boto3.client(
    "s3",
    aws_access_key_id=key_id,
    aws_secret_access_key=secret_key,
    aws_session_token=token,
    endpoint_url="https://s3.ap-south-1.amazonaws.com", # While this works perfect
    )
 

Комментарии:

1. Потому region_name что используется для создания URL-адреса конечной точки в botocore, но это не наоборот.

2. S3 существовал до того, как в AWS было несколько регионов. Я предполагаю обратную совместимость.