Lambda 함수에서 `requests` 모듈을 사용하는 경우, 해당 모듈을 포함한 배포 패키지를 만들어야 합니다. Lambda는 기본적으로 `requests` 라이브러리를 포함하지 않으므로, 직접 포함시켜야 합니다.
mkdir lambda_function
cd lambda_function
pip install requests -t .
import boto3
import json
import os
import requests
def lambda_handler(event, context):
# EC2 클라이언트 생성
ec2 = boto3.client('ec2')
# 사용 가능한 EBS 볼륨 찾기
volumes = ec2.describe_volumes(
Filters=[
{
'Name': 'status',
'Values': ['available']
}
]
)
available_volumes = volumes['Volumes']
# 사용 가능한 EBS 볼륨이 있는지 확인
if not available_volumes:
print("No available volumes found.")
return
# 사용 가능한 EBS 볼륨 정보 생성
volume_info = ""
for volume in available_volumes:
volume_info += f"Volume ID: {volume['VolumeId']}, Size: {volume['Size']} GiB, Availability Zone: {volume['AvailabilityZone']}\n"
# 사용 가능한 EBS 볼륨 정보 출력
print("Available volumes:\n", volume_info)
# Slack Webhook URL
slack_webhook_url = os.environ['SLACK_WEBHOOK_URL']
# Slack으로 메시지 전송
slack_message = {
'text': f"Available EBS Volumes:\n{volume_info}"
}
response = requests.post(slack_webhook_url, data=json.dumps(slack_message), headers={'Content-Type': 'application/json'})
if response.status_code != 200:
raise ValueError(f"Request to Slack returned an error {response.status_code}, the response is:\n{response.text}")
return {
'statusCode': 200,
'body': json.dumps('Slack message sent successfully!')
}