7ms*_*ven 0 python amazon-web-services aws-lambda aws-secrets-manager
我试图使用 lambda 函数列出 AWS 秘密管理器中可用的所有秘密,以下是 python 代码片段;
region='us-west-2'
session= boto3.sesssion.Session(region_name=region)
client = session.client('secretsmanager')
secrets = client.list_secrets()
secrets_manager = secrets['SecretList']
for secret in secrets_manager:
print(secret['Name'])
Run Code Online (Sandbox Code Playgroud)
上面的代码只列出了一些秘密,而不是所有秘密,但运行以下 CLI 命令会返回所有秘密。
aws secretsmanager list-secrets | grep "Name"
Run Code Online (Sandbox Code Playgroud)
我在 python 代码中缺少什么?请指教
API 是分页的。您需要发送多个请求才能获取所有响应页面。默认情况下,CLI 会为您执行此操作。
最简单的方法是使用 boto3 中的分页器 API ——它将为您正确实现分页(不同的 AWS 服务/API 之间可能略有不同)
client = session.client('secretsmanager')
paginator = client.get_paginator('list_secrets')
page_iterator = paginator.paginate()
for page in page_iterator:
print(page)
Run Code Online (Sandbox Code Playgroud)
或者您可以“手动”执行此操作以获得相同的效果:
secrets = []
response = client.list_secrets()
secrets.extend(response['SecretList'])
while 'NextToken' in response:
response = client.list_secrets(NextToken=response['NextToken'])
secrets.extend(response['SecretList'])
for secret in secrets:
print(secret['Name'])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
858 次 |
| 最近记录: |