서버리스 우편 번호 검색 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는 불릴 때마다 돈이 든다.

그리고 성능은 필수 체크입니다.

좋은 웹페이지 즐겨찾기