我遇到了,我需要得到一個特定區域的最新亞馬遜ECS優化圖像的EC2 AMI ID的需求的AMI-ID。是否有任何可用於選擇ami-id的腳本或API,它們在創建新集羣時提供?腳本或API提供最新的亞馬遜ECS-優化的圖像
所以,一旦他們用最新的AMI控制檯,我不需要更新我的腳本。
我遇到了,我需要得到一個特定區域的最新亞馬遜ECS優化圖像的EC2 AMI ID的需求的AMI-ID。是否有任何可用於選擇ami-id的腳本或API,它們在創建新集羣時提供?腳本或API提供最新的亞馬遜ECS-優化的圖像
所以,一旦他們用最新的AMI控制檯,我不需要更新我的腳本。
我們可以使用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
我有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
我還使用基本名稱匹配的情況下,該業主增添了更多的圖像類型。
用它們的元數據和日期打印出所有的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
一個更純粹使用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