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

标签 c# amazon-web-services amazon-s3 aws-sdk

我正在关注 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 等,而且我找不到设置它的方法。

我做错了什么?

最佳答案

看起来我应该在我的应用程序设置中只包含 RegionProfile。配置文件应使用信息 here 生成.

关于c# - 在 .NET Core 中配置 AWS S3 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46854213/

相关文章:

c# - 使用 OWIN 在 ASP.NET MVC 5 应用程序中存储和检索 facebook 访问 token

c# - 使用 MVC 为 View 中 foreach 循环内的表生成随机 ID

c# - 我如何获得巴哈马的地区和文化信息?

php - 如何在我的网站上显示来 self 的 Amazon S3 的图像?

python - 如何在 Jupyter 笔记本中将 python 文件作为模块导入?

reactjs - 如何 S3 + Cloudfront + 2 SPA 响应子文件夹中的应用程序?

amazon-web-services - S3 通知在其他区域调用 sns 主题

c# - Dictionary的序列化修改部分key为小写

mysql - .local(drv, ...) 中的错误 : Failed to connect to database: Error: Unknown database 'database1'

node.js - 将图像从 URL 保存到 node.js 中的 S3