3

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 のデフォルトの場所にあります。

4

4 に答える 4