반응형

AWS Lambda와 SQS를 사용해서 카카오 메시지 전송하는 기능을 만들었는데 

 

1. [AWS SQS] Nestjs로 SQS 전송, 수신 구현하기

 

[AWS SQS] Nestjs로 SQS 전송, 수신 구현하기

AWS SQS가 뭐지?Amazon Simple Queue Service(SQS)는 쉽게 말해서 Queue입니다. 마이크로서비스, 분산 시스템 등에서 메시지 손실 걱정 없이 어떤 볼륨의 메시지든 전송, 저장 및 수신이 가능한 메시지 대기열

zsunn.tistory.com

2. [AWS] Lambda + SQS로 카카오 알림톡 서비스 구현하기

 

[AWS] Lambda + SQS로 카카오 알림톡 서비스 구현하기

저번에는 SQS 송수신하는 코드를 구현해 보았는데요! 이번에는 이어서 SQS로 전송한 데이터를 Lambda로 받아서 알림톡으로 전송하는 서비스를 구현해 보겠습니다! 이전 글 참고 해주세요! [AWS SQS] Ne

zsunn.tistory.com

 

이전 게시글에서 SQS 송수신 구현하고 Lambda 설정까지 끝냈습니다.

다음 lambda 코드 소스를 짜보겠습니다.

 

저는 Node로 코드 구성을 했고, 하단에 런타임 설정에서 언어 설정 가능합니다.

 

 

코드 소스

환경변수 가지고 와서 카카오 API로 메시지 전송하는 부분까지 코드를 간단하게 작성했습니다.

const request = require('request');

exports.handler = function (event) {
    console.log('consume sqs message event', JSON.stringify(event.Records[0].body));
    
    try {
        const headers = {
            'Content-type': 'application/json',
            'userid' : process.env.BIZMSG_USER_ID,
          };
        
        const options = {
            uri: process.env.BIZMSG_API_HOST,
            method: 'POST',
            headers: headers,
            body: event.Records[0].body
        };
    
        request.post(options, function (error, response, body) {
            if (error) {
                console.error(error);
            }
            console.log(body);
        });
    } catch (error) {
        console.error(error);
    }
    
};

 

 

하지만 이렇게 끝내면 오류가 발생합니다!!

이유는 request 라는 라이브러리를 가지고 올 수 없기 때문이죠

 

Lambda 에서 사용하고 싶은 라이브러리는 직접 layer로 생성을 해서 부여해주셔야 합니다

 

Layers 추가

1. 새로운 폴더를 만들어줍니다.

mkdir nodejs && cd nodejs

 

 

2. 원하는 라이브러리를 다운로드합니다.

npm init
npm install --save request

 

3. zip 파일로 변경해 줍니다.

cd ..
zip -r layer.zip nodejs

 

4. awscli 다운로드해줍니다.

brew install awscli

 

5. lambda layer로 올려줍니다.

aws lambda publish-layer-version --layer-name request-layer --description "add request library" --zip-file fileb://layer.zip --compatible-runtimes nodejs14.x nodejs16.x nodejs18.x\n

 

6. 계층 > [Add a layer]

사용자 지정 계층을 보면 이제까지 올렸던 layer들의 목록이 보입니다.

 

원하는 layer를 선택 후 추가하면 아래와 같이 목록이 생성됩니다!

 

 

layer 목록에서 삭제하는 방법은 다음과 같습니다.

aws lambda delete-layer-version --layer-name request-layer --version-number

 

 

테스트도 해볼 수 있습니다.

 

반응형

+ Recent posts