AWS Lambda는 Amazon Web Services (AWS)의 서비스로, 서버를 관리하지 않고 이벤트에 대한 코드를 실행할 수 있는 기능을 제공합니다. 애플리케이션을 구축하는 간단하고 확장 가능한 방법입니다.
이 튜토리얼에서는 AWS Lambda를 다른 세 가지 서비스와 함께 사용하는 방법을 보여드리겠습니다:
-
파일, 이미지 및 비디오 저장을 위한 Amazon S3
-
알림을 보내기 위한 Amazon Simple Notification Service (SNS)
-
메시지 예약을 위한 Amazon EventBridge
단계별로 모든 것을 진행하겠습니다.
최종적으로, 다른 서비스들과 통합하여 목표 실현 명언 앱을 만들어보겠습니다. 이 앱은 당신이 목표에 집중하고 동기부여를 유지하기 위해 무작위로 영감을 주는 메시지를 보내줍니다.
필수 준비물
-
AWS 계정: 계정이 없는 경우 여기에서 가입하세요.
-
GitHub 저장소: 소스 코드를 저장하기 위한 것입니다. GitHub 계정이 없는 경우 여기에서 생성할 수 있습니다.
-
Visual Studio Code
또는 Sublime Text와 같은 통합 개발 환경(IDE).
-
웹 개발의 기본 지식과 선택한 프로그래밍 언어에 대한 기본 지식이 필요합니다. 이 튜토리얼에서는 Python을 사용했습니다.
배울 내용
-
Amazon S3 버킷 생성 방법
-
Amazon Simple Notification Service (SNS) 사용 방법
-
Amazon Lambda 사용 방법
-
Amazon EventBridge 사용 방법
목차
단계 1: 개발 환경 설정
이 단계에서 모든 것을 설정합니다. 먼저 AWS 계정에 로그인한 다음, IDE에 Python을 설치하세요.
단계 2: Amazon Simple Storage Service (S3) 생성
S3 버킷을 생성하기 전에 Amazon S3가 무엇인지 먼저 이해해 봅시다:
Amazon S3 (Simple Storage Service)는 Amazon의 서비스로, 필요할 때 언제든지 사진, 비디오, 문서, 백업과 같은 모든 종류나 양의 데이터를 저장하고 액세스할 수 있도록 합니다.
이제 Amazon S3가 무엇인지 기본적으로 알았으니, 튜토리얼로 돌아갑시다.
S3 버킷 생성
이 튜토리얼에서는 S3 버킷을 만드는 여러 가지 방법이 있지만, Ubuntu 명령줄 (CMD), 터미널 또는 Amazon CloudShell을 사용할 것입니다. 더 편한 방법을 선택하시면 됩니다.
-
웹 검색 창에 boto3 s3를 입력하여 관련 문서 목록을 확인하세요.
-
첫 번째 결과를 클릭하세요.
- 문서가 열리면, 보이는 첫 번째 명령어를 복사하세요.
- CMD 또는 선택한 터미널에 붙여넣기 하기 전에 “cd“를 사용하여 올바른 디렉토리로 이동하세요.
- 문서에서 아래로 스크롤하여 “create_bucket”을 클릭하세요.
-
열리면, “요청 구문”으로 이동하세요. 버킷 이름과 버킷 구성을 복사하세요.
-
요청 구문에 나열된 다른 변수들은 선택 사항입니다.
- 작업을 마치면 저장을 꼭 확인하세요.
- 다시 돌아가서 스크립트를 호출하세요:
#python3 파일 이름
- 스크립트를 실행하면 자동으로 Amazon S3에 S3 버킷이 만들어집니다.
- 이제 콘솔로 이동하여 생성되었는지 확인할 수 있습니다:
파일 업로드
버킷을 생성했으므로 콘솔을 통해 파일을 업로드할 수 있습니다. 파일을 업로드하고 테스트하는 프로그래밍 방법도 있을 것으로 생각되지만 아직 문서에서 모든 방법을 탐색하지는 않았습니다.
오브젝트 페이지로 이동하려면 버킷 이름을 클릭하세요. 이곳에 파일을 저장합니다.
파일을 업로드하려면 업로드 버튼을 클릭하세요. 기억하세요, 우리는 목표 실현 명언 애플리케이션을 만들고 있습니다.
이제 저장 버킷을 설정했으므로:
-
Google 드라이브, MS Word, WPS 또는 기타 문서 편집기와 같은 도구를 열어주세요.
-
달성하고 싶은 목표를 적어주세요.
-
파일을 PDF 또는 DOCX 형식으로 저장하세요.
-
문서를 가져와서 Amazon S3에 업로드하세요.
올바른 파일인지 확인하려면:
-
권한 탭으로 이동하세요.
-
공개 액세스 차단으로 스크롤하세요.
-
편집을 클릭하고 상자의 선택을 해제하세요.
위에 표시된대로 현재 “켜짐”으로 설정되어 있습니다. “끄려면” 선택을 해제하세요.
-
동일한 버킷 설정 페이지에서 정책을 수정합니다.
-
아래로 스크롤하면 버킷 정책이 자동으로 생성된 것을 볼 수 있습니다.
-
정책을 복사하세요.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}
- 버킷 정책 편집기로 돌아가서 정책을 붙여넣으세요.
이러한 단계를 완료하면 객체에 대한 공개 액세스가 설정됩니다.
객체 탭으로 돌아가서 아래 제공된 객체 URL을 클릭하세요:
이 URL로 업로드가 이제 보입니다.
단계 3: Amazon Simple Notification Service (SNS) 생성
SNS은 AWS에서 제공하는 완전히 관리되는 메시징 서비스입니다. 이를 통해 애플리케이션 간이나 사용자에게 직접 알림을 보내는 통신이 가능합니다.
SNS를 생성하려면 다음 단계를 따르세요:
1. AWS 관리 콘솔에 로그인합니다
그런 다음 Amazon SNS로 이동합니다. SNS 대시보드로 이동하고 왼쪽 메뉴에서 주제를 선택합니다.
주제를 생성하려면:
-
주제 생성을 클릭합니다.
-
주제 유형을 선택합니다: 표준(기본값) 또는 FIFO(순서대로 메시지를 위한).
-
주제에 대한 이름을 입력하세요. (예:
MyFirstSNSTopic
). -
암호화, 배달 재시도 정책 또는 태그와 같은 선택적 설정을 구성하세요.
-
주제 생성를 클릭하세요.
2. 구독 추가:
주제가 생성되면 클릭하여 세부 정보 페이지를 엽니다. 구독 탭을 선택하세요.
구독 생성를 클릭하고 선택하세요:
-
프로토콜은 이메일, SMS, HTTP/S, Lambda 또는 SQS일 수 있습니다.
-
엔드포인트는 이메일 주소, 전화번호 또는 URL과 같습니다.
구독 생성를 클릭하세요.
3. 구독 확인:
이메일이나 SMS를 선택한 경우, 확인 링크 또는 코드가 제공된 엔드포인트로 전송됩니다. 구독을 확인하려면 지시 사항을 따르세요.
이제 이 작업을 완료했으니, Amazon Lambda 기능을 생성하여 SNS를 트리거하도록 만들어 메시지를 이메일로 보낼 수 있게 합시다.
단계 4: IAM 정책 생성
이 정책은 Amazon Lambda가 이벤트를 트리거하고 CloudWatch가 응용 프로그램 이벤트를 모니터링하도록 자동으로 트리거되도록 허용하기 위해 생성됩니다.
정책을 만들려면 다음 단계를 따르세요:
1. AWS 관리 콘솔에 로그인합니다.
왼쪽 메뉴에서 정책을 선택합니다. 그런 다음:
-
정책 생성을 클릭합니다.
-
시각적 탭을 선택한 다음 SNS 서비스를 선택합니다.
-
다음으로, 사용자 정의 정책을 만들기 위해 선택 탭을 클릭합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sns:Publish",
"Resource": "arn:aws:sns:REGION:ACCOUNT_ID:goal_topic"
}
]
}
그런 다음, 다음 플레이스홀더를 귀하의 정보로 대체하세요:
-
region
: 귀하의 AWS 지역 (예:us-east-1
). -
account-id
: 귀하의 AWS 계정 ID. -
topic-name
: 당신의 SNS 주제 이름입니다.
2. 정책을 보고 생성하기:
다음 단계를 따라 수행할 수 있습니다:
-
검토 버튼을 클릭하세요.
-
정책에 이름을(를) 지정하세요 (예:
LambdaSNSPolicy
), 선택적으로 설명을 추가할 수 있습니다. -
정책 생성을 클릭하세요.
3. 정책을 Lambda 실행 역할에 연결하기
이제 정책을 Lambda 실행 역할에 연결해야 합니다. 그렇게 하려면 다음 단계를 따르세요:
-
IAM 콘솔의 역할 섹션으로 이동하세요.
-
실행 역할을 검색하고 선택하세요.
-
다음으로, 방금 생성한 정책을 검색하고 선택하세요.
-
정책 연결을 클릭하세요.
두 정책은 자동으로 연결됩니다.
5단계: Amazon Lambda 함수 생성하기
Amazon Lambda는 서버 관리를 하지 않고 코드를 실행할 수 있게 해주는 AWS의 서비스입니다. 코드를 업로드하면 Lambda가 자동으로 실행하고 필요에 따라 확장합니다.
다음 단계에 따라 Amazon Lambda 함수를 생성하세요:
1. AWS Management Console에 로그인합니다:
AWS Lambda로 이동합니다.
2. 함수 생성:
함수 생성를 클릭하고 처음부터 작성 옵션을 선택합니다.
세부정보를 입력하세요:
-
함수 이름: 고유한 이름을 입력합니다(예:
SNSLambdaFunction
). -
런타임: 런타임을 선택합니다(예: Python, Node.js, Java 등).
- 역할: 역할을 선택하거나 생성합니다. 이미 역할이 있는 경우 기존 역할 사용를 선택합니다. 그렇지 않으면 기본 Lambda 권한으로 새 역할 생성를 선택합니다.
- 함수 생성 버튼을 클릭합니다.
3. 코드를 붙여넣습니다:
Lambda 함수 페이지에서 구성 탭으로 이동합니다:
기억하세요, 우리는 인용문을 가져오려고 합니다. 여기에서 우리가 생성한 토픽의 ARN을 추가하고 내 API 키를 포함할 것입니다. 하지만 이 튜토리얼에서는 데이터를 가져오기 위해 API를 직접 사용할 것입니다.
4. Lambda 코드 작성:
람다 함수의 코드 탭으로 이동하십시오. 그런 다음 IDE에서 수신 된 SNS 메시지를 처리하는 코드를 작성하거나 붙여넣으십시오.
예시:
다음은 코드입니다:
import os
import json
import urllib.request
import boto3
def fetch_random_quote():
"""
Fetches a random quote from the ZenQuotes API.
"""
api_url = "https://zenquotes.io/api/random"
try:
with urllib.request.urlopen(api_url) as response:
data = json.loads(response.read().decode())
if data and isinstance(data, list):
# 인용문과 저자 형식 지정
quote = data[0].get("q", "No quote available")
author = data[0].get("a", "Unknown author")
return f'"{quote}" - {author}'
else:
return "No quote available."
except Exception as e:
print(f"Error fetching random quote: {e}")
return "Failed to fetch quote."
def lambda_handler(event, context):
"""
AWS Lambda handler function to fetch a random quote and publish it to an SNS topic.
"""
# 환경 변수에서 SNS 주제 ARN 가져오기
sns_topic_arn = os.getenv("SNS_TOPIC_ARN")
sns_client = boto3.client("sns")
# 무작위 인용문 가져오기
quote = fetch_random_quote()
print(f"Fetched Quote: {quote}")
# 인용문을 SNS에 발행
try:
sns_client.publish(
TopicArn=sns_topic_arn,
Message=quote,
Subject="Daily Random Quote to help you stay motivated and inspired to achieve your goals",
)
print("Quote published to SNS successfully.")
except Exception as e:
print(f"Error publishing to SNS: {e}")
return {"statusCode": 500, "body": "Error publishing to SNS"}
return {"statusCode": 200, "body": "Quote sent to SNS"}
5. 저장:
저장하려면 배포 버튼을 클릭하십시오.
6. 람다 함수 테스트:
테스트 탭으로 이동하여 새 테스트 이벤트를 생성하십시오.
그런 다음 저장하고 테스트를 실행하십시오. 성공하면 메시지가 전송됩니다:
이것은 메시지가 생성되었음을 의미합니다.
마지막으로, 이 자습서에서 사용한 엔드포인트에 따라 이메일 또는 SMS를 확인하십시오. 저의 경우, 이메일을 사용했습니다.
단계 6: 이벤트브릿지 생성
Amazon EventBridge는 Amazon SNS 및 Amazon Lambda와 같은 응용 프로그램 및 AWS 서비스를 연결하는 데 도움이 되는 서비스입니다.
Amazon EventBridge 규칙을 생성하려면 다음 단계를 따르십시오:
1. EventBridge로 이동:
검색 창에 EventBridge를 입력하고 서비스 목록에서 선택하십시오.
2. 규칙 생성:
EventBridge 콘솔에서 왼쪽 패널의 규칙을 클릭합니다. 그런 다음 규칙 생성 버튼을 클릭합니다.
3. 규칙 세부정보 설정:
-
이름: 규칙에 대한 고유한 이름을 입력합니다.
-
설명 (선택 사항): 이 규칙이 수행하는 작업을 설명하는 설명을 추가합니다.
4. 이벤트 버스 선택:
기본 이벤트 버스를 선택합니다 (또는 생성한 다른 이벤트 버스를 선택합니다).
5. 이벤트 패턴 또는 일정 정의:
이벤트 패턴의 경우:
-
이벤트 소스로 AWS 서비스를 선택합니다.
-
특정 이벤트 유형을 선택합니다 (예: S3 파일 업로드 또는 EC2 인스턴스 상태 변경).
일정의 경우:
- 규칙을 고정된 간격으로 실행하기 위해 일정 옵션을 선택합니다 (예: 5분마다).
- 계속을 클릭합니다. 그러면 다음 세부정보 페이지로 이동합니다:
-
아래로 스크롤하여 크론 스케줄러를 클릭합니다. 크론 스케줄러는 메시지가 전송될 시간을 지정합니다.
-
유연한 시간 창 옵션에 대해 “끔”을 선택하세요.
-
규칙 세부정보를 검토하여 모든 것이 올바른지 확인하세요.
-
“다음” 버튼을 클릭하여 대상 페이지로 진행하세요.
위의 그림은 메시지가 전송될 시간을 보여줍니다.
- 대상 페이지에서 AWS Lambda를 선택하여 함수를 호출하세요.
- 스크롤을 내려서 생성한 함수를 선택하세요.
- “다음” 버튼을 클릭하여 진행하세요. 그러면 설정 페이지로 이동합니다. 권한 섹션에서 “기존 규칙 사용”을 선택하세요.
- 마지막으로 검토 후 일정을 생성하세요:
- 다음 페이지에서 모든 세부정보를 보여줍니다:
EventBridge를 사용하면 사용자용 스케줄러를 생성합니다.
단계 7: 코드 업로드
마침내 코드를 GitHub에 업로드하고 코드 작동 방식을 설명하는 적절한 문서를 포함하세요.
이 코드를 올리는 방법을 모르면 이 문서를 확인하세요: 프로젝트를 GitHub에 업로드하는 방법.
결론
모든 단계를 따랐다면, AWS Lambda, Amazon S3, Amazon SNS 및 Amazon EventBridge를 사용하여 목표 실현 명언 앱을 만들었을 것입니다. 이 앱은 동기부여 명언을 가져와 구독자에게 일정에 따라 전송합니다.
저장소 링크는 여기에서 확인할 수 있습니다.
진행 상황을 공유하거나 문제가 있는 경우 질문해도 괜찮습니다.
이 기사가 도움이 되었다면 다른 사람들과 공유해 주세요.
제 프로젝트를 팔로우하여 최신 정보를 받아보세요. Twitter, LinkedIn, GitHub에서 저를 팔로우하세요.
읽어 주셔서 감사합니다 💖.
면책사항:
이 기사에 표시된 자원(예: S3 버킷 및 해당 ARN)은 삭제되었으며 더 이상 존재하지 않습니다. 스크린샷에서 보이는 세부 정보는 단순히 시연을 위해 사용되었습니다.
Source:
https://www.freecodecamp.org/news/how-to-build-an-application-with-aws-lambda/