Python Lambda函数检查Secrets Manager密钥复制状态问题
AWS Secrets Manager密钥复制状态检查的Lambda代码修改
你需要遍历replication_status返回的列表,逐个检查每个复制对象的Status和StatusMessage字段,判断是否存在符合条件的条目。以下是修改后的Lambda函数示例:
import boto3 def lambda_handler(event, context): secretsmanager = boto3.client('secretsmanager') secret_name = event['secret_name'] # 可从事件传入或直接指定密钥名称 try: response = secretsmanager.describe_secret(SecretId=secret_name) replication_status = response.get('ReplicationStatus', []) # 判断是否存在状态正常的复制条目 replication_healthy = any( item.get('Status') == 'InSync' or item.get('StatusMessage') == 'Replication succeeded' for item in replication_status ) return { 'statusCode': 200, 'body': { 'secret_name': secret_name, 'replication_healthy': replication_healthy } } except Exception as e: return { 'statusCode': 500, 'body': f'检查密钥复制状态失败: {str(e)}' }
- 用
response.get('ReplicationStatus', [])获取复制状态列表,避免密钥未开启复制时触发KeyError - 借助Python内置的
any()函数遍历列表,只要有一个元素满足条件就返回True,写法简洁高效 - 用
item.get('字段名')取值,避免字段不存在时抛出异常 - 最终
replication_healthy返回布尔值:True表示复制已启用且状态正常,False表示未开启复制或状态异常
内容的提问来源于stack exchange,提问作者brianbelden
相关产品推荐
相关产品推荐

