2017-04-08 24 views
2

我遇到了,我需要得到一個特定區域的最新亞馬遜ECS優化圖像的EC2 AMI ID的需求的AMI-ID。是否有任何可用於選擇ami-id的腳本或API,它們在創建新集羣時提供?腳本或API提供最新的亞馬遜ECS-優化的圖像

Create Cluster page in AWS Console

所以,一旦他們用最新的AMI控制檯,我不需要更新我的腳本。

回答

1

我們可以使用AWS命令行界面(CLI)獲取ami-id。 api describe-images描述可供您使用的圖像。發現amazon-ecs優化圖像的所有者ID是591542846629

下面的腳本返回該地區ap-northeast-1最新的亞馬遜ECS優化的圖片ID。

name=$(aws --region ap-northeast-1 ec2 describe-images \ 
    --owners 591542846629| awk -F ': ' '/"Name"/ { print $2 | "sort" }' \ 
    | tr -d '",' | grep -v rc |tail -1) 

ami_id=$(aws --region ap-northeast-1 ec2 describe-images --owners 591542846629 \ 
     --filters Name=name,Values="$name" \ 
    | awk -F ': ' '/"ImageId"/ { print $2 }' | tr -d '",') 

echo $ami_id 
1

我有jq製作安裝搜索和排序更簡單,更可靠:

aws --region ap-northeast-1 ec2 describe-images \ 
    --owners 591542846629 | \ 
    jq '.Images[] | {Name, ImageId} | select(.Name | contains("amazon-ecs-optimized"))' | \ 
    jq -s 'sort_by(.Name) | reverse | .[0].ImageId' -r 

我還使用基本名稱匹配的情況下,該業主增添了更多的圖像類型。

0

用它們的元數據和日期打印出所有的AMIs,然後選擇它會更安全。 AWS CLI會限制返回的AMI數量。

這裏是我的,這是與上述類似,但也有一些過濾器,也是我互換替代幾個選項。

# Owners 
owners=amazon 
owners=aws-marketplace 
owners=591542846629 # AMZN ECS 
owners=microsoft 

# AMI Regions 
region=us-west-2 
region=eu-central-1 

# Amazon AMI - ECS 
owners=591542846629 
type="amazon-ecs-optimized" 
aws ec2 describe-images \ 
--region ${region} \ 
--filters "Name=virtualization-type,Values=hvm" "Name=root-device-type,Values=ebs" \ 
--owners "${owners}" | jq -r '.Images[] | "\(.CreationDate) \(.Name) \(.ImageId)"' | grep "${type}" | sort -r | head 
0

一個更純粹使用AWS CLI,因爲所有前面的例子依靠JQ和/或管道。很大程度上取自Jason Haines的評論here

aws ec2 describe-images --owner amazon --filters 'Name=name,Values=amzn-ami-????.??.?-amazon-ecs-optimized' 'Name=state,Values=available' --query 'sort_by(Images, &CreationDate) | [-1].ImageId' --output text