Amazon-Web-Services
無法列出所有圖像
我正在嘗試列出所有名稱為 Ansible* 的圖像。
如果我能把它拉下來,我可以用它來清理我在修補活動期間創建的 AMI。我正在通過 SSM 自動化文件進行嘗試。下面是我的程式碼。
description: This document is to remove AMI schemaVersion: '0.3' assumeRole: '{{ AutomationAssumeRole }}' mainSteps: - name: getImageId action: 'aws:executeAwsApi' inputs: Service: ec2 Api: DescribeImages Filters: - Name: 'name' Values: - 'Ansible*' outputs: - Name: ImageId Selector: '$.Images[0].ImageId' Type: String
在這裡,選擇器:’ $ .Images[0].ImageId’ gives only the 1st image id of the list. i can get it if i can give something like Selector: ’ $ 。圖片
$$ * $$.ImageId’,但 SSM 文件不支持。 有人可以幫助我嗎?我想要的是,我想列出所有帶有 AMI ID 的圖像。
PS:我有完成這項工作的 shell 和 python 腳本。但由於角色和策略限制,我正在尋找 AWS SSM 自動化文件
通過一些快速測試,我不確定你可以。
不過,您可以在 CLI 上執行此操作,所以也許您可以使用該庫並通過自動化
boto3
將其作為 Python 腳本執行?executeScript
有效的 CLI 命令:
aws ec2 describe-images --owners amazon --filters "Name=name,Values=amzn*" --query 'Images[*].Name' --output json
更新:
這是一個執行 python 腳本的自動化文件:
description: Gets all Amazon-owned AMIs. schemaVersion: '0.3' assumeRole: '{{ AutomationAssumeRole }}' mainSteps: - name: GetAMIs action: 'aws:executeScript' inputs: Runtime: python3.6 Handler: script_handler Script: |- import boto3 import json def script_handler(events, context): ec2_client = boto3.client('ec2', region_name='eu-west-2') images = ec2_client.describe_images(Owners=['amazon'],Filters=[{'Name':'name','Values':['amzn*']}]) amis = [] for image in images['Images']: amis.append(image['ImageId']) output = {"AMIs": amis[:10]} return output description: gets first 10 Amazon AMIs using boto3 outputs: - Selector: $.Payload.AMIs Name: AMIs Type: StringList timeoutSeconds: 120
請務必更改區域、搜尋字元串等內容。