나만의 GeoIP 서비스 1/2: Maxmind GeoIP + AWS SAM
요건
이것은
start-from-subzero
자습서가 아니므로 이 첫 번째 게시물을 시작하기 전에 컴퓨터에 몇 가지 설치 및 작업이 필요합니다.GeoIP 타사 서비스 사용에 대한 많은 문헌이 있지만 프로젝트에서 사용할 DIY GeoIP 엔드포인트를 플레이하고 테스트하고 싶다면 두 개의 게시물을 통해 저를 팔로우하고 수행 방법을 확인해 보겠습니다.
최종 목표인 "IP를 쿼리 매개변수로 수신하고 국가 및 도시와 같은 위치 정보를 반환하는 내 엔드포인트"에 대해 명확히 합시다. 이 목표를 달성하기 위해 다음 기술/서비스를 사용할 것입니다.
맥스마인드
우선, Maxmind(https://dev.maxmind.com/geoip/geoip2/geolite2/)는 사용할 수 있는 무료 GeoIP(제한된) 데이터베이스 그룹을 제공합니다. 위 URL의 지침에 따라 "GeoLite2 City"를 다운로드하십시오.
나중에 사용할 수 있도록 "GeoLite2-City.mmdb"파일을 찾습니다.
이제 https://github.com/maxmind/GeoIP2-node에서 API의 NodeJS 사용량을 확인하겠습니다. 걱정하지 마세요. 잠시 후 몇 줄의 코드를 추가할 것입니다.
AWS 서버리스 애플리케이션 관리자(SAM)
SAM을 사용하면 적은 노력으로 서버리스 애플리케이션을 구축하고 배포할 수 있습니다. SAM은 전체 애플리케이션을 구축하기 위해 완전한 REST 기능을 제공하는 데 중점을 두고 있지만 Lambda 함수를 관리, 호출 및 배포하는 데만 SAM을 사용할 것입니다.
SAM을 설치하고 시작하는 것은 이 게시물의 범위를 벗어나므로 공식 문서를 따라 수행할 수 있습니다https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html.
컴퓨터에서 SAM이 작동할 때마다 다음 단계를 따르십시오.
sam init
. 다음 스크린샷과 같이 프로젝트를 설정합니다. cd geoIPNode
sam local invoke
이것은 template.yml
에서 기본값을 실행하므로 다음 출력이 표시되어야 합니다(참고: 컴퓨터에 Docker가 필요합니다): 다시 맥마인드
https://github.com/maxmind/GeoIP2-node으로 돌아가 해당 페이지에서 NodeJS 코드를 확인합니다.
Buffer
예를 사용합니다.const fs = require('fs');
const Reader = require('@maxmind/geoip2-node').Reader;
// Typescript:
// import { Reader } from '@maxmind/geoip2-node';
const dbBuffer = fs.readFileSync('/usr/local/city-database.mmdb');
const reader = Reader.openBuffer(dbBuffer);
console.log(reader.city('1.1.1.1'));
*.mmdb 파일이 어디에 있는지 기억하십니까? 다음과 같은 폴더 구조를 얻기 위해 프로젝트 폴더 안에 넣어야 합니다.
이제 이에 대한 초기 코드 교체를 추가합니다(귀하의 IP에 대해 1.1.1.1 교체).
const fs = require('fs');
const Reader = require('@maxmind/geoip2-node').Reader;
exports.helloFromLambdaHandler = async () => {
let response={};
const dbBuffer = fs.readFileSync('GeoLite2-City.mmdb');
const reader = Reader.openBuffer(dbBuffer);
try {
// const ret = await axios(url);
response = {
'statusCode': 200,
'body': JSON.stringify({
message: 'hello world',
city: reader.city('1.1.1.1').city
})
}
} catch (err) {
console.log(err);
return err;
}
return response
}
참고: Yarn 또는 NPM을 사용하여 설치
@maxmind/geoip2-node
하는 것을 잊지 마십시오. 예를 들면 다음과 같습니다.npm install @maxmind/geoip2-node
간부 다시
sam local invoke
:그것은 쉽다.
두 번째 부분은 이미 .
Reference
이 문제에 관하여(나만의 GeoIP 서비스 1/2: Maxmind GeoIP + AWS SAM), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/producthackers/your-own-geoip-service-1-2-maxmind-geoip-aws-sam-52go텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)