【发布时间】:2021-03-16 10:39:32
【问题描述】:
我正在互联网上搜索如何通过 API 调用或直接在 PHP 中使用他们的库获取 AWS s3 存储桶区域,但没有找到相关信息。
我有以下可用信息: 帐户凭据、存储桶名称、访问密钥 + 秘密。那是针对我可以访问的多个存储桶,并且我需要以编程方式获取该区域,因此登录到 aws 控制台并签出不是一种选择。
【问题讨论】:
标签: amazon-web-services amazon-s3 aws-php-sdk
我正在互联网上搜索如何通过 API 调用或直接在 PHP 中使用他们的库获取 AWS s3 存储桶区域,但没有找到相关信息。
我有以下可用信息: 帐户凭据、存储桶名称、访问密钥 + 秘密。那是针对我可以访问的多个存储桶,并且我需要以编程方式获取该区域,因此登录到 aws 控制台并签出不是一种选择。
【问题讨论】:
标签: amazon-web-services amazon-s3 aws-php-sdk
假设您在 $client 中有一个 AWS PHP 客户端实例,您应该能够通过 $client->getBucketLocation() 找到该位置。
下面是一些示例代码:
<?php
$result = $client->getBucketLocation([
'Bucket' => 'yourBucket',
]);
结果将如下所示
[
'LocationConstraint' => 'the-region-of-your-bucket',
]
【讨论】:
getBucketLocation() 的调用与存储桶无关。您可以在AWS Regions and Endpoints 找到可用区域列表。
当您创建 S3 客户端时,您可以使用 AWS 中的任何可用区域,即使它不是您使用的区域。
$s3Client = new Aws\S3\S3MultiRegionClient([
'version' => 'latest',
'region' => 'us-east-1',
'credentials' => [
'key' => $accessKey,
'secret' => $secretKey,
],
]);
$region = $s3Client->determineBucketRegion($bucketname);
【讨论】: