퍼블릭 클라우드

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

변군이글루 2024. 11. 27. 14:33
반응형

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
반응형