きなこもち.net

.NET Framework × UiPath,Orchestrator × Azure × AWS × Angularなどの忘備録

.net core × Console App × AWS SDK を手っ取り早く使いたいときのテンプレ

Topic

コンソールアプリでサクッとAWS SDKを利用する時の構成。

やること

  • コンソールアプリの作成
  • appsettings.jsonファイルの追加
  • appsettings.jsonファイルにAWS設定を追加。今回はサンプルをそのまま利用して、ローカル環境のAWS Credentialsファイルに設定されているlocal-test-profileプロファイルを利用することを想定した設定とした。
  "AWS": {
    "Profile": "local-test-profile",
    "Region": "us-west-2"
  }
  • 必要なNuget Packageをインストールする。
  <ItemGroup>
    <PackageReference Include="AWSSDK.Extensions.NETCore.Setup" Version="3.7.2" />
    <PackageReference Include="AWSSDK.S3" Version="3.7.102.1" />
    <PackageReference Include="Microsoft.Extensions.Configuration" Version="7.0.0" />
    <PackageReference Include="Microsoft.Extensions.Hosting" Version="7.0.0" />
  </ItemGroup>
  • Program.csに処理を実装する。
using Amazon.S3;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System.Configuration;

class Program
{
    private readonly IAmazonS3 _amazonS3;

    public Program(IAmazonS3 amazonS3)
    {
        _amazonS3 = amazonS3;
    }
    static void Main(string[] args)
    {
        Host.CreateDefaultBuilder(args)
            .ConfigureServices((context, services) =>
            {
                services.AddDefaultAWSOptions(context.Configuration.GetAWSOptions());
                services.AddAWSService<IAmazonS3>();
                services.AddTransient<Program>();
            })
            .Build().Services
            .GetRequiredService<Program>()
            .Run(args);
    }

    public void Run(string[] args)
    {
        //anything....
        var allKeys = _amazonS3.GetAllObjectKeysAsync("bucket name", "prefix", null).Result;
    }
}

参考

https://docs.aws.amazon.com/ja_jp/sdk-for-net/v3/developer-guide/net-dg-config-netcore.html https://www.nuget.org/packages/AWSSDK.Extensions.NETCore.Setup/#dependencies-body-tab