Python BOTO3:打印特定区域的实例信息
我正在尝试编写一个Python/BOTO3脚本,以获取区域us-east-1、us-west-1、ap-Southwest-1中的所有实例 我试图收集的信息是:Python BOTO3:打印特定区域的实例信息,python,amazon-web-services,boto3,Python,Amazon Web Services,Boto3,我正在尝试编写一个Python/BOTO3脚本,以获取区域us-east-1、us-west-1、ap-Southwest-1中的所有实例 我试图收集的信息是: 实例ID 实例类型 附加到实例的IAM角色 所有报警的列表项状态 我的目标是将其输出到CSV文件 目前我已经走了这么远,我有点卡住了,非常感谢您的帮助: import boto3 from collections import defaultdict regions = [ 'ap-southeast-1', 'u
- 实例ID
- 实例类型
- 附加到实例的IAM角色
- 所有报警的列表项状态
import boto3
from collections import defaultdict
regions = [
'ap-southeast-1',
'us-west-1',
'us-east-1',
]
ec2 = boto3.resource('ec2', region_name="us-east-2")
running_instances = ec2.instances.filter(Filters=[{
'Name': 'instance-state-name',
'Values': ['running']}])
ec2info = defaultdict()
for instance in running_instances:
ec2info[instance.id] = {
'Instance ID': instance.id,
'State': instance.state['Name'],
'Instance Type': instance.instance_type,
}
attributes = ['Instance ID', 'State', "Instance Type"]
for instance_id, instance in ec2info.items():
for key in attributes:
print("{0}: {1}".format(key, instance[key]))
print("------")```
Thanks in advance :-)
获取所有警报是一个棘手的部分,因为除非你事先知道它们的一些情况,否则很难找到所有警报。尽管如此,我还是为
CPUUtilization
开发了演示代码作为示例:
import boto3
regions = [
'ap-southeast-1',
'us-west-1',
'us-east-1',
]
for region in regions:
ec2 = boto3.resource('ec2', region_name=region)
running_instances = ec2.instances.filter(Filters=[{
'Name': 'instance-state-name',
'Values': ['running']}])
cw = boto3.client('cloudwatch', region_name=region)
for instance in running_instances:
instance_profile = 'N/A';
if instance.iam_instance_profile:
instance_profile = instance.iam_instance_profile['Arn']
print(region,
instance.id,
instance.instance_type,
instance_profile)
alarms = cw.describe_alarms_for_metric(
Namespace='AWS/EC2',
MetricName='CPUUtilization',
Dimensions=[
{
'Name': 'InstanceId',
'Value': instance.id
}]
)
if 'MetricAlarms' in alarms:
for alarm in alarms['MetricAlarms']:
print(f" - {alarm['AlarmName']}, {alarm['StateValue']}")
示例输出:
us-west-1 i-0d45a86caf2ee0e71 t2.micro arn:aws:iam::353693526480:instance-profile/InstanceRole
- awsec2-i-0d45a86caf2ee0e71-CPU-Utilization, OK
us-east-1 i-0f7cd6d6123e6c47e t2.micro N/A
谢谢@Marcin,我如何才能在此基础上添加第二个指标(例如“指标名称:mem_used_percent”),以及CSV导出的输出?