

# 使用AWS CLI的 Secrets Manager 示例
<a name="cli_secrets-manager_code_examples"></a>

以下代码示例演示如何通过将 AWS Command Line Interface与 Secrets Manager 结合使用，来执行操作和实现常见场景。

*操作是大型程序的代码摘录*，必须在上下文中运行。您可以通过操作了解如何调用单个服务函数，还可以通过函数相关场景的上下文查看操作。

每个示例都包含一个指向完整源代码的链接，您可以从中找到有关如何在上下文中设置和运行代码的说明。

**Topics**
+ [操作](#actions)

## 操作
<a name="actions"></a>

### `batch-get-secret-value`
<a name="secrets-manager_BatchGetSecretValue_cli_topic"></a>

以下代码示例演示了如何使用 `batch-get-secret-value`。

**AWS CLI**  
**示例 1：检索按名称列出的一组密钥的密钥值**  
以下 `batch-get-secret-value` 示例获取三个密钥的密钥值。  

```
aws secretsmanager batch-get-secret-value \
    --secret-id-list MySecret1 MySecret2 MySecret3
```
输出：  

```
{
    "SecretValues": [
        {
            "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret1-a1b2c3",
            "Name": "MySecret1",
            "VersionId": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa",
            "SecretString": "{\"username\":\"diego_ramirez\",\"password\":\"EXAMPLE-PASSWORD\",\"engine\":\"mysql\",\"host\":\"secretsmanagertutorial.cluster.us-west-2.rds.amazonaws.com\",\"port\":3306,\"dbClusterIdentifier\":\"secretsmanagertutorial\"}",
            "VersionStages": [
                "AWSCURRENT"
            ],
            "CreatedDate": "1523477145.729"
        },
        {
            "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret2-a1b2c3",
            "Name": "MySecret2",
            "VersionId": "a1b2c3d4-5678-90ab-cdef-EXAMPLEbbbbb",
            "SecretString": "{\"username\":\"akua_mansa\",\"password\":\"EXAMPLE-PASSWORD\"",
            "VersionStages": [
                "AWSCURRENT"
            ],
            "CreatedDate": "1673477781.275"
        },
        {
            "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret3-a1b2c3",
            "Name": "MySecret3",
            "VersionId": "a1b2c3d4-5678-90ab-cdef-EXAMPLEccccc",
            "SecretString": "{\"username\":\"jie_liu\",\"password\":\"EXAMPLE-PASSWORD\"",
            "VersionStages": [
                "AWSCURRENT"
            ],
            "CreatedDate": "1373477721.124"
        }
    ],
    "Errors": []
}
```
有关更多信息，请参阅《AWS Secrets Manager 用户指南》**中的[批量检索一组密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieving-secrets_batch.html)。  
**示例 2：检索筛选器选择的一组密钥的密钥值**  
以下 `batch-get-secret-value` 示例获取您的账户中名称包含 `MySecret` 的密钥值。按名称筛选区分大小写。  

```
aws secretsmanager batch-get-secret-value \
    --filters Key="name",Values="MySecret"
```
输出：  

```
{
    "SecretValues": [
        {
            "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret1-a1b2c3",
            "Name": "MySecret1",
            "VersionId": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa",
            "SecretString": "{\"username\":\"diego_ramirez\",\"password\":\"EXAMPLE-PASSWORD\",\"engine\":\"mysql\",\"host\":\"secretsmanagertutorial.cluster.us-west-2.rds.amazonaws.com\",\"port\":3306,\"dbClusterIdentifier\":\"secretsmanagertutorial\"}",
            "VersionStages": [
                "AWSCURRENT"
            ],
            "CreatedDate": "1523477145.729"
        },
        {
            "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret2-a1b2c3",
            "Name": "MySecret2",
            "VersionId": "a1b2c3d4-5678-90ab-cdef-EXAMPLEbbbbb",
            "SecretString": "{\"username\":\"akua_mansa\",\"password\":\"EXAMPLE-PASSWORD\"",
            "VersionStages": [
                "AWSCURRENT"
            ],
            "CreatedDate": "1673477781.275"
        },
        {
            "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret3-a1b2c3",
            "Name": "MySecret3",
            "VersionId": "a1b2c3d4-5678-90ab-cdef-EXAMPLEccccc",
            "SecretString": "{\"username\":\"jie_liu\",\"password\":\"EXAMPLE-PASSWORD\"",
            "VersionStages": [
                "AWSCURRENT"
            ],
            "CreatedDate": "1373477721.124"
        }
    ],
    "Errors": []
}
```
有关更多信息，请参阅《AWS Secrets Manager 用户指南》**中的[批量检索一组密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieving-secrets_batch.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [BatchGetSecretValue](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/secretsmanager/batch-get-secret-value.html)。

### `cancel-rotate-secret`
<a name="secrets-manager_CancelRotateSecret_cli_topic"></a>

以下代码示例演示了如何使用 `cancel-rotate-secret`。

**AWS CLI**  
**关闭密钥的自动轮换功能**  
以下 `cancel-rotate-secret` 示例关闭密钥的自动轮换功能。要恢复轮换，请调用 `rotate-secret`。  

```
aws secretsmanager cancel-rotate-secret \
    --secret-id MyTestSecret
```
输出：  

```
{
  "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-a1b2c3",
  "Name": "MyTestSecret"
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[轮换密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [CancelRotateSecret](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/secretsmanager/cancel-rotate-secret.html)。

### `create-secret`
<a name="secrets-manager_CreateSecret_cli_topic"></a>

以下代码示例演示了如何使用 `create-secret`。

**AWS CLI**  
**示例 1：根据 JSON 文件中的凭证创建密钥**  
以下 `create-secret` 示例将根据文件中的凭证创建密钥。有关更多信息，请参阅《AWS CLI 用户指南》**中的[从文件加载 AWS CLI 参数](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-file.html)。  

```
aws secretsmanager create-secret \
    --name MyTestSecret \
    --secret-string file://mycreds.json
```
 的内容`mycreds.json`：  

```
{
  "engine": "mysql",
  "username": "saanvis",
  "password": "EXAMPLE-PASSWORD",
  "host": "my-database-endpoint.us-west-2.rds.amazonaws.com",
  "dbname": "myDatabase",
  "port": "3306"
}
```
输出：  

```
{
  "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-a1b2c3",
  "Name": "MyTestSecret",
  "VersionId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[创建密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html)。  
**示例 2：创建密钥**  
以下 `create-secret` 示例将创建包含两个键值对的密钥。当您在命令 shell 中输入命令时，存在访问命令历史记录或实用程序可以访问您命令参数的风险。如果命令包含密钥的值，就会引起关注。有关更多信息，请参阅《Secrets Manager 用户指南》**中的[降低使用命令行工具存储密钥的风险](https://docs.aws.amazon.com/secretsmanager/latest/userguide/security_cli-exposure-risks.html)。  

```
aws secretsmanager create-secret \
    --name MyTestSecret \
    --description "My test secret created with the CLI." \
    --secret-string "{\"user\":\"diegor\",\"password\":\"EXAMPLE-PASSWORD\"}"
```
输出：  

```
{
  "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-a1b2c3",
  "Name": "MyTestSecret",
  "VersionId": "EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE"
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[创建密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [CreateSecret](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/secretsmanager/create-secret.html)。

### `delete-resource-policy`
<a name="secrets-manager_DeleteResourcePolicy_cli_topic"></a>

以下代码示例演示了如何使用 `delete-resource-policy`。

**AWS CLI**  
**删除附加到密钥的基于资源的策略**  
以下 `delete-resource-policy` 示例将删除附加到密钥的基于资源的策略。  

```
aws secretsmanager delete-resource-policy \
    --secret-id MyTestSecret
```
输出：  

```
{
    "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-a1b2c3",
    "Name": "MyTestSecret"
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[身份验证和访问权限控制](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [DeleteResourcePolicy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/secretsmanager/delete-resource-policy.html)。

### `delete-secret`
<a name="secrets-manager_DeleteSecret_cli_topic"></a>

以下代码示例演示了如何使用 `delete-secret`。

**AWS CLI**  
**示例 1：删除密钥**  
以下 `delete-secret` 示例将删除密钥。您可以使用 `DeletionDate` 恢复密钥，直到 `restore-secret` 响应字段中的日期和时间。要删除复制到其他区域的密钥，请先使用 `remove-regions-from-replication` 删除其副本，然后调用 `delete-secret`。  

```
aws secretsmanager delete-secret \
    --secret-id MyTestSecret \
    --recovery-window-in-days 7
```
输出：  

```
{
    "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-a1b2c3",
    "Name": "MyTestSecret",
    "DeletionDate": 1524085349.095
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[删除密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_delete-secret.html)。  
**示例 2：立即删除密钥**  
以下 `delete-secret` 示例将立即删除密钥而没有恢复时段。您无法恢复此密钥。  

```
aws secretsmanager delete-secret \
    --secret-id MyTestSecret \
    --force-delete-without-recovery
```
输出：  

```
{
    "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-a1b2c3",
    "Name": "MyTestSecret",
    "DeletionDate": 1508750180.309
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[删除密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_delete-secret.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [DeleteSecret](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/secretsmanager/delete-secret.html)。

### `describe-secret`
<a name="secrets-manager_DescribeSecret_cli_topic"></a>

以下代码示例演示了如何使用 `describe-secret`。

**AWS CLI**  
**检索密钥的详细信息**  
以下 `describe-secret` 示例显示密钥的详细信息。  

```
aws secretsmanager describe-secret \
    --secret-id MyTestSecret
```
输出：  

```
{
    "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-Ca8JGt",
    "Name": "MyTestSecret",
    "Description": "My test secret",
    "KmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE",
    "RotationEnabled": true,
    "RotationLambdaARN": "arn:aws:lambda:us-west-2:123456789012:function:MyTestRotationLambda",
    "RotationRules": {
        "AutomaticallyAfterDays": 2,
        "Duration": "2h",
        "ScheduleExpression": "cron(0 16 1,15 * ? *)"
    },
    "LastRotatedDate": 1525747253.72,
    "LastChangedDate": 1523477145.729,
    "LastAccessedDate": 1524572133.25,
    "Tags": [
        {
            "Key": "SecondTag",
            "Value": "AnotherValue"
        },
        {
            "Key": "FirstTag",
            "Value": "SomeValue"
        }
    ],
    "VersionIdsToStages": {
        "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111": [
            "AWSPREVIOUS"
        ],
        "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222": [
            "AWSCURRENT"
        ],
        "a1b2c3d4-5678-90ab-cdef-EXAMPLE33333": [
            "AWSPENDING"
        ]
    },
    "CreatedDate": 1521534252.66,
    "PrimaryRegion": "us-west-2",
    "ReplicationStatus": [
        {
            "Region": "eu-west-3",
            "KmsKeyId": "alias/aws/secretsmanager",
            "Status": "InSync",
            "StatusMessage": "Replication succeeded"
        }
    ]
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/getting-started.html#term_secret)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [DescribeSecret](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/secretsmanager/describe-secret.html)。

### `get-random-password`
<a name="secrets-manager_GetRandomPassword_cli_topic"></a>

以下代码示例演示了如何使用 `get-random-password`。

**AWS CLI**  
**生成随机密码**  
以下 `get-random-password` 示例生成一个长度为 20 个字符的随机密码，其中至少包含一个大写字母、小写字母、数字和标点符号。  

```
aws secretsmanager get-random-password \
    --require-each-included-type \
    --password-length 20
```
输出：  

```
{
    "RandomPassword": "EXAMPLE-PASSWORD"
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[创建和管理密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [GetRandomPassword](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/secretsmanager/get-random-password.html)。

### `get-resource-policy`
<a name="secrets-manager_GetResourcePolicy_cli_topic"></a>

以下代码示例演示了如何使用 `get-resource-policy`。

**AWS CLI**  
**检索附加到密钥的基于资源的策略**  
以下 `get-resource-policy` 示例将检索附加到密钥的基于资源的策略。  

```
aws secretsmanager get-resource-policy \
    --secret-id MyTestSecret
```
输出：  

```
{
    "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-a1b2c3",
    "Name": "MyTestSecret",
    "ResourcePolicy": "{\n\"Version\":\"2012-10-17\",\n\"Statement\":[{\n\"Effect\":\"Allow\",\n
    \"Principal\":{\n\"AWS\":\"arn:aws:iam::123456789012:root\"\n},\n\"Action\":
    \"secretsmanager:GetSecretValue\",\n\"Resource\":\"*\"\n}]\n}"
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[身份验证和访问权限控制](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [GetResourcePolicy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/secretsmanager/get-resource-policy.html)。

### `get-secret-value`
<a name="secrets-manager_GetSecretValue_cli_topic"></a>

以下代码示例演示了如何使用 `get-secret-value`。

**AWS CLI**  
**示例 1：检索密钥的加密密钥值**  
以下 `get-secret-value` 示例获取当前密钥值。  

```
aws secretsmanager get-secret-value \
    --secret-id MyTestSecret
```
输出：  

```
{
    "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-a1b2c3",
    "Name": "MyTestSecret",
    "VersionId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
    "SecretString": "{\"user\":\"diegor\",\"password\":\"EXAMPLE-PASSWORD\"}",
    "VersionStages": [
        "AWSCURRENT"
    ],
    "CreatedDate": 1523477145.713
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[检索密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieving-secrets.html)。  
**示例 2：检索之前的密钥值**  
以下 `get-secret-value` 示例获取之前的密钥值。  

```
aws secretsmanager get-secret-value \
    --secret-id MyTestSecret
    --version-stage AWSPREVIOUS
```
输出：  

```
{
    "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-a1b2c3",
    "Name": "MyTestSecret",
    "VersionId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
    "SecretString": "{\"user\":\"diegor\",\"password\":\"PREVIOUS-EXAMPLE-PASSWORD\"}",
    "VersionStages": [
        "AWSPREVIOUS"
    ],
    "CreatedDate": 1523477145.713
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[检索密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieving-secrets.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [GetSecretValue](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/secretsmanager/get-secret-value.html)。

### `list-secret-version-ids`
<a name="secrets-manager_ListSecretVersionIds_cli_topic"></a>

以下代码示例演示了如何使用 `list-secret-version-ids`。

**AWS CLI**  
**列出与密钥相关的所有密钥版本**  
以下 `list-secret-version-ids` 示例获取密钥所有版本的列表。  

```
aws secretsmanager list-secret-version-ids \
    --secret-id MyTestSecret
```
输出：  

```
{
  "Versions": [
    {
        "VersionId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
        "VersionStages": [
            "AWSPREVIOUS"
        ],
        "LastAccessedDate": 1523477145.713,
        "CreatedDate": 1523477145.713
    },
    {
        "VersionId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
        "VersionStages": [
            "AWSCURRENT"
        ],
        "LastAccessedDate": 1523477145.713,
        "CreatedDate": 1523486221.391
    },
    {
        "CreatedDate": 1.51197446236E9,
        "VersionId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE33333;"
    }
    ],
    "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-a1b2c3",
    "Name": "MyTestSecret"
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[版本](https://docs.aws.amazon.com/secretsmanager/latest/userguide/getting-started.html#term_version)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [ListSecretVersionIds](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/secretsmanager/list-secret-version-ids.html)。

### `list-secrets`
<a name="secrets-manager_ListSecrets_cli_topic"></a>

以下代码示例演示了如何使用 `list-secrets`。

**AWS CLI**  
**示例 1：列出您账户中的密钥**  
以下 `list-secrets` 示例获取了您账户中的密钥列表。  

```
aws secretsmanager list-secrets
```
输出：  

```
{
    "SecretList": [
        {
            "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-a1b2c3",
            "Name": "MyTestSecret",
            "LastChangedDate": 1523477145.729,
            "SecretVersionsToStages": {
                "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111": [
                    "AWSCURRENT"
                ]
            }
        },
        {
            "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:AnotherSecret-d4e5f6",
            "Name": "AnotherSecret",
            "LastChangedDate": 1523482025.685,
            "SecretVersionsToStages": {
                "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222": [
                    "AWSCURRENT"
                ]
            }
        }
    ]
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[查找密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_search-secret.html)。  
**示例 2：筛选您账户中的密钥列表**  
以下 `list-secrets` 示例将获取您的账户中名称包含 `Test` 的密钥列表。按名称筛选区分大小写。  

```
aws secretsmanager list-secrets \
    --filter Key="name",Values="Test"
```
输出：  

```
{
    "SecretList": [
        {
            "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-a1b2c3",
            "Name": "MyTestSecret",
            "LastChangedDate": 1523477145.729,
            "SecretVersionsToStages": {
                "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111": [
                    "AWSCURRENT"
                ]
            }
        }
    ]
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[查找密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_search-secret.html)。  
**示例 3：列出您账户中由其他服务管理的密钥**  
以下 `list-secrets` 示例返回您账户中由 Amazon RDS 管理的密钥。  

```
aws secretsmanager list-secrets \
    --filter Key="owning-service",Values="rds"
```
输出：  

```
{
    "SecretList": [
        {
            "Name": "rds!cluster-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
            "Tags": [
                {
                    "Value": "arn:aws:rds:us-west-2:123456789012:cluster:database-1",
                    "Key": "aws:rds:primaryDBClusterArn"
                },
                {
                    "Value": "rds",
                    "Key": "aws:secretsmanager:owningService"
                }
            ],
            "RotationRules": {
                "AutomaticallyAfterDays": 1
            },
            "LastChangedDate": 1673477781.275,
            "LastRotatedDate": 1673477781.26,
            "SecretVersionsToStages": {
                "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa": [
                    "AWSPREVIOUS"
                ],
                "a1b2c3d4-5678-90ab-cdef-EXAMPLEbbbbb": [
                    "AWSCURRENT",
                    "AWSPENDING"
                ]
            },
            "OwningService": "rds",
            "RotationEnabled": true,
            "CreatedDate": 1673467300.7,
            "LastAccessedDate": 1673395200.0,
            "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:rds!cluster-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111-a1b2c3",
            "Description": "Secret associated with primary RDS DB cluster: arn:aws:rds:us-west-2:123456789012:cluster:database-1"
        }
    ]
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[由其他服务管理的密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/service-linked-secrets.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [ListSecrets](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/secretsmanager/list-secrets.html)。

### `put-resource-policy`
<a name="secrets-manager_PutResourcePolicy_cli_topic"></a>

以下代码示例演示了如何使用 `put-resource-policy`。

**AWS CLI**  
**将基于资源的策略添加到密钥**  
以下 `put-resource-policy` 示例将向密钥添加权限策略，首先检查该策略是否不提供对该密钥的广泛访问权限。该策略是从文件中读取的。有关更多信息，请参阅《AWS CLI 用户指南》**中的[从文件加载 AWS CLI 参数](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-file.html)。  

```
aws secretsmanager put-resource-policy \
    --secret-id MyTestSecret \
    --resource-policy file://mypolicy.json \
    --block-public-policy
```
 的内容`mypolicy.json`：  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:role/MyRole"
            },
            "Action": "secretsmanager:GetSecretValue",
            "Resource": "*"
        }
    ]
}
```
输出：  

```
{
    "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-a1b2c3",
    "Name": "MyTestSecret"
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[将权限策略附加到密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_resource-policies.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [PutResourcePolicy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/secretsmanager/put-resource-policy.html)。

### `put-secret-value`
<a name="secrets-manager_PutSecretValue_cli_topic"></a>

以下代码示例演示了如何使用 `put-secret-value`。

**AWS CLI**  
**示例 1：在密钥中存储新的密钥值**  
以下 `put-secret-value` 示例将创建包含两个键值对的新版本密钥。  

```
aws secretsmanager put-secret-value \
    --secret-id MyTestSecret \
    --secret-string "{\"user\":\"diegor\",\"password\":\"EXAMPLE-PASSWORD\"}"
```
输出：  

```
{
    "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-1a2b3c",
    "Name": "MyTestSecret",
    "VersionId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
    "VersionStages": [
        "AWSCURRENT"
    ]
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[修改密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_update-secret.html)。  
**示例 2：将凭证中的新密钥值存储在 JSON 文件中**  
以下 `put-secret-value` 示例将根据文件中的凭证创建新版本密钥。有关更多信息，请参阅《AWS CLI 用户指南》**中的[从文件加载 AWS CLI 参数](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-file.html)。  

```
aws secretsmanager put-secret-value \
    --secret-id MyTestSecret \
    --secret-string file://mycreds.json
```
 的内容`mycreds.json`：  

```
{
  "engine": "mysql",
  "username": "saanvis",
  "password": "EXAMPLE-PASSWORD",
  "host": "my-database-endpoint.us-west-2.rds.amazonaws.com",
  "dbname": "myDatabase",
  "port": "3306"
}
```
输出：  

```
{
    "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-a1b2c3",
    "Name": "MyTestSecret",
    "VersionId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
    "VersionStages": [
        "AWSCURRENT"
    ]
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[修改密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_update-secret.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [PutSecretValue](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/secretsmanager/put-secret-value.html)。

### `remove-regions-from-replication`
<a name="secrets-manager_RemoveRegionsFromReplication_cli_topic"></a>

以下代码示例演示了如何使用 `remove-regions-from-replication`。

**AWS CLI**  
**删除副本密钥**  
以下 `remove-regions-from-replication` 示例将删除 eu-west-3 中的副本密钥。要删除复制到其他区域的主密钥，请先删除副本，然后调用 `delete-secret`。  

```
aws secretsmanager remove-regions-from-replication \
    --secret-id MyTestSecret \
    --remove-replica-regions eu-west-3
```
输出：  

```
{
    "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-1a2b3c",
    "ReplicationStatus": []
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[删除副本密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/delete-replica.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [RemoveRegionsFromReplication](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/secretsmanager/remove-regions-from-replication.html)。

### `replicate-secret-to-regions`
<a name="secrets-manager_ReplicateSecretToRegions_cli_topic"></a>

以下代码示例演示了如何使用 `replicate-secret-to-regions`。

**AWS CLI**  
**将密钥复制到其他区域**  
以下 `replicate-secret-to-regions` 示例将密钥复制到 eu-west-3。副本使用 AWS 托管密钥 `aws/secretsmanager` 加密。  

```
aws secretsmanager replicate-secret-to-regions \
    --secret-id MyTestSecret \
    --add-replica-regions Region=eu-west-3
```
输出：  

```
{
    "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-1a2b3c",
    "ReplicationStatus": [
        {
            "Region": "eu-west-3",
            "KmsKeyId": "alias/aws/secretsmanager",
            "Status": "InProgress"
        }
    ]
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[将密钥复制到其他区域](https://docs.aws.amazon.com/secretsmanager/latest/userguide/replicate-existing-secret.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [ReplicateSecretToRegions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/secretsmanager/replicate-secret-to-regions.html)。

### `restore-secret`
<a name="secrets-manager_RestoreSecret_cli_topic"></a>

以下代码示例演示了如何使用 `restore-secret`。

**AWS CLI**  
**恢复先前删除的密钥**  
以下 `restore-secret` 示例恢复了先前计划删除的密钥。  

```
aws secretsmanager restore-secret \
    --secret-id MyTestSecret
```
输出：  

```
{
    "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-a1b2c3",
    "Name": "MyTestSecret"
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[删除密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_delete-secret.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [RestoreSecret](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/secretsmanager/restore-secret.html)。

### `rotate-secret`
<a name="secrets-manager_RotateSecret_cli_topic"></a>

以下代码示例演示了如何使用 `rotate-secret`。

**AWS CLI**  
**示例 1：配置并启动密钥的自动轮换功能**  
以下 `rotate-secret` 示例配置并启动密钥的自动轮换功能。Secrets Manager 会立即轮换一次密钥，然后每八小时轮换一次，轮换时间为两小时。输出显示了通过轮换创建的新密钥版本的 `VersionId`。  

```
aws secretsmanager rotate-secret \
    --secret-id MyTestDatabaseSecret \
    --rotation-lambda-arn arn:aws:lambda:us-west-2:1234566789012:function:SecretsManagerTestRotationLambda \
    --rotation-rules "{\"ScheduleExpression\": \"cron(0 8/8 * * ? *)\", \"Duration\": \"2h\"}"
```
输出：  

```
{
    "ARN": "aws:arn:secretsmanager:us-west-2:123456789012:secret:MyTestDatabaseSecret-a1b2c3",
    "Name": "MyTestDatabaseSecret",
    "VersionId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[轮换密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html)。  
**示例 2：配置并启动按轮换间隔执行的自动轮换功能**  
以下 `rotate-secret` 示例配置并启动密钥的自动轮换功能。Secrets Manager 会立即轮换一次密钥，然后每 10 天轮换一次。输出显示了通过轮换创建的新密钥版本的 `VersionId`。  

```
aws secretsmanager rotate-secret \
    --secret-id MyTestDatabaseSecret \
    --rotation-lambda-arn arn:aws:lambda:us-west-2:1234566789012:function:SecretsManagerTestRotationLambda \
    --rotation-rules "{\"ScheduleExpression\": \"rate(10 days)\"}"
```
输出：  

```
{
    "ARN": "aws:arn:secretsmanager:us-west-2:123456789012:secret:MyTestDatabaseSecret-a1b2c3",
    "Name": "MyTestDatabaseSecret",
    "VersionId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[轮换密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html)。  
**示例 3：立即轮换密钥**  
以下 `rotate-secret` 示例将立即开始轮换。输出显示了通过轮换创建的新密钥版本的 `VersionId`。密钥必须已配置轮换。  

```
aws secretsmanager rotate-secret \
    --secret-id MyTestDatabaseSecret
```
输出：  

```
{
    "ARN": "aws:arn:secretsmanager:us-west-2:123456789012:secret:MyTestDatabaseSecret-a1b2c3",
    "Name": "MyTestDatabaseSecret",
    "VersionId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[轮换密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [RotateSecret](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/secretsmanager/rotate-secret.html)。

### `stop-replication-to-replica`
<a name="secrets-manager_StopReplicationToReplica_cli_topic"></a>

以下代码示例演示了如何使用 `stop-replication-to-replica`。

**AWS CLI**  
**将副本密钥提升为主密钥**  
以下 `stop-replication-to-replica` 示例将删除副本密钥与主密钥之间的链接。副本密钥在副本区域中被提升为主密钥。您必须从副本区域内调用 `stop-replication-to-replica`。  

```
aws secretsmanager stop-replication-to-replica \
    --secret-id MyTestSecret
```
输出：  

```
{
    "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-a1b2c3"
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[提升副本密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/standalone-secret.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [StopReplicationToReplica](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/secretsmanager/stop-replication-to-replica.html)。

### `tag-resource`
<a name="secrets-manager_TagResource_cli_topic"></a>

以下代码示例演示了如何使用 `tag-resource`。

**AWS CLI**  
**示例 1：将标签添加到密钥**  
以下 示例说明了如何使用速记语法附加标签。  

```
aws secretsmanager tag-resource \
    --secret-id MyTestSecret \
    --tags Key=FirstTag,Value=FirstValue
```
此命令不生成任何输出。  
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[标记密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets_tagging.html)。  
**示例 2：将多个标签添加到密钥**  
以下 `tag-resource` 示例将向密钥附加两个键值标签。  

```
aws secretsmanager tag-resource \
    --secret-id MyTestSecret \
    --tags '[{"Key": "FirstTag", "Value": "FirstValue"}, {"Key": "SecondTag", "Value": "SecondValue"}]'
```
此命令不生成任何输出。  
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[标记密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets_tagging.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [TagResource](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/secretsmanager/tag-resource.html)。

### `untag-resource`
<a name="secrets-manager_UntagResource_cli_topic"></a>

以下代码示例演示了如何使用 `untag-resource`。

**AWS CLI**  
**从密钥中移除标签**  
以下 `untag-resource` 示例将从密钥中删除两个标签。对于每个标签，键和值都会被删除。  

```
aws secretsmanager untag-resource \
    --secret-id MyTestSecret \
    --tag-keys '[ "FirstTag", "SecondTag"]'
```
此命令不生成任何输出。  
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[标记密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets_tagging.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [UntagResource](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/secretsmanager/untag-resource.html)。

### `update-secret-version-stage`
<a name="secrets-manager_UpdateSecretVersionStage_cli_topic"></a>

以下代码示例演示了如何使用 `update-secret-version-stage`。

**AWS CLI**  
**示例 1：将密钥还原为先前版本**  
以下 `update-secret-version-stage` 示例会将 AWSCURRENT 暂存标签移动到密钥的先前版本，这样做会将密钥还原为先前的版本。要查找先前版本的 ID，请使用 `list-secret-version-ids`。对于此示例，带有 AWSCURRENT 标签的版本为 a1b2c3d4-5678-90ab-cdef-EXAMPLE11111，带有 AWSPREVIOUS 标签的版本为 a1b2c3d4-5678-90ab-cdef-EXAMPLE22222。在此示例中，您将 AWSCURRENT 标签从版本 11111 移动到 22222。由于 AWSCURRENT 标签已从版本中移除，因此 `update-secret-version-stage` 会自动将 AWSPREVIOUS 标签移动到该版本（11111）。结果是交换了 AWSCURRENT 和 AWSPREVIOUS 版本。  

```
aws secretsmanager update-secret-version-stage \
    --secret-id MyTestSecret \
    --version-stage AWSCURRENT \
    --move-to-version-id a1b2c3d4-5678-90ab-cdef-EXAMPLE22222 \
    --remove-from-version-id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111
```
输出：  

```
{
    "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-a1b2c3",
    "Name": "MyTestSecret"
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[版本](https://docs.aws.amazon.com/secretsmanager/latest/userguide/getting-started.html#term_version)。  
**示例 2：添加附加到密钥版本的暂存标签**  
以下 `update-secret-version-stage` 示例为密钥版本添加暂存标签。您可以通过运行 `list-secret-version-ids` 并查看受影响版本的响应字段 `VersionStages` 来查看结果。  

```
aws secretsmanager update-secret-version-stage \
    --secret-id MyTestSecret \
    --version-stage STAGINGLABEL1 \
    --move-to-version-id EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE
```
输出：  

```
{
    "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-a1b2c3",
    "Name": "MyTestSecret"
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[版本](https://docs.aws.amazon.com/secretsmanager/latest/userguide/getting-started.html#term_version)。  
**示例 3：删除附加到密钥版本的暂存标签**  
以下 `update-secret-version-stage` 示例删除附加在密钥版本上的暂存标签。您可以通过运行 `list-secret-version-ids` 并查看受影响版本的响应字段 `VersionStages` 来查看结果。  

```
aws secretsmanager update-secret-version-stage \
    --secret-id MyTestSecret \
    --version-stage STAGINGLABEL1 \
    --remove-from-version-id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111
```
输出：  

```
{
    "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-a1b2c3",
    "Name": "MyTestSecret"
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[版本](https://docs.aws.amazon.com/secretsmanager/latest/userguide/getting-started.html#term_version)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [UpdateSecretVersionStage](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/secretsmanager/update-secret-version-stage.html)。

### `update-secret`
<a name="secrets-manager_UpdateSecret_cli_topic"></a>

以下代码示例演示了如何使用 `update-secret`。

**AWS CLI**  
**示例 1：更新密钥的描述**  
以下 `update-secret` 示例将更新密钥的描述。  

```
aws secretsmanager update-secret \
    --secret-id MyTestSecret \
    --description "This is a new description for the secret."
```
输出：  

```
{
    "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-a1b2c3",
    "Name": "MyTestSecret"
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[修改密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_update-secret.html)。  
**示例 2：更新与密钥关联的加密密钥**  
以下 `update-secret` 示例将更新用于加密密钥值的 KMS 密钥。该 KMS 密钥必须与加密密钥位于同一区域中。  

```
aws secretsmanager update-secret \
    --secret-id MyTestSecret \
    --kms-key-id arn:aws:kms:us-west-2:123456789012:key/EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE
```
输出：  

```
{
    "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-a1b2c3",
    "Name": "MyTestSecret"
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的[修改密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_update-secret.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [UpdateSecret](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/secretsmanager/update-secret.html)。

### `validate-resource-policy`
<a name="secrets-manager_ValidateResourcePolicy_cli_topic"></a>

以下代码示例演示了如何使用 `validate-resource-policy`。

**AWS CLI**  
**验证资源策略**  
以下 `validate-resource-policy` 示例检查资源策略是否未授予对密钥的广泛访问权限。该策略是从磁盘上的文件中读取的。有关更多信息，请参阅《AWS CLI 用户指南》**中的[从文件加载 AWS CLI 参数](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-file.html)。  

```
aws secretsmanager validate-resource-policy \
    --resource-policy file://mypolicy.json
```
 的内容`mypolicy.json`：  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:role/MyRole"
            },
            "Action": "secretsmanager:GetSecretValue",
            "Resource": "*"
        }
    ]
}
```
输出：  

```
{
    "PolicyValidationPassed": true,
    "ValidationErrors": []
}
```
有关更多信息，请参阅《Secrets Manager 用户指南》**中的 [Secrets Manager 权限参考](https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [ValidateResourcePolicy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/secretsmanager/validate-resource-policy.html)。