使用Amazon CLI的 Secrets Manager 示例 - Amazon Command Line Interface
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用Amazon CLI的 Secrets Manager 示例

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

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

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

主题

操作

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

Amazon 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": [] }

有关更多信息,请参阅《Amazon Secrets Manager 用户指南》中的批量检索一组密钥

示例 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": [] }

有关更多信息,请参阅《Amazon Secrets Manager 用户指南》中的批量检索一组密钥

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 BatchGetSecretValue

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

Amazon 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 用户指南》中的轮换密钥

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 CancelRotateSecret

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

Amazon CLI

示例 1:根据 JSON 文件中的凭证创建密钥

以下 create-secret 示例将根据文件中的凭证创建密钥。有关更多信息,请参阅《Amazon CLI 用户指南》中的从文件加载 Amazon CLI 参数

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 用户指南》中的创建密钥

示例 2:创建密钥

以下 create-secret 示例将创建包含两个键值对的密钥。当您在命令 shell 中输入命令时,存在访问命令历史记录或实用程序可以访问您命令参数的风险。如果命令包含密钥的值,就会引起关注。有关更多信息,请参阅《Secrets Manager 用户指南》中的降低使用命令行工具存储密钥的风险

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 用户指南》中的创建密钥

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 CreateSecret

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

Amazon 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 用户指南》中的身份验证和访问权限控制

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

Amazon 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 用户指南》中的删除密钥

示例 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 用户指南》中的删除密钥

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 DeleteSecret

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

Amazon 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 用户指南》中的密钥

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 DescribeSecret

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

Amazon CLI

生成随机密码

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

aws secretsmanager get-random-password \ --require-each-included-type \ --password-length 20

输出:

{ "RandomPassword": "EXAMPLE-PASSWORD" }

有关更多信息,请参阅《Secrets Manager 用户指南》中的创建和管理密钥

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 GetRandomPassword

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

Amazon 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 用户指南》中的身份验证和访问权限控制

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 GetResourcePolicy

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

Amazon 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 用户指南》中的检索密钥

示例 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 用户指南》中的检索密钥

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 GetSecretValue

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

Amazon 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 用户指南》中的版本

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

Amazon 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 用户指南》中的查找密钥

示例 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 用户指南》中的查找密钥

示例 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 用户指南》中的由其他服务管理的密钥

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 ListSecrets

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

Amazon CLI

将基于资源的策略添加到密钥

以下 put-resource-policy 示例将向密钥添加权限策略,首先检查该策略是否不提供对该密钥的广泛访问权限。该策略是从文件中读取的。有关更多信息,请参阅《Amazon CLI 用户指南》中的从文件加载 Amazon CLI 参数

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 用户指南》中的将权限策略附加到密钥

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 PutResourcePolicy

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

Amazon 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 用户指南》中的修改密钥

示例 2:将凭证中的新密钥值存储在 JSON 文件中

以下 put-secret-value 示例将根据文件中的凭证创建新版本密钥。有关更多信息,请参阅《Amazon CLI 用户指南》中的从文件加载 Amazon CLI 参数

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 用户指南》中的修改密钥

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 PutSecretValue

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

Amazon 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 用户指南》中的删除副本密钥

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

Amazon CLI

将密钥复制到其他区域

以下 replicate-secret-to-regions 示例将密钥复制到 eu-west-3。副本使用 Amazon 托管密钥 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 用户指南》中的将密钥复制到其他区域

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

Amazon 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 用户指南》中的删除密钥

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 RestoreSecret

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

Amazon 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 用户指南》中的轮换密钥

示例 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 用户指南》中的轮换密钥

示例 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 用户指南》中的轮换密钥

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 RotateSecret

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

Amazon 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 用户指南》中的提升副本密钥

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

Amazon CLI

示例 1:将标签添加到密钥

以下 示例说明了如何使用速记语法附加标签。

aws secretsmanager tag-resource \ --secret-id MyTestSecret \ --tags Key=FirstTag,Value=FirstValue

此命令不生成任何输出。

有关更多信息,请参阅《Secrets Manager 用户指南》中的标记密钥

示例 2:将多个标签添加到密钥

以下 tag-resource 示例将向密钥附加两个键值标签。

aws secretsmanager tag-resource \ --secret-id MyTestSecret \ --tags '[{"Key": "FirstTag", "Value": "FirstValue"}, {"Key": "SecondTag", "Value": "SecondValue"}]'

此命令不生成任何输出。

有关更多信息,请参阅《Secrets Manager 用户指南》中的标记密钥

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 TagResource

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

Amazon CLI

从密钥中移除标签

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

aws secretsmanager untag-resource \ --secret-id MyTestSecret \ --tag-keys '[ "FirstTag", "SecondTag"]'

此命令不生成任何输出。

有关更多信息,请参阅《Secrets Manager 用户指南》中的标记密钥

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 UntagResource

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

Amazon CLI

示例 1:将密钥还原为先前版本

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

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 用户指南》中的版本

示例 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 用户指南》中的版本

示例 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 用户指南》中的版本

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

Amazon 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 用户指南》中的修改密钥

示例 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 用户指南》中的修改密钥

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 UpdateSecret

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

Amazon CLI

验证资源策略

以下 validate-resource-policy 示例检查资源策略是否未授予对密钥的广泛访问权限。该策略是从磁盘上的文件中读取的。有关更多信息,请参阅《Amazon CLI 用户指南》中的从文件加载 Amazon CLI 参数

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 权限参考