簡體   English   中英

如何獲取 boto3 S3 資源實例的區域

[英]How to get the region of a boto3 S3 resource instance

我像這樣實例化一個 boto3 S3 resource (代碼簡化):

import os
from pathlib import Path
import boto3


s3_resource = boto3.resource(
    "s3",
    aws_access_key_id=os.getenv("AWS_ACCESS_KEY_ID"),
    aws_secret_access_key=os.getenv("AWS_SECRET_ACCESS_KEY"),
    # NOTE: My config is:
        # [default]
        # region = eu-west-1
    region_name=os.getenv("region_name"),
)

如何獲取 S3 資源關聯的區域? 是否有我可以查詢的 class / 實例的屬性?

我檢查了 S3 服務資源 object 的 boto3 文檔,但找不到這樣的屬性。 我還檢查了這個相關問題,但它與來自 boto3 的client而不是resource object 相關。

上下文:我想檢查該區域,以便我可以確保讀取我的 ~/.aws/config 以提供該區域,因為檢查什么os.getenv("region_name")返回None因為我沒有這樣的環境變量。 如果你也能回答這個問題,那就是加分項了。 如代碼中所述,我的配置指向eu-west-1區域。

我不熟悉在 Python 中以編程方式使用 S3(我主要使用 AWS CLI),因此如有必要,請建議對問題進行編輯。

好吧,每個 boto3 資源在 meta 中都有一個客戶端,所以你可以這樣做:

s3_resource.meta.client._client_config.region_name

您可以通過 AWS 控制台 (UI) 檢查該區域。 轉到:S3 --> --> 屬性選項卡,您將看到存儲桶的“AWS 區域”:

在此處輸入圖像描述

編輯:根據您的評論,也許您正在尋找get_bucket_location

返回存儲桶所在的區域。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM