본문 바로가기

퍼블릭 클라우드

AWS Lambda에서 Node.js 샘플 코드를 실행하는 방법

반응형

AWS Lambda에서 Node.js 샘플 코드를 실행하는 방법

1. AWS Lambda 함수 생성

AWS Management Console에서 Lambda 함수 생성합니다.

 

Lambda 서비스 > 함수 생성

  • 함수 이름 : sendSlackMessage
  • 런타임 : Node.js (최신 버전)
  • 아키텍처 : x86_64
  • 권한 : 기본 역할 생성 또는 기존 역할 선택

Lambda

함수 생성을 클릭하여 Lambda 함수를 생성합니다.

2. Node.js 코드 작성

Lambda 함수가 생성되면 기본적으로 제공되는 index.mjs 파일에서 샘플 코드를 작성할 수 있습니다.

export const handler = async (event) => {
  // TODO implement
  const response = {
    statusCode: 200,
    body: JSON.stringify('Hello from Lambda!'),
  };
  return response;
};

간단한 코드

indexm.js 파일에 Slack Webhook으로 메시지를 보내는 Node.js 코드를 작성합니다.

  • webhookUrl : https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
  • text : Hello, this is a message from AWS Lambda!
  • channel : #general
  • username : AWS Lambda
  • path : /services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
import https from 'https';

export const handler = async (event) => {
    const webhookUrl = 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX'; // Your Slack Webhook URL

    // Correctly structure the payload
    const message = JSON.stringify({
        text: "Hello, this is a message from AWS Lambda!",  // The main message
        channel: '#general',  // Optional: Channel to send the message to (ensure the channel exists in Slack)
        username: 'AWS Lambda'  // Optional: Customize the username that appears on Slack
    });

    const options = {
        hostname: 'hooks.slack.com',
        port: 443,
        path: '/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX', // Ensure the path is correct (from your Webhook URL)
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
            'Content-Length': Buffer.byteLength(message)
        }
    };

    return new Promise((resolve, reject) => {
        const req = https.request(options, (res) => {
            let response = '';
            res.on('data', (chunk) => {
                response += chunk;
            });
            res.on('end', () => {
                console.log('Slack response:', response);
                resolve({
                    statusCode: 200,
                    body: JSON.stringify({
                        message: 'Message sent to Slack',
                        slackResponse: response
                    })
                });
            });
        });

        req.on('error', (error) => {
            console.error('Error sending message to Slack:', error);
            reject({
                statusCode: 500,
                body: JSON.stringify({
                    message: 'Failed to send message to Slack',
                    error: error.message
                })
            });
        });

        req.write(message);
        req.end();
    });
};

Deploy를 클릭하며 함수 sendSlackMessage이(가) 업데이트됩니다.

3. Lambda 함수 테스트

테스트 버튼을 클릭하여 새로운 테스트 이벤트를 생성합니다.

  • 이벤트 이름 : TestEvent
  • 이벤트 템플릿 : {} (빈 JSON 입력)

Lambda

테스트 버튼을 클릭하여 함수를 실행합니다.

4. 테스트 결과 확인

Lambda 함수가 실행되면, 콘솔에서 반환된 결과를 확인할 수 있습니다.

Lambda

Slack 채널에서 메시지가 전송되었는지 확인합니다.

  • Lambda 함수가 실행되면 Slack 채널에 "Hello, this is a message from AWS Lambda!"라는 메시지가 전송됩니다.

Lambda

 

이 코드에서는 Slack Incoming Webhook URL을 사용하여 메시지를 보내는 예제입니다.

 

참고URL

- AWS Documentation : Node.js를 사용하여 Lambda 함수 빌드

 

728x90
반응형