Aws
EC2에 접속 시 로그 DB에 저장 (SQS, DynamoDB)
wngnl05
2024. 12. 27. 14:50
2024.04.13 - [Aws] - EC2에서 SQS에 메세지 전송하는 코드
EC2 Setting
더보기
시작하기 전에 Bastion에서 계정을 하나 생성해줍니다.
passwd명령으로 계정에 비밀번호를 설정해줍니다.
sudo useradd wngnl
sudo passwd wngnl
Log를 저장할 login.txt를 만들어주겠습니다. <파일 이름 변경 가능>
sudo touch /var/log/login.txt
sudo chmod 777 /var/log/login.txt
Bastion에 접속할 때 마다 sh명령을 실행하도록 해주겠습니다. <login.sh 파일 이름은 아무 상관 없음>
login.sh에 접속하여 아래 코드를 넣어줍니다. <login.sh는 처음에 빈 파일이 맞음>
sudo vi /etc/profile.d/login.sh
aws sqs send-message --queue-url <SQS 링크> --message-body "$USER" --endpoint-url https://<앤드포인트 링크> --region ap-northeast-2
sudo chmod 777 /etc/profile.d/login.sh
다시 로그인 후 알맞은 USER가 입력되었는지 확인해주세요.
cat /var/log/login.txt
Lambda 함수를 만들어줍니다. < 권한도 추가해줍니다. >
- AmazonDynamoDBFullAccess
- AmazonSQSFullAccess
dynamo-db-function Code
더보기
import json
import boto3
from datetime import datetime
import pytz
def lambda_handler(event, context):
# SQS 메시지 리스트에서 첫 번째 메시지의 본문 출력
message_body = event['Records'][0]['body']
# DynamoDB 연결
dynamodb = boto3.resource('dynamodb')
# DynamoDB 테이블 선택 (테이블 이름)
table = dynamodb.Table('skills-table')
# 한국 시간 가져오기 (정렬 키 값으로 사용)
KST = pytz.timezone('Asia/Seoul')
current_time = datetime.now(KST).isoformat()
# DynamoDB에 데이터 삽입
response = table.put_item(
Item={
'test': f"{current_time}", # 파티션 키에 현재시간 설정
'sort_key': "USER_NAME", # 정렬 키 <원하는 값 사용>
'USER': message_body # CloudWatch LogGroup Data
}
)
print("Successfully inserted data into DynamoDB:", response)
return response