- Lambda(node.js)에서 openapi로 데이터 요청(request)
- openapi로 부터 json 파일을 받음(response)
- 받은 json파일을 parsing하여 dynamoDB로 저장(put)
- cloudwatch에서 로그 확인
import https from 'https';
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
import { PutCommand,DynamoDBDocumentClient } from "@aws-sdk/lib-dynamodb";
const ddbClient = new DynamoDBClient({ region: 'ap-northeast-2' });
const ddbDocClient = DynamoDBDocumentClient.from(ddbClient);
export async function handler(event) {
return new Promise((resolve, reject) => {
const options = {
hostname: 'apis.data.go.kr',
path: '/1360000/EqkInfoService/getEqkMsg?serviceKey=<serviceKey>&pageNo=1&numOfRows=10&dataType=JSON&fromTmFc=20230414&toTmFc=20230415',
method: 'GET'
};
const req = https.request(options, (res) => {
console.info(`statusCode: ${res.statusCode}`);
let responseBody = '';
res.on('data', (chunk) => {
responseBody += chunk;
});
res.on('end', async() => {
const body = JSON.parse(responseBody);
for(const item of body['response']['body']['items']['item']) {
console.info(item);
const params = {
TableName: "EarthquakeInfo",
Item: {
eqkId: String(item.tmEqk),
eqkTime: item.tmEqk,
},
};
try {
const data = await ddbDocClient.send(new PutCommand(params));
console.log("Success - item added or updated", data);
} catch(err) {
console.log("Error",err.stack)}
}
resolve(responseBody);
});
});
req.on('error', (error) => {
console.error(error);
reject(error);
});
req.end();
});
}
https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_lib_dynamodb.html