如何使用Python boto3获取AWS Parameter Store参数的描述字段
问题根因
boto3 的 get_parameter() 接口默认不会返回参数的 Description 字段,这是AWS SSM API的原生设计,和参数写入逻辑无关。你现有代码重复调用两次get_parameter没有实际意义,这个接口本身就不回传描述类元数据。
另外你的读取代码里还有个笔误:定义的变量是str_encrypted_pw,打印的时候却用了未声明的decrypted_pw,运行时也会抛出变量不存在的错误。
修复方法
要获取写入的Description内容,需要调用describe_parameters()接口,该接口会返回参数的全量元数据,包括描述、创建时间、修改时间、参数层级等信息。注意这个接口只返回元数据,不返回参数值,解密后的参数值还是通过get_parameter()获取即可,不需要重复调用两次get_parameter。
修正后的读取代码如下:
while True: read_info = input("Service: ") # 输入要查询的服务名 read_info = read_info.upper() # 获取解密后的参数值 value_resp = ssm_client.get_parameter( Name=read_info, WithDecryption=True ) decrypted_pw = value_resp['Parameter']['Value'] # 获取参数元数据(包含Description字段) meta_resp = ssm_client.describe_parameters( ParameterFilters=[ { 'Key': 'Name', 'Values': [read_info] } ] ) # describe_parameters返回匹配的参数列表,单个查询取第一个元素即可 str_username = meta_resp['Parameters'][0]['Description'] print("Username:\n", str_username) print("Password:") print(decrypted_pw) break
补充说明
如果需要批量查询多个参数的信息,可以搭配get_parameters()(批量拿参数值)和describe_parameters()(批量拿元数据)使用,减少API调用频次,避免触发SSM接口限流。
内容的提问来源于stack exchange,提问作者eaglehuntt
相关产品推荐
相关产品推荐

