![](/img/trans.png)
[英]Using AWS SDK on .net with localstack (TransferUtility/S3 - setting endpoint)
[英]How do I force the AWS .NET SDK to utilize the us-east-1 regional endpoint for S3 rather than the legacy global endpoint?
在將 .Net AWS SDK 用於 S3 時,我注意到默認情況下,在與 us-east-1 中的存儲桶通信時,它使用的是舊的全局端點BUCKETNAME.s3.amazonaws.com
而不是區域端點BUCKETNAME.s3.us-east-1.amazonaws.com
。
如何強制 SDK 使用區域端點?
Example.Net 6 代碼:
using Amazon;
using Amazon.Runtime;
using Amazon.S3;
AmazonS3Config config = new Amazon.S3.AmazonS3Config();
config.RegionEndpoint = RegionEndpoint.GetBySystemName("us-east-1");
Console.WriteLine($"S3 Client Service URL: {config.DetermineServiceURL()}");
S3 客戶端服務 URL: https://s3.amazonaws.com/
您需要告訴客戶端明確使用區域端點而不是默認的舊全局端點。
config.USEast1RegionalEndpointValue = S3UsEast1RegionalEndpointValue.Regional;
通過使用此更改修改代碼:
using Amazon;
using Amazon.Runtime;
using Amazon.S3;
AmazonS3Config config = new Amazon.S3.AmazonS3Config();
config.RegionEndpoint = RegionEndpoint.GetBySystemName("us-east-1");
config.USEast1RegionalEndpointValue = S3UsEast1RegionalEndpointValue.Regional;
Console.WriteLine($"S3 Client Service URL: {config.DetermineServiceURL()}");
您現在獲得區域端點服務 url:
S3 客戶端服務 URL: https ://s3.us-east-1.amazonaws.com/
將AmazonS3Config
對象上的USEast1RegionalEndpointValue
屬性設置為S3UsEast1RegionalEndpointValue.Regional
。
這將強制將us-east-1
S3 請求路由到區域端點,而不是傳統的全局端點。
using Amazon;
using Amazon.Runtime;
using Amazon.S3;
AmazonS3Config config = new AmazonS3Config
{
USEast1RegionalEndpointValue = S3UsEast1RegionalEndpointValue.Regional,
RegionEndpoint = RegionEndpoint.USEast1
};
Console.WriteLine($"S3 Client Service URL: {config.DetermineServiceURL()}");
S3 Client Service URL: https://s3.us-east-1.amazonaws.com/
如果您只需將適當的區域傳遞給 S3 客戶端對象的構造函數,則可以更輕松地完成此操作。 例如:
_s3Client = new AmazonS3Client(RegionEndpoint.USEast1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.