Vau*_*ein 2 amazon-ec2 amazon-web-services autoscaling
我想在为自动缩放架构创建ec2实例时获取AWS Linux计算机的最新ami id。
我正在尝试使用awscli获取图像类型,但是如果使用该describe-images命令,它将打印出很多信息。
我的要求是仅获取映像ID,以便可以使用它来创建启动配置或使用最新的ami-id启动实例。
Joh*_*ein 12
一项鲜为人知的近期功能是使用AWS Systems Manager参数存储|查询最新的Amazon Linux AMI ID的功能。AWS计算博客。
命名空间由两部分组成:
/aws/service/ami-amazon-linux-latest/这些:
aws ec2 describe-images --owners amazon --filters "Name=name,Values=amzn*" --query 'sort_by(Images, &CreationDate)[].Name'
Get-EC2ImageByName -Name amzn* | Sort-Object CreationDate | Select-Object Name
Run Code Online (Sandbox Code Playgroud)
可以更改为:
aws ssm get-parameters --names /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2 --region us-east-1
Get-SSMParameter -Name /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2 -region us-east-1
Run Code Online (Sandbox Code Playgroud)
另外,它可以在CloudFormation模板中使用:
# Use public Systems Manager Parameter
Parameters :
LatestAmiId :
Type : 'AWS::SSM::Parameter::Value'
Default: ‘/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2’
Resources :
Instance :
Type : 'AWS::EC2::Instance'
Properties :
ImageId : !Ref LatestAmiId
Run Code Online (Sandbox Code Playgroud)
过滤输出并获取唯一必需属性的一种方法是使用过滤器的组合,对aws describe-images命令的查询如下:
aws ec2 describe-images \
--owners 'amazon' \
--filters 'Name=description,Values=Amazon Linux AMI*' \
--query 'sort_by(Images, &CreationDate)[-1].[ImageId]' \
--output 'text'
Run Code Online (Sandbox Code Playgroud)
命令说明:
您可以使用以下python脚本执行相同的操作:
import boto3
from operator import itemgetter
client = boto3.client('ec2')
response = client.describe_images(
Filters=[
{
'Name': 'description',
'Values': [
'Amazon Linux AMI*',
]
},
],
Owners=[
'amazon'
]
)
# Sort on Creation date Desc
image_details = sorted(response['Images'],key=itemgetter('CreationDate'),reverse=True)
ami_id = image_details[0]['ImageId']
Run Code Online (Sandbox Code Playgroud)
更新:
您可以使用细粒度过滤器来获得更快的响应。@Jack的答案中提到的过滤器。
filters = [ {
'Name': 'name',
'Values': ['amzn-ami-hvm-*']
},{
'Name': 'description',
'Values': ['Amazon Linux AMI*']
},{
'Name': 'architecture',
'Values': ['x86_64']
},{
'Name': 'owner-alias',
'Values': ['amazon']
},{
'Name': 'owner-id',
'Values': ['137112412989']
},{
'Name': 'state',
'Values': ['available']
},{
'Name': 'root-device-type',
'Values': ['ebs']
},{
'Name': 'virtualization-type',
'Values': ['hvm']
},{
'Name': 'hypervisor',
'Values': ['xen']
},{
'Name': 'image-type',
'Values': ['machine']
} ]
# Use above filters
response = client.describe_images(
Filters=filters,
Owners=[
'amazon'
]
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4913 次 |
| 最近记录: |