要解决AWS Systems Manager的GetParametersByPath API返回过时的结果,您可以使用以下代码示例:
import boto3
def get_parameters_by_path(path):
ssm_client = boto3.client('ssm')
response = ssm_client.get_parameters_by_path(
Path=path,
Recursive=True,
WithDecryption=True
)
parameters = response['Parameters']
next_token = response.get('NextToken', None)
while next_token:
response = ssm_client.get_parameters_by_path(
Path=path,
Recursive=True,
WithDecryption=True,
NextToken=next_token
)
parameters.extend(response['Parameters'])
next_token = response.get('NextToken', None)
return parameters
# 示例用法
parameters = get_parameters_by_path('/my-parameters/')
for parameter in parameters:
print(f"Parameter Name: {parameter['Name']}, Value: {parameter['Value']}")
上述代码示例中,我们通过递归调用GetParametersByPath API来获取指定路径下的所有参数。我们首先使用初始的get_parameters_by_path调用来获取第一页的结果,并将参数存储在parameters列表中。然后我们检查是否有NextToken,如果有则继续调用API来获取下一页的结果,并将参数添加到parameters列表中。我们使用while循环重复这个过程,直到没有更多的NextToken。最后,我们返回包含所有参数的parameters列表。
您可以根据自己的需求修改路径参数'/my-parameters/'。确保您已经配置了正确的AWS凭证,并安装了适当的AWS SDK(例如boto3)。
这样,您就可以获取不过时的结果了。