我正在关注 this有关在 .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>();
}
}
我相信这意味着我可以将一个客户端对象注入(inject)到一个将使用 app.settings 值的类中。我正在尝试注入(inject)对象并像这样进行 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);
}
}
目前,当我尝试执行此操作时,应用程序会在尝试注入(inject) S3Client 时挂起。最初,我并没有尝试注入(inject) S3Client,而是在我的 FileUploaded 类中实例化它。当时我遇到了一个错误,因为我没有指定 AccessKey 等,而且我找不到设置它的方法。
我做错了什么?
最佳答案
看起来我应该在我的应用程序设置中只包含 Region
和 Profile
。配置文件应使用信息 here 生成.
关于c# - 在 .NET Core 中配置 AWS S3 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46854213/