

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 配置参数存储
<a name="configure-store"></a>

参数存储是一项功能 AWS Systems Manager。它可提供安全的分层存储，用于配置数据管理和密钥管理。您可以将密码、数据库字符串、Amazon 系统映像 (AMI) IDs 和许可代码等数据存储为参数值。

## 在.NET 框架应用程序中使用参数存储的先决条件
<a name="configure-store-prereq"></a>
+ 活跃的 AWS 账户
+ 已安装@@ [微软 Visual Studio](https://visualstudio.microsoft.com/downloads/)
+ AWS Command Line Interface (AWS CLI) 版本 2，已安装并配置为访问您的 AWS 账户 （参见[说明](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)）
+ AWS Toolkit for Visual Studio，已配置（参见[说明](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/setup.html)）
+ Systems Manager 参数，使用 S [ecrets Manager 控制台](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-create-console.html)或 [AWS CLI](https://docs.aws.amazon.com/systems-manager/latest/userguide/param-create-cli.html)

## 示例
<a name="configure-store-example"></a>

要从 ASP.NET Core Web 应用程序或 API 中的参数存储中检索值，请执行以下操作：

1. 将以下 NuGet 软件包添加到 ASP.NET Core Web API。

   ```
   Amazon.Extensions.Configuration.SystemsManager
   ```

1. 在`Program.cs`文件中，进行以下更改。
   + 添加`using`语句 (1)。

     ```
     using Amazon;
     using Amazon.Extensions.NETCore.Setup;
     ```
   + 添加 AWS Systems Manager 配置 (2)。

     ```
     builder.Configuration.AddSystemsManager("/dev/myapp", new AWSOptions
     {
         Region = RegionEndpoint.EUWest2
     });
     ```  
![\[对用于访问参数存储区的 Program.cs 文件所做的更改\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/modernization-net-applications-security/images/ps-program-cs.png)
**注意**  
您应该动态调用`/myapp/dev`和`RegionEndPoint`参数，或者从环境变量 (`Region = RegionEndpoint.GetBySystemName("eu-west-2")`) 中调用。不要在生产环境中对这些值进行硬编码。

1. 创建一个新的类文件并将其命名`ParameterOptions.cs`。打开文件并添加以下代码。

   ```
   public class ParameterOptions
       {
           public const string ParameterName = "Tenant";
           public string key1 { get; set; } = string.Empty;
           public string key2 { get; set; } = string.Empty;
       }
   ```

1. 要从 Parameter Store 检索值，请对控制器类文件进行以下更改（例如`ValuesController.cs`）。
   + 添加构造函数 (1)。

     ```
     private readonly IConfiguration _configuration;
     public ParametersController(IConfiguration configuration)
     {
         _configuration = configuration;
     }
     ```
   + 从参数存储 (2) 中检索值。

     ```
     var parameterOptions = new ParameterOptions();
     _configuration.GetSection(ParameterOptions.ParameterName).Bind(parameterOptions);
     
     return new string[] {
         parameterOptions.key1,
         parameterOptions.key2
     };
     ```  
![\[对用于从参数存储中检索值的控制器类文件的更改\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/modernization-net-applications-security/images/ps-controller-class.png)

## 资源
<a name="configure-store-resources"></a>
+ [AWS Secrets Manager 轮换 Lambda 函数（存储](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas)库）GitHub 
+ AWS S@@ [ystems Manager 的.NET 配置扩展，示例文件夹](https://github.com/aws/aws-dotnet-extensions-configuration/tree/master/samples/Samples)（GitHub存储库）
+ [如何在.NET 中使用 Secrets Manager 客户端缓存](https://aws.amazon.com/blogs/security/how-to-use-aws-secrets-manager-client-side-caching-in-dotnet/)（AWS 安全博客）