【发布时间】:2018-08-21 00:38:59
【问题描述】:
我正在 Windows 笔记本电脑上使用 .NET Core 2 开发 Web api。我正在尝试访问我的 S3 存储桶并收到拒绝访问错误。
有趣的是它可以与 AWS CLI 一起使用。
我的 appSettings.Development.json 文件:
"AWS": {
"Profile": "my-profile",
"Region": "us-east-1"
}
Startup.cs 文件:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
var options = Configuration.GetAWSOptions();
services.AddDefaultAWSOptions(Configuration.GetAWSOptions());
services.AddAWSService<IAmazonS3>();
}
BucketController.cs 文件:
public async Task<IEnumerable<string>> Get()
{
// List all objects
ListObjectsRequest listRequest = new ListObjectsRequest
{
BucketName = "shel-bucket"
};
ListObjectsResponse listResponse;
do
{
// Get a list of objects
listResponse = await _client.ListObjectsAsync(listRequest);
foreach (S3Object obj in listResponse.S3Objects)
{
Console.WriteLine("Object - " + obj.Key);
Console.WriteLine(" Size - " + obj.Size);
Console.WriteLine(" LastModified - " + obj.LastModified);
Console.WriteLine(" Storage class - " + obj.StorageClass);
}
// Set the marker property
listRequest.Marker = listResponse.NextMarker;
} while (listResponse.IsTruncated);
return null;
}
我得到的错误是 AmazonS3Exception: Access Denied。
当我从 AWS CLI 执行此操作时,它可以工作。
aws --profile my-profile s3 ls shel-bucket
PRE test1/
PRE images/
PRE projects/
PRE test4/
我的凭据和配置文件位于 .aws 中的默认位置。
【问题讨论】:
-
是公共存储桶还是私有存储桶?
-
您是否尝试过在配置文件中使用您的访问密钥和秘密来查看配置文件是否未正确导入?你的桶在 us-east-1 吗?
-
@tura08 - 这是私人的
-
你是如何提供你的 accessKey/secretKey 的?
-
@programmerj 所以我最终在代码本身中硬编码凭据并且工作正常。
标签: .net amazon-s3 asp.net-core aws-sdk aws-sdk-net