red*_*888 2 amazon-web-services aws-cli aws-secrets-manager
如何调用aws secretsmanager list-secrets命令并按标签过滤秘密?我在这里没有看到这样的例子:https : //docs.aws.amazon.com/cli/latest/reference/secretsmanager/list-secrets.html
此外,亚马逊的文档很糟糕。它在该页面上说--max-items 但实际上应该是--max-results。也没有提到如何在该维基页面上进行过滤
[更新:2021 年 1 月]
在AWS secretsmanager列表秘密命令支持通过过滤--filters选项。
以下是如何使用它来过滤名称为 Production 的机密的示例:
aws secretsmanager list-secrets \
--filters Key=name,Values=Production
Run Code Online (Sandbox Code Playgroud)
这是一个如何使用它来过滤带有 stage=dev 标签的机密的示例:
aws secretsmanager list-secrets \
--filters Key=tag-key,Values=stage Key=tag-value,Values=dev
Run Code Online (Sandbox Code Playgroud)
这是一个 boto3 示例,对标签 Name=Production 或 Name=Staging 进行过滤:
import boto3
sm = boto3.client('secretsmanager')
res = sm.list_secrets(Filters=[
{ 'Key': 'tag-key', 'Values': ['Name'] },
{ 'Key': 'tag-value', 'Values': ['Production', 'Staging'] },
])
for secret in res['SecretList']:
print(secret['Name'], secret['Tags'])
Run Code Online (Sandbox Code Playgroud)
[原件:2019 年 12 月]
您可以使用jq,例如:
aws secretsmanager list-secrets \
| jq '.SecretList[] | select((.Tags[]|select(.Key=="Name")|.Value) | test("^Production$|^Staging$"))'
Run Code Online (Sandbox Code Playgroud)
您还可以使用 awscli 的内置查询选项,例如:
aws secretsmanager list-secrets \
--query "SecretList[?Tags[?Key=='Name' && Value=='Production']]"
Run Code Online (Sandbox Code Playgroud)
您可以将布尔测试与 awscli 的内置查询选项一起使用,例如:
aws secretsmanager list-secrets \
--query "SecretList[?Tags[?Key=='Name' && (Value=='Production' || Value='Staging')]]"
Run Code Online (Sandbox Code Playgroud)
以下是使用 Python 和 boto3 的解决方案的概述:
from functools import partial
import boto3
def filter_tags(key, values, secret):
for tag in secret['Tags']:
if tag['Key'] == key and tag['Value'] in values:
return True
return False
sm = boto3.client('secretsmanager')
paginator = sm.get_paginator('list_secrets')
secrets_list_iterator = paginator.paginate()
filter_production = partial(filter_tags, 'Name', ['Production', 'Staging'])
for secrets in secrets_list_iterator:
for s in filter(filter_production, secrets['SecretList']):
print(s['Name'], s['Tags'])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3496 次 |
| 最近记录: |