서버리스 우편 번호 검색 API를 작성해 보았습니다.
8113 단어 APIGateway람다S3AWS
개요
AWS에서 서버리스 우편번호 검색을 해본 절차입니다.
파일을 놓고 프로그램을 조금 쓰는 것만으로 쉽게 할 수 있습니다.
필요한 것
AWS 계정
이용하는 서비스
· S3 : 우편 번호의 CSV를 저장
・S3 Select: S3의 데이터를 SQL 라이크에 추출한다
· Lambda : S3의 CSV에서 응답을 반환하는 메서드
· API GetWay : Lambda의 내용을 API화한다
Step1:우체국 CSV 다운로드
일본 우정의 페이지로부터 이하 CSV를 다운로드.
문자 코드가 ShiftJIS이므로, UTF8로 변환해 둔다.
또 SQL을 알기 쉽게 하기 위해서, 이하의 헤더를 부여한다.
JISCode,OldPostCode,PostCode,PrefecturesNameKana,CityNameKana,TownNameKana,PrefecturesName,CityName,TownName,Note1,Note2,Note3,Note4,Note5,Note6
Step2 : S3에 CSV 데이터 업로드
버킷을 만든 다음 대상 CSV 파일 업로드

Step3 : S3 Select를 사용해보십시오.
S3 선택 탭 선택하고 화면 하단의 다음을 누릅니다.

SQL이 입력할 수 있는지 확인

Step4:Lambda 만들기
· · 언어는 Python
· 작성 후 IMA 역할에 S3 읽기 권한 부여

대상 롤에서 S3ReadOnlyAccess 부여

・ 소스 코드는 이하에서 작성
import boto3
BUCKET_NAME = 'XXXXXX'
OBJECT_KEY = 'XXXXXX.CSV'
COMPRESSION_TYPE = 'NONE'
def lambda_handler(event, context):
# APIのパラメーター
postcode = event['postcode']
# S3 Select
query = 'select * from s3object s where PostCode =\'' + postcode + '\''
s3 = boto3.client('s3')
#S3.Client.select_object_contentの設定
response = s3.select_object_content(
Bucket=BUCKET_NAME,
Key=OBJECT_KEY,
ExpressionType='SQL',
Expression=query,
InputSerialization={
'CSV': {
'FileHeaderInfo': 'USE',
'RecordDelimiter': '\n',
'FieldDelimiter': ',',
},
'CompressionType': COMPRESSION_TYPE,
},
OutputSerialization={
'JSON': {
'RecordDelimiter': '\n'
}
}
)
# 結果を表示
for payload in response['Payload']:
if 'Records' in payload:
records = payload['Records']['Payload']
return records
Step5:APIGetWay 만들기
REST를 선택, 새로운 API를 선택, 적절한 API명을 입력

・메소드의 작성, GET 메소드를 선택, 통합 타입을 Lambda로 하고, Lambda 함수명에 상기에서 세트한 이름으로 한다

· · 통합 요청 선택

· 매핑 템플릿에 application/json을 입력하여 체크를하고,
템플릿에 설정할 GET 파라미터의 값을 입력

· API 배포를 선택.

・스테이지명을 붙여, 보존하면・・・

완성!
완성된 URL을 두드리면 JSON 형식으로 결과가 반환된다.
PostCode가 매개변수입니다.

↓응답 예

마지막으로
Lamdba에서 API를 만들 수있어 편리하지만 그냥 아닙니다.
Lamdba는 불릴 때마다 돈이 든다.
그리고 성능은 필수 체크입니다.
Reference
이 문제에 관하여(서버리스 우편 번호 검색 API를 작성해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/haruto167/items/e06803f8d2b1432f6b19텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)