AWS SSM SDK会缓存DescribeParametersCommand的结果,以减少相同调用的网络负载和响应时间。如果您希望强制刷新参数的描述信息,可以使用以下代码来绕过缓存:
import boto3
from botocore.config import Config
from botocore.credentials import RefreshableCredentials
from botocore.session import get_session
# Get session and credentials
session = get_session()
creds = RefreshableCredentials.create_from_metadata(
metadata=refreshable_creds_metadata,
refresh_using=refresh_function,
method="sts-assume-role",
)
# Configure client with cache disabled
config = Config(
parameter_validation=False,
retries={
'max_attempts': 10,
'mode': 'standard'
},
region_name=AWS_REGION,
cache_disables=True
)
ssm = boto3.client('ssm', config=config, aws_access_key_id=creds.access_key,
aws_secret_access_key=creds.secret_key, aws_session_token=creds.token)
# Call DescribeParameters command with cache disabled
response = ssm.describe_parameters(CacheResult=False)
在上面的代码中,我们使用了Config(configurable)对象,通过其cache_disabled参数来避免缓存机制。同时,我们还可以在每个API调用中设置CacheResult参数为False,以确保结果没有被缓存。
值得注意的是,禁用缓存将增加网络请求和响应时间。因此,使用这种方法时需要明确其影响并加以权衡。