在.NET Core中配置AWS S3客户端

在.NET Core中配置AWS S3客户端

问题描述:

我正在关注在.NET Core中配置AWS SDK的this指南,以将文件上传到S3存储桶。在.NET Core中配置AWS S3客户端

我app.settings.json文件包含此:

{ 
    "AWS": { 
    "Region": "us-west-1", 
    "AccessKey": "access_key", 
    "SecretKey": "secret_key" 
    } 
    ... 
} 

这里是我的启动类:

public class Startup 
{ 
    public IContainer ApplicationContainer { get; private set; } 
    public IConfiguration Configuration { get; } 

    public Startup(IHostingEnvironment env) 
    { 
     var builder = new ConfigurationBuilder() 
      .SetBasePath(env.ContentRootPath) 
      .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) 
      .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) 
      .AddEnvironmentVariables(); 
     Configuration = builder.Build(); 
    } 

    public IServiceProvider ConfigureServices(IServiceCollection services) 
    { 
     services.AddOptions(); 
     services.AddMvc(); 
     services.AddDefaultAWSOptions(Configuration.GetAWSOptions()); 
     services.AddAWSService<IAmazonS3>(); 
    } 
} 

我相信,这意味着我可以注入客户对象为一类会使用app.settings值。我试图注入对象并作出S3调用是这样的:

public class FileUploader 
{ 
    private readonly IAmazonS3 client; 

    public FileUploader(IAmazonS3 client) 
    { 
     this.client = client; 
    } 

    public async Task Upload() 
    { 
     var request = new PutObjectRequest 
     { 
      BucketName = "bucketName", 
      Key = "Test", 
      FilePath = "test_file.txt", 
      ContentType = "text/plain" 
     }; 

     var cancellationToken = new CancellationToken(); 
     var response = await client.PutObjectAsync(request, cancellationToken); 
    } 
} 

目前,当我试图这样做,应用程序时,它会尝试注入S3Client挂起。最初,我并没有试图注入S3Client,而是在我的FileUploaded类中实例化它。我得到一个错误,然后因为我没有指定AccessKey等,我找不到方法来设置它。

我在做什么错?

+0

你的班级名称和功能不同,是一个错字。 “声明中引入的字段的赋值只能作为声明的一部分或在同一个类的构造函数中出现。” –

看起来我应该在我的appsettings中只包括RegionProfile。该配置文件应该使用信息here生成。