最新のamazon-ecsに最適化された特定の領域のイメージのEC2 ami IDを取得する必要があります。 ami-idを選択するために使用できるスクリプトまたはapiはありますか?新しいクラスタを作成するときに提供しますか?最新のamazon-ecsに最適化されたイメージのami-idを提供するスクリプトまたはapi
彼らは最新のAMIを使用してコンソールを更新したら、私は私のスクリプトを更新する必要はありませんように。
最新のamazon-ecsに最適化された特定の領域のイメージのEC2 ami IDを取得する必要があります。 ami-idを選択するために使用できるスクリプトまたはapiはありますか?新しいクラスタを作成するときに提供しますか?最新のamazon-ecsに最適化されたイメージのami-idを提供するスクリプトまたはapi
彼らは最新のAMIを使用してコンソールを更新したら、私は私のスクリプトを更新する必要はありませんように。
AWSコマンドラインインターフェイス(CLI)を使用してami-idを取得できます。 api describe-images
には、利用可能な画像が記載されています。 amazon-ecsに最適化された画像のオーナーIDは591542846629
です。
次のスクリプトは、ap-northeast-1
の最新のamazon-ecs-optimizedイメージ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
を私はまた、この所有者はより多くの画像の種類を追加する場合の基本的な名前の一致を使用しています。
すべてのAMIをメタデータと日付で印刷してから選択する方が安全です。 AWS CLIは返されるAMIの数を制限します。
これは私のものですが、上記と似ていますが、いくつかのフィルタがありますが、いくつかのオプションを同じ意味で置き換えています。前の例のすべてがJQおよび/またはパイプに依存しているので、純粋に、AWS CLIを使用しています
# 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
つ以上。主に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