함호에서 함명을 조사하는 API를 만들어 봤어요.
12110 단어 AWS자위대lambdaAPIGatewayRuby
몇 달 전에 회사 후배들이 몸이 안 좋아졌어요.
부서는 다르지만 걱정스럽게 물어봤더니'영원히 끝나지 않을 위탁 사건'때문에 마음이 꺾인 것 같다.
나는 좋은 건의를 할 수 있는 우수한 사람이 아니며, 감히 이 일관재앙의 시대에 너를 초대해서 점심을 먹을 수도 없다.
그럼에도 불구하고 내가 무엇을 할 수 있을지 고민하다가 후배들이 좋아하는 해상자위대 함선과 관련된 프로그램을 만들기로 했다.
규격.
code
를 표시하는 것이 하나밖에 없다.https://{APIのドメイン}?code={艦番号}
{
"code": "183",
"name": "いずも",
"class": "「いずも」型",
"hullCode": "護衛艦(DDH)"
}
시스템 전체 이미지함정 데이터의 준비
number,name,class,hull_code
91,はしだて,「はしだて」型,特務艇(ASY)
101,むらさめ,「むらさめ」型,護衛艦(DD)
102,はるさめ,「むらさめ」型,護衛艦(DD)
103,ゆうだち,「むらさめ」型,護衛艦(DD)
104,きりさめ,「むらさめ」型,護衛艦(DD)
105,いなづま,「むらさめ」型,護衛艦(DD)
...
Lambda 함수 만들기
x86_64
.URL 매개 변수
event['queryStringParameters']['code']
의 값을 가져옵니다.code
를 읽고 URL 매개 변수ships.csv
의 값과 일치하는 데이터를 JSON 형식으로 변환한다.code
이 이름의 머리는 그 뒤에 나오는 CORS에 대응하기 위한 곳이다.require 'json'
require 'json'
require 'csv'
def lambda_handler(event:, context:)
# TODO implement
#{ body: event.to_s }
code = event['queryStringParameters']['code']
json_hash = nil
CSV.foreach("./ships.csv") do |row|
# 行に対する処理
if row[0]==code
json_hash = {
"statusCode": "200",
"headers": {
"Access-Control-Allow-Headers": "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token",
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET,OPTION"
},
"body": JSON.dump({"code": row[0], "name": row[1], "class": row[2], "hullCode": row[3]})
}
end
end
if json_hash.nil?
json_hash = {
"statusCode": "503",
"headers": {
"Access-Control-Allow-Headers": "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token",
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET,OPTION"
},
"body": JSON.dump({"errorMessage": "The specified code was not found."})
}
end
return json_hash
end
API Gateway 설정API 생성
리소스 및 메서드 추가
Access-Controll-..
의 자원 명칭과 상응하는 부분을 가리킨다.https://{apiのドメイン}/{リソース名}/
에 대해 GET 방법을 추가했다.URL 조회 문자열 매개변수 지정하기
/
를 추가합니다.CORS의 유효성
※ API Gateway에 독립된 도메인을 추가하여 동일한 도메인에서 액세스할 때 설정할 필요가 없습니다.
프로그램 설계
실행 테스트
code
가 필요하기 때문에 실제 테스트의 URL은code
이다.잘한 "API 따라하기"를 후배들에게 보여줬습니다.
후배에게 "API Gateway와 람바다로 API를 만들어 봤다"고 말한 뒤
https://xxxxxx.execute-api.ap-northeast-1.amazonaws.com/prod?code={艦番号}
매개변수가 부착된 URL을 보내자 "오, 해 본 두부 API냐!"그리고 URL을 보는 순간 처음부터 "번호상의 문제인 줄 알았는데 완전'구슬'이네요"
(어매호의 함호는 181)
이렇게 기분을 좀 전환하면 좋을 텐데...
(그리고 나도 AWS를 조금 배울 수 있어서 다행이다...)
사실 이렇게 하고 싶어요.
Reference
이 문제에 관하여(함호에서 함명을 조사하는 API를 만들어 봤어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nkojima/items/a385f4bd4eb8aa55c481텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)