ご無沙汰しております。オンラインコンサルタントの直井です。だいぶ気温も上がり、桜の花びらが開き始め春の訪れを感じることができるようになってきました。
さて、今回はLambda(Python)を使って稼働中のEC2インスタンスの情報を取得する方法をご説明致します。
import json
import boto3
def lambda_handler(event, context):
ec2 = boto3.client('ec2')
try:
name_tag_key = 'tag:aws:autoscaling:groupName'
name_tag_value = '' #特定のNameタグがついているインスタンスに絞り込み
instance_state_key = 'instance-state-name'
instance_state_value = 'running' #稼働中のインスタンスに絞り込み
reservations = ec2.describe_instances(
Filters=[{'Name':name_tag_key ,'Values':[name_tag_value],},{'Name': instance_state_key,'Values': [instance_state_value]}])
except ClientError as e:
print('#ClientError!! at get_instance()')
raise e
tag:aws:autoscaling:groupNameでASGのNameタグが付与されているインスタンスに絞り込みます。更に、instance-state-nameがrunningのインスタンスへ絞り込みます。
意外に稼働中(runnning)への絞り込みが足りず終了したばかりのインスタンスを取得してしまうことがしばしあります。ご安全に