数回クリックするだけで .NET アプリケーションを AWS にデプロイしたいと思いませんか? シンプルなデプロイエクスペリエンスを実現する、新しい .NET CLI ツール
Ourオリジナルのブログ投稿
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWSSDK.Extensions.NETCore.Setup および ICONFiguration インターフェイスの使用
(このトピックは、以前は「の設定」というタイトルでした。AWS SDK for .NET.NET Core」)
.NET Core の最大の変更点の 1 つは、ConfigurationManager
と標準app.config
そしてweb.config
.NET Framework および ASP.NET アプリケーションで使用されていたファイル。
.NET Core の設定は、設定プロバイダによって確立されたキーと値のペアに基づいています。設定プロバイダーは、コマンドライン引数、ディレクトリファイル、環境変数、設定ファイルなど、さまざまな設定ソースから設定データをキーと値のペアを読み取ります。
詳細については、「ASP.NET Core の設定
使いやすくするためにAWS SDK for .NET.NET Core を使用すると、AWSSDK.Extensions.NETCore.SetupIConfiguration
取得するためのインターフェイスAWSシームレスな構成。
AWSSDK.Extensions.NETCore.Setup の使用
ASP.NET コアモデルビューコントローラ (MVC) アプリケーションを作成するとします。これは、ASP.NET Core Web アプリケーションVisual Studio または実行してテンプレートdotnet new mvc ...
.NET Core CLI を使用します。このようなアプリケーションを作成する場合、のコンストラクタStartup.cs
次のような設定プロバイダからさまざまな入力ソースを読み込んで、設定を処理します。appsettings.json
。
public Startup(IConfiguration configuration) { Configuration = configuration; }
♪Configuration
オブジェクトを取得するオブジェクトAWSオプション、まずAWSSDK.Extensions.NETCore.Setup
NuGet パッケージです。次に、次に説明するように、設定ファイルにオプションを追加します。
プロジェクトに追加されたファイルの 1 つはappsettings.Development.json
。これは、EnvironmentName
に設定する開発。開発時には、このファイルに構成を入れて、ローカルテスト中にのみ読み込まれます。次の Amazon EC2 インスタンスをデプロイする場合EnvironmentName
に設定する本番稼働用の場合、このファイルは無視され、AWS SDK for .NETAmazon EC2 インスタンスに設定された IAM 認証情報およびリージョンにフォールバックします。
次の設定は、に追加できる値の例を示しています。appsettings.Development.json
プロジェクト内のファイルを指定するAWS[] 設定。
{ "AWS": { "Profile": "local-test-profile", "Region": "us-west-2" }, "SupportEmail": "TechSupport@example.com" }
の設定にアクセスするにはCSHTMLファイル、Configuration
ディレクティブ。
@using Microsoft.Extensions.Configuration @inject IConfiguration Configuration <h1>Contact</h1> <p> <strong>Support:</strong> <a href='mailto:@Configuration["SupportEmail"]'>@Configuration["SupportEmail"]</a><br /> </p>
にアクセスするにはAWSファイルで設定されたオプションは、コードからファイルに設定されている場合は、GetAWSOptions
拡張メソッドが追加されましたIConfiguration
。
これらのオプションからサービスクライアントを構築するには、CreateServiceClient
を呼び出します。次の例では、Amazon S3 サービスクライアントを作成する方法を示します。(必ずAWSSDK.S3
var options = Configuration.GetAWSOptions(); IAmazonS3 client = options.CreateServiceClient<IAmazonS3>();
で複数のエントリを使用して、互換性のない設定を持つ複数のサービスクライアントを作成することもできます。appsettings.Development.json
ファイル。次の例に示すように、の設定は次のとおりです。service1
を含むus-west-2
のリージョンと設定service2
特別なエンドポイントを含むURL。
{ "service1": { "Profile": "default", "Region": "us-west-2" }, "service2": { "Profile": "default", "ServiceURL": "URL" } }
その後、JSON ファイルのエントリを使用することで、特定のサービスのオプションを取得できます。たとえば、の設定を取得するには、次のようにします。service1
以下のを使用します。
var options = Configuration.GetAWSOptions("service1");
appsettings ファイルで許可される値
appsettings.Development.json
ファイルには次のアプリケーション設定値を設定できます。フィールド名には、表示されている大文字小文字を区別して使用する必要があります。これらの設定の詳細については、「」を参照してください。AWS.Runtime.ClientConfig
クラス。
-
Region
-
Profile
-
ProfilesLocation
-
SignatureVersion
-
RegionEndpoint
-
UseHttp
-
ServiceURL
-
AuthenticationRegion
-
AuthenticationServiceName
-
MaxErrorRetry
-
LogResponse
-
BufferSize
-
ProgressUpdateInterval
-
ResignRetries
-
AllowAutoRedirect
-
LogMetrics
-
DisableLogging
-
UseDualstackEndpoint
ASP.NET Core 依存関係インジェクション
AWSSDK.Extensions.NETCore.Setup NuGet パッケージにも、ASP.NET Core の新しい依存関係インジェクションシステムが組み込まれています。-ConfigureServices
アプリケーションのメソッドStartup
クラスは MVC サービスが追加されている場所です。アプリケーションが Entity Framework を使用している場合は、これが初期化される場所でもあります。
public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddMvc(); }
.NET Core の依存関係インジェクションの背景については、.NET Core ドキュメントサイト
-AWSSDK.Extensions.NETCore.Setup
NuGet パッケージは、新しい拡張メソッドをIServiceCollection
追加するために使用できることAWS依存性注入へのサービス。次のコードは、の追加方法を示しています。AWS読み込まれたオプションIConfiguration
をクリックして、Amazon S3 および DynamoDB をサービスのリストに追加します。(必ずAWSSDK.S3
public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddMvc(); services.AddDefaultAWSOptions(Configuration.GetAWSOptions()); services.AddAWSService<IAmazonS3>(); services.AddAWSService<IAmazonDynamoDB>(); }
ここで、MVC コントローラがコンストラクタで IAmazonS3
または IAmazonDynamoDB
のいずれかをパラメータとして使用している場合、依存関係インジェクションシステムはこれらのサービスを渡します。
public class HomeController : Controller { IAmazonS3 S3Client { get; set; } public HomeController(IAmazonS3 s3Client) { this.S3Client = s3Client; } ... }