使用AWS CLI的 Secrets Manager 示例
以下代码示例演示了如何通过将 AWS Command Line Interface与 Secrets Manager 结合使用,来执行操作和实现常见场景。
操作是大型程序的代码摘录,必须在上下文中运行。您可以通过操作了解如何调用单个服务函数,还可以通过函数相关场景的上下文查看操作。
每个示例都包含一个指向完整源代码的链接,您可以从中找到有关如何在上下文中设置和运行代码的说明。
主题
操作
以下代码示例演示了如何使用 batch-get-secret-value。
- AWS CLI
-
示例 1:检索按名称列出的一组密钥的密钥值
以下
batch-get-secret-value示例获取三个密钥的密钥值。aws secretsmanager batch-get-secret-value \ --secret-id-listMySecret1MySecret2MySecret3输出:
{ "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 用户指南》中的批量检索一组密钥。
示例 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 用户指南》中的批量检索一组密钥。
-
有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 BatchGetSecretValue
。
-
以下代码示例演示了如何使用 cancel-rotate-secret。
- AWS CLI
-
关闭密钥的自动轮换功能
以下
cancel-rotate-secret示例关闭密钥的自动轮换功能。要恢复轮换,请调用rotate-secret。aws secretsmanager cancel-rotate-secret \ --secret-idMyTestSecret输出:
{ "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-a1b2c3", "Name": "MyTestSecret" }有关更多信息,请参阅《Secrets Manager 用户指南》中的轮换密钥。
-
有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 CancelRotateSecret
。
-
以下代码示例演示了如何使用 create-secret。
- AWS CLI
-
示例 1:根据 JSON 文件中的凭证创建密钥
以下
create-secret示例将根据文件中的凭证创建密钥。有关更多信息,请参阅《AWS CLI 用户指南》中的从文件加载 AWS CLI 参数。aws secretsmanager create-secret \ --nameMyTestSecret\ --secret-stringfile://mycreds.jsonmycreds.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 \ --nameMyTestSecret\ --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 详细信息,请参阅《AWS CLI 命令参考》中的 CreateSecret
。
-
以下代码示例演示了如何使用 delete-resource-policy。
- AWS CLI
-
删除附加到密钥的基于资源的策略
以下
delete-resource-policy示例将删除附加到密钥的基于资源的策略。aws secretsmanager delete-resource-policy \ --secret-idMyTestSecret输出:
{ "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-a1b2c3", "Name": "MyTestSecret" }有关更多信息,请参阅《Secrets Manager 用户指南》中的身份验证和访问权限控制。
-
有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 DeleteResourcePolicy
。
-
以下代码示例演示了如何使用 delete-secret。
- AWS CLI
-
示例 1:删除密钥
以下
delete-secret示例将删除密钥。您可以使用DeletionDate恢复密钥,直到restore-secret响应字段中的日期和时间。要删除复制到其他区域的密钥,请先使用remove-regions-from-replication删除其副本,然后调用delete-secret。aws secretsmanager delete-secret \ --secret-idMyTestSecret\ --recovery-window-in-days7输出:
{ "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-idMyTestSecret\ --force-delete-without-recovery输出:
{ "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-a1b2c3", "Name": "MyTestSecret", "DeletionDate": 1508750180.309 }有关更多信息,请参阅《Secrets Manager 用户指南》中的删除密钥。
-
有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 DeleteSecret
。
-
以下代码示例演示了如何使用 describe-secret。
- AWS CLI
-
检索密钥的详细信息
以下
describe-secret示例显示密钥的详细信息。aws secretsmanager describe-secret \ --secret-idMyTestSecret输出:
{ "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 详细信息,请参阅《AWS CLI 命令参考》中的 DescribeSecret
。
-
以下代码示例演示了如何使用 get-random-password。
- AWS CLI
-
生成随机密码
以下
get-random-password示例生成一个长度为 20 个字符的随机密码,其中至少包含一个大写字母、小写字母、数字和标点符号。aws secretsmanager get-random-password \ --require-each-included-type \ --password-length20输出:
{ "RandomPassword": "EXAMPLE-PASSWORD" }有关更多信息,请参阅《Secrets Manager 用户指南》中的创建和管理密钥。
-
有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 GetRandomPassword
。
-
以下代码示例演示了如何使用 get-resource-policy。
- AWS CLI
-
检索附加到密钥的基于资源的策略
以下
get-resource-policy示例将检索附加到密钥的基于资源的策略。aws secretsmanager get-resource-policy \ --secret-idMyTestSecret输出:
{ "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 详细信息,请参阅《AWS CLI 命令参考》中的 GetResourcePolicy
。
-
以下代码示例演示了如何使用 get-secret-value。
- AWS CLI
-
示例 1:检索密钥的加密密钥值
以下
get-secret-value示例获取当前密钥值。aws secretsmanager get-secret-value \ --secret-idMyTestSecret输出:
{ "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-idMyTestSecret--version-stageAWSPREVIOUS输出:
{ "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 详细信息,请参阅《AWS CLI 命令参考》中的 GetSecretValue
。
-
以下代码示例演示了如何使用 list-secret-version-ids。
- AWS CLI
-
列出与密钥相关的所有密钥版本
以下
list-secret-version-ids示例获取密钥所有版本的列表。aws secretsmanager list-secret-version-ids \ --secret-idMyTestSecret输出:
{ "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 用户指南》中的版本。
-
有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 ListSecretVersionIds
。
-
以下代码示例演示了如何使用 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 用户指南》中的查找密钥。
示例 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 详细信息,请参阅《AWS CLI 命令参考》中的 ListSecrets
。
-
以下代码示例演示了如何使用 put-resource-policy。
- AWS CLI
-
将基于资源的策略添加到密钥
以下
put-resource-policy示例将向密钥添加权限策略,首先检查该策略是否不提供对该密钥的广泛访问权限。该策略是从文件中读取的。有关更多信息,请参阅《AWS CLI 用户指南》中的从文件加载 AWS CLI 参数。aws secretsmanager put-resource-policy \ --secret-idMyTestSecret\ --resource-policyfile://mypolicy.json\ --block-public-policymypolicy.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 详细信息,请参阅《AWS CLI 命令参考》中的 PutResourcePolicy
。
-
以下代码示例演示了如何使用 put-secret-value。
- AWS CLI
-
示例 1:在密钥中存储新的密钥值
以下
put-secret-value示例将创建包含两个键值对的新版本密钥。aws secretsmanager put-secret-value \ --secret-idMyTestSecret\ --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示例将根据文件中的凭证创建新版本密钥。有关更多信息,请参阅《AWS CLI 用户指南》中的从文件加载 AWS CLI 参数。aws secretsmanager put-secret-value \ --secret-idMyTestSecret\ --secret-stringfile://mycreds.jsonmycreds.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 详细信息,请参阅《AWS CLI 命令参考》中的 PutSecretValue
。
-
以下代码示例演示了如何使用 remove-regions-from-replication。
- AWS CLI
-
删除副本密钥
以下
remove-regions-from-replication示例将删除 eu-west-3 中的副本密钥。要删除复制到其他区域的主密钥,请先删除副本,然后调用delete-secret。aws secretsmanager remove-regions-from-replication \ --secret-idMyTestSecret\ --remove-replica-regionseu-west-3输出:
{ "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-1a2b3c", "ReplicationStatus": [] }有关更多信息,请参阅《Secrets Manager 用户指南》中的删除副本密钥。
-
有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 RemoveRegionsFromReplication
。
-
以下代码示例演示了如何使用 replicate-secret-to-regions。
- AWS CLI
-
将密钥复制到其他区域
以下
replicate-secret-to-regions示例将密钥复制到 eu-west-3。副本使用 AWS 托管密钥aws/secretsmanager加密。aws secretsmanager replicate-secret-to-regions \ --secret-idMyTestSecret\ --add-replica-regionsRegion=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 用户指南》中的将密钥复制到其他区域。
-
有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 ReplicateSecretToRegions
。
-
以下代码示例演示了如何使用 restore-secret。
- AWS CLI
-
恢复先前删除的密钥
以下
restore-secret示例恢复了先前计划删除的密钥。aws secretsmanager restore-secret \ --secret-idMyTestSecret输出:
{ "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-a1b2c3", "Name": "MyTestSecret" }有关更多信息,请参阅《Secrets Manager 用户指南》中的删除密钥。
-
有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 RestoreSecret
。
-
以下代码示例演示了如何使用 rotate-secret。
- AWS CLI
-
示例 1:配置并启动密钥的自动轮换功能
以下
rotate-secret示例配置并启动密钥的自动轮换功能。Secrets Manager 会立即轮换一次密钥,然后每八小时轮换一次,轮换时间为两小时。输出显示了通过轮换创建的新密钥版本的VersionId。aws secretsmanager rotate-secret \ --secret-idMyTestDatabaseSecret\ --rotation-lambda-arnarn: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-idMyTestDatabaseSecret\ --rotation-lambda-arnarn: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-idMyTestDatabaseSecret输出:
{ "ARN": "aws:arn:secretsmanager:us-west-2:123456789012:secret:MyTestDatabaseSecret-a1b2c3", "Name": "MyTestDatabaseSecret", "VersionId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" }有关更多信息,请参阅《Secrets Manager 用户指南》中的轮换密钥。
-
有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 RotateSecret
。
-
以下代码示例演示了如何使用 stop-replication-to-replica。
- AWS CLI
-
将副本密钥提升为主密钥
以下
stop-replication-to-replica示例将删除副本密钥与主密钥之间的链接。副本密钥在副本区域中被提升为主密钥。您必须从副本区域内调用stop-replication-to-replica。aws secretsmanager stop-replication-to-replica \ --secret-idMyTestSecret输出:
{ "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-a1b2c3" }有关更多信息,请参阅《Secrets Manager 用户指南》中的提升副本密钥。
-
有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 StopReplicationToReplica
。
-
以下代码示例演示了如何使用 tag-resource。
- AWS CLI
-
示例 1:将标签添加到密钥
以下 示例说明了如何使用速记语法附加标签。
aws secretsmanager tag-resource \ --secret-idMyTestSecret\ --tagsKey=FirstTag,Value=FirstValue此命令不生成任何输出。
有关更多信息,请参阅《Secrets Manager 用户指南》中的标记密钥。
示例 2:将多个标签添加到密钥
以下
tag-resource示例将向密钥附加两个键值标签。aws secretsmanager tag-resource \ --secret-idMyTestSecret\ --tags '[{"Key": "FirstTag", "Value": "FirstValue"}, {"Key": "SecondTag", "Value": "SecondValue"}]'此命令不生成任何输出。
有关更多信息,请参阅《Secrets Manager 用户指南》中的标记密钥。
-
有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 TagResource
。
-
以下代码示例演示了如何使用 untag-resource。
- AWS CLI
-
从密钥中移除标签
以下
untag-resource示例将从密钥中删除两个标签。对于每个标签,键和值都会被删除。aws secretsmanager untag-resource \ --secret-idMyTestSecret\ --tag-keys '[ "FirstTag", "SecondTag"]'此命令不生成任何输出。
有关更多信息,请参阅《Secrets Manager 用户指南》中的标记密钥。
-
有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 UntagResource
。
-
以下代码示例演示了如何使用 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-idMyTestSecret\ --version-stageAWSCURRENT\ --move-to-version-ida1b2c3d4-5678-90ab-cdef-EXAMPLE22222\ --remove-from-version-ida1b2c3d4-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-idMyTestSecret\ --version-stageSTAGINGLABEL1\ --move-to-version-idEXAMPLE1-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-idMyTestSecret\ --version-stageSTAGINGLABEL1\ --remove-from-version-ida1b2c3d4-5678-90ab-cdef-EXAMPLE11111输出:
{ "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestSecret-a1b2c3", "Name": "MyTestSecret" }有关更多信息,请参阅《Secrets Manager 用户指南》中的版本。
-
有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 UpdateSecretVersionStage
。
-
以下代码示例演示了如何使用 update-secret。
- AWS CLI
-
示例 1:更新密钥的描述
以下
update-secret示例将更新密钥的描述。aws secretsmanager update-secret \ --secret-idMyTestSecret\ --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-idMyTestSecret\ --kms-key-idarn: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 详细信息,请参阅《AWS CLI 命令参考》中的 UpdateSecret
。
-
以下代码示例演示了如何使用 validate-resource-policy。
- AWS CLI
-
验证资源策略
以下
validate-resource-policy示例检查资源策略是否未授予对密钥的广泛访问权限。该策略是从磁盘上的文件中读取的。有关更多信息,请参阅《AWS CLI 用户指南》中的从文件加载 AWS CLI 参数。aws secretsmanager validate-resource-policy \ --resource-policyfile://mypolicy.jsonmypolicy.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 权限参考。
-
有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 ValidateResourcePolicy
。
-