前置作業
假設我已經建立好一台 EC2
已準備一支用 Python 語法寫的 AWS Lambda function(當 EC2 是 Running 狀態時,就 Stop 它;當 EC2 是 Stopped 狀態時,就 Start 它)
import boto3 # 初始化 EC2 客戶端 ec2 = boto3.client('ec2') def lambda_handler(event, context): # 指定要操作的 EC2 實例 ID instance_id = 'i-0ebe0819d2efb0cff' # 獲取實例的當前狀態 response = ec2.describe_instances(InstanceIds=[instance_id]) state = response['Reservations'][0]['Instances'][0]['State']['Name'] # 根據實例的當前狀態進行操作 if state == 'running': # 如果實例正在運行,則停止它 stop_response = ec2.stop_instances(InstanceIds=[instance_id]) action = 'stopped' elif state == 'stopped': # 如果實例已停止,則啟動它 start_response = ec2.start_instances(InstanceIds=[instance_id]) action = 'started' else: # 如果實例處於其他狀態,不進行操作 return { 'statusCode': 400, 'body': f'Instance {instance_id} is in {state} state, no action taken.' } # 返回操作結果 return { 'statusCode': 200, 'body': f'Instance {instance_id} has been {action} successfully.' }
賦予 AWS Lambda 操作 EC2 的權限
執行測試:(Running => Stopped)
EC2 執行前
Lambda 執行結果
EC2 執行後
執行測試:(Stopped => Running)
EC2 執行前
Lambda 執行結果
EC2 執行後
No comments:
Post a Comment