本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 AWSSDK. 設置和圖標設置界面
(本主題之前的標題為「AWS SDK for .NET使用 .NET 核心設定」)
其中一個在 .NET 核心最大的變化是去除ConfigurationManager
和標準app.config
和 web.config
.NET 框架和 ASP.NET 應用程序中使用的文件。
.NET Core 中的配置基於配置提供程序建立的鍵值對。組態提供者會將組態資料從各種組態來源讀入鍵/值組,包括命令列引數、目錄檔案、環境變數和設定檔案。
注意
如需詳細資訊,請參閱 ASP.NET Core 中的組態
若要讓它容易使用AWS SDK for .NET與 .NET 核心,您可以使用 AWSSDK.ExtensionIConfiguration
接口中,以使AWS配置無縫。
使用 AWSSDK. 擴展.
假設您創建一個 ASP.NET 核心模型-視圖-控制器(MVC)的應用程序,它可以通過在 Visual Studio 中的 ASP.NET 核心 Web 應用程序模板或通過在 .NET 核心 CLI dotnet new mvc ...
中運行來完成。當您建立這類應用程式時,建構函Startup.cs
式會從組態提供者讀取各種輸入來源 (例如appsettings.json
.
public Startup(IConfiguration configuration) { Configuration = configuration; }
若要使用Configuration
物件來取得選AWS項,請先新增AWSSDK.Extensions.NETCore.Setup
NuGet 封裝。然後,將您的選項新增至組態檔案,如下所述。
請注意,加入到專案的其中一個檔案是appsettings.Development.json
。這對應於一個EnvironmentName
集合開發。在開發過程中,您將配置放在此文件中,該文件只能在本地測試期間讀取。當您部署EnvironmentName
設定為生產的 Amazon EC2 執行個體時,會忽略此檔案,並AWS SDK for .NET回到針對 Amazon EC2 執行個體設定的 IAM 登入資料和區域。
以下規劃設定展示了您可以在專案中加入至供應AWS設定的appsettings.Development.json
檔案中的值的範例。
{ "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
Region] 和 [的組態service2
包含特殊端點 URL]。
{ "service1": { "Profile": "default", "Region": "us-west-2" }, "service2": { "Profile": "default", "ServiceURL": "URL" } }
然後,您可以使用 JSON 檔案中的項目,取得特定服務的選項。例如,要獲取service1
使用以下內容的設置。
var options = Configuration.GetAWSOptions("service1");
應用程式設定檔案中允許的值
以下應用程式組態的值可以在 appsettings.Development.json
檔案中做設定。欄位名稱必須使用顯示的大小寫。如需這些設定的詳細資訊,請參閱AWS.Runtime.ClientConfig
班級。
-
區域
-
設定檔
-
ProfilesLocation
-
SignatureVersion
-
RegionEndpoint
-
UseHttp
-
ServiceURL
-
AuthenticationRegion
-
AuthenticationServiceName
-
MaxErrorRetry
-
LogResponse
-
BufferSize
-
ProgressUpdateInterval
-
ResignRetries
-
AllowAutoRedirect
-
LogMetrics
-
DisableLogging
-
UseDualstackEndpoint
核心依賴注入
AWSSDK安 NuGet 裝程序包還集成了 ASP.NET 核心一個新的依賴注入系統。應用程式Startup
類別中的ConfigureServices
方法是新增 MVC 服務的位置。如果應用程式是使用實體架構,那麼這也會是初始化的位置。
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 和AWSSDK.
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; } ... }