[AWS Lambda/API Gateway] queryStringParameter(URL 쿼리 문자열 파라미터)를 Lambda 함수 내에서 검색
7389 단어 람다APIGateway
개요
이 기사에서는, http://example.com/books/1?hoge=2
라고 하는 리퀘스트 URL내의 hoge=2
의 부분, 혹은 2
를 queryStringParameter
(URL 쿼리 캐릭터 라인 파라미터)라고 부릅니다.
이 queryStringParameter
를 API Gateway
를 통해 AWS Lambda
로 전달하기 위한 설정을 설명했습니다.
전제·대상자
API Gateway
를 통해 AWS Lambda
함수를 호출하는 것은 성공적입니다 queryStringParameter
이 상황에 빠져 있는 방향의 기사가 됩니다.
(내가 이 상태에서 2시간 정도 고민했는데....)
증상
본래라면, lambda의 handler 함수의 event
인수에 queryStringParameter
가 건네질 것인데도, event
인수의 내용이 빈 사전이 되어 버린다.
app_name/lambda_function.py
def lambda_handler(event, context):
print(event) # <- こうしておけば CloudWatch の EventLog で確認できる
return {
'statusCode': 200,
'headers': {
# INFO: CORS関係のエラー回避のために必要
'Access-Control-Allow-Origin': '*'
},
# 普通こんなことしないけど、結果を見るために設定
'body': json.dumps(event)
}
APIGateway에 대한 요청// お好みのブラウザの開発者ツールで実行できます
>> const API_URL = 'https://xxxxxxxxxx.execute-api.us-east-2.amazonaws.com/default/tradehist'
>> var response = fetch(API_URL + '?hoge=123').then(response => response.json())
>> response
결과는, response의 내용을 봐도, 원래 queryStringParameters
의 key조차 없다.
대책
event 인수에 queryStringParameters
가 포함되도록하기 위해,
방법 개요
API Gateway
의 「리소스」를 연 후, 이하의 항목을 조작했습니다.
def lambda_handler(event, context):
print(event) # <- こうしておけば CloudWatch の EventLog で確認できる
return {
'statusCode': 200,
'headers': {
# INFO: CORS関係のエラー回避のために必要
'Access-Control-Allow-Origin': '*'
},
# 普通こんなことしないけど、結果を見るために設定
'body': json.dumps(event)
}
// お好みのブラウザの開発者ツールで実行できます
>> const API_URL = 'https://xxxxxxxxxx.execute-api.us-east-2.amazonaws.com/default/tradehist'
>> var response = fetch(API_URL + '?hoge=123').then(response => response.json())
>> response
event 인수에
queryStringParameters
가 포함되도록하기 위해,방법 개요
API Gateway
의 「리소스」를 연 후, 이하의 항목을 조작했습니다.방법에 대해 자세히 알아보기
1. 해당 '메소드 요청'에서 'URL 쿼리 문자열 매개변수' 설정
①
API Gateway
의 「자원」을 연다② 해당 방법을 선택
③「메소드 리퀘스트」의 편집 화면에 들어간다
④⑤⑥⑦URL 쿼리 문자열 파라미터로서 취득하고 싶은(인식해 주었으면 한다) 파라미터명을 설정(이번이라면
hoge
라고 입력했다)2. 해당 메소드의 "통합 요청"에서 "Lambda 프록시 통합 사용"을 선택합니다.
① 해당 메소드의 「통합 리퀘스트」를 선택
② 「Lambda 프록시 통합의 사용」에 체크를 넣는다
3. "액션" 중 "API 배포" 수행
①②「API 배포」를 선택
③「배포되는 스테이지」를 선택
④「배포」실행
보충
배포 실행 직후라면 배포 전의 상태가 유지되고 있는 경우가 있다.
반영까지는 타임 러그가 있다고 봐 좋을 것 같다.
덧붙여서, 나의 경우는 1~3분 정도로 반영되었다.
결과
APIGateway에 다시 요청
>> const API_URL = 'https://xxxxxxxxxx.execute-api.us-east-2.amazonaws.com/default/tradehist'
>> var response = fetch(API_URL + '?hoge=123').then(response => response.json())
>> response
감상
IT 공부라기보다 AWS 서비스 사용법 공부를 하지 않으면 안 돼 왔다.
전혀 사용법을 모른다(´;ω;`)
관련 기사
아래의 기사에는 다른 방법이 쓰여 있다.
아래의 기사에는 다른 방법이 쓰여 있다.
두 방법 모두 방법을 모르기 때문에 포기했지만 아마도 "Lambda 프록시 통합 사용"을하지 않으면 "통합 요청"편집 페이지에 표시된 위치를 입력해야 할 것입니다.
Reference
이 문제에 관하여([AWS Lambda/API Gateway] queryStringParameter(URL 쿼리 문자열 파라미터)를 Lambda 함수 내에서 검색), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/siruku6/items/ad5905bcab8cddc09fab텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)