如何在Boto3的get_parameters()中传入K8版本变量获取EKS优化AMI ID?
在Boto3中传入K8版本变量获取EKS优化AMI ID
可以实现,以下是几种常用的具体方法:
方法1:使用Python f-string(推荐)
f-string是Python 3.6+支持的字符串格式化方式,简洁直观,适合直接嵌入变量:
import boto3 ssm = boto3.client('ssm') eks_version = "1.21" # 可替换为传入的${EKS_VERSION}变量 # 拼接SSM参数路径 ami_param_path = f"/aws/service/eks/optimized-ami/{eks_version}/amazon-linux-2/recommended/image_id" # 调用SSM获取参数 response = ssm.get_parameters(Names=[ami_param_path]) # 提取AMI ID ami_id = response['Parameters'][0]['Value']
方法2:使用str.format()方法
兼容Python 2.7及以上版本,适合版本较低的运行环境:
import boto3 ssm = boto3.client('ssm') eks_version = "1.21" ami_param_path = "/aws/service/eks/optimized-ami/{}/amazon-linux-2/recommended/image_id".format(eks_version) response = ssm.get_parameters(Names=[ami_param_path]) ami_id = response['Parameters'][0]['Value']
方法3:字符串直接拼接
最基础的字符串拼接方式,逻辑清晰:
import boto3 ssm = boto3.client('ssm') eks_version = "1.21" ami_param_path = "/aws/service/eks/optimized-ami/" + eks_version + "/amazon-linux-2/recommended/image_id" response = ssm.get_parameters(Names=[ami_param_path]) ami_id = response['Parameters'][0]['Value']
注意事项
- 确保Lambda的执行角色拥有
ssm:GetParameters权限,否则会触发权限错误。 - 传入的K8版本格式要与SSM参数路径匹配,比如使用
1.21而非带补丁号的1.21.14,EKS优化AMI的SSM参数路径仅使用主版本号。
内容的提问来源于stack exchange,提问作者buttercup
相关产品推荐
相关产品推荐

