반응형
Java에서 AWS lambda로 internal invoke 시켜 node를 이용하여 수신할 수 있는 코드 예시를 보여드리고자 합니다.
Java 코드에서 호출하는 Lambda 함수에 필요한 모든 정보는 withPayload 메서드를 통해 JSON 형식의 문자열로 전달할 수 있습니다.
참고로, AWS Lambda를 호출할 때 HTTP 요청과 다르기에 헤더를 삽입할 순 없습니다.
import com.amazonaws.services.lambda.AWSLambda;
import com.amazonaws.services.lambda.AWSLambdaClientBuilder;
import com.amazonaws.services.lambda.model.InvokeRequest;
import com.amazonaws.services.lambda.model.InvokeResult;
public class LambdaInvoker {
public static void main(String[] args) {
// AWSLambda 클라이언트 생성
AWSLambda lambdaClient = AWSLambdaClientBuilder.defaultClient();
// Lambda 함수 호출을 위한 InvokeRequest 객체 생성
InvokeRequest invokeRequest = new InvokeRequest()
.withFunctionName("YourLambdaFunctionName")
.withPayload("{ \"sender\": \"JavaApplication\", 'key1': 'value1', 'key2': 'value2' }"); // 송신자 정보 추가
// Lambda 함수 호출
InvokeResult invokeResult = lambdaClient.invoke(invokeRequest);
// 결과 출력
String response = new String(invokeResult.getPayload().array());
System.out.println(response);
}
}
Node에서는 다음과 같이 데이터를 수신 할 수 있습니다.
Lambda 함수를 구성하여 API Gateway의 이벤트를 직접 처리할 수 있고 이는 Lambda 함수가 API Gateway와 연동될 때 표준적인 방법으로 활용됩니다.
exports.handler = async (event) => {
console.log("이벤트: ", event);
// API Gateway 이벤트에서 바디 추출
const body = JSON.parse(event.body);
console.log('Received data:', body);
// 송신자 정보가 있는 경우 출력
if (body.sender) {
console.log('Data sent by:', body.sender);
}
// 함수의 결과 반환
return {
statusCode: 200,
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
message: "Data received successfully"
})
};
};
이 코드는 API Gateway로부터 전달된 이벤트를 처리합니다.
event.body는 요청 본문을 포함하고 있으며, 이는 문자열로 전달되므로 JSON.parse를 사용하여 객체로 변환해야 합니다.
반응형
'Applied > AWS' 카테고리의 다른 글
DynamoDB query range와 promise.all 성능 비교 (0) | 2024.01.24 |
---|---|
nodejs Lambda 함수에서 다른 Lambda 함수 호출하기 (0) | 2023.12.17 |
[AWS] Lambda에서 S3 파일 읽기 실습 (0) | 2022.12.02 |
[AWS] KMS(Key Management Service) 실습 (0) | 2022.11.30 |
Yaml 파일이란? (0) | 2022.09.20 |