API Gateway에서 Lambda에 액세스

다음 Lambda 함수는 API Gateway에서 액세스하는 방법입니다.

index.js
// ---------------------------------------------------------------------
//
//  index.js
//
//                      Nov/03/2017
//
// ---------------------------------------------------------------------
console.log ("*** start *** index.js ***")

exports.handler = function (event,context,callback)
{
    var name = (event.name === undefined ? 'No-Name' : event.name)
    console.log('"Hello":"' + name + '"')
    console.log ("*** handler *** start ***")
    console.log ("event.key1 = " + event.key1)
    console.log ("event.key2 = " + event.key2)
    console.log ("event.key3 = " + event.key3)
    console.log ("おはようございます。")
    var dt = new Date()
    const year = dt.getFullYear()
    const month = dt.getMonth()+1
    const date = dt.getDate()
    const hours = dt.getHours()
    const minutes = dt.getMinutes()
    const seconds = dt.getSeconds()
    var str_out = "" + year + "-" + month + "-" + date
    str_out += " " + hours + ":" + minutes + ":" + seconds
    console.log(str_out)
    console.log(dt.toUTCString())
    console.log ("version Nov/03/2017 PM 14:16")
    console.log ("*** handler *** end ***")

    const rvalue = {"Hello": name,
            "city": "シモツケ"}
    callback(null, rvalue) // SUCCESS with message
}

// ---------------------------------------------------------------------

이 함수를 morning_function이라는 이름으로 Lambda에 등록합니다.
등록 방법은 여기입니다.
aws cli에서 람다 사용

다음과의 차이점은 uri가 http 또는 lambda의 차이입니다.
aws cli로 API Gateway에 대한 API 만들기

1) RestApi를 만듭니다. 출력에 rest-api-id가 표시됨

restapi_create.sh
#
aws apigateway create-rest-api --name 'Afternoon AAA' \
    --region ap-northeast-1
#

확인 방법
aws apigateway get-rest-apis

2) RestApi의 루트 리소스 ID 얻기

restapi_resource.sh
#
REST_API_ID=1awvlqh2cc
#
aws apigateway get-resources \
    --rest-api-id $REST_API_ID \
    --region ap-northeast-1
#

3) Method를 만듭니다.





4) 테스트합니다.





5) 배포합니다.





테스트



URL 호출
htps : // 오 7 우 cmfhj. 네, 아빠. 아 p의 r ぇ아 st-1. 아마조나 ws. 이 m / st01 "
합니다.

1) curl

restapi_test.sh
#
REST_API_ID=oa7ucmnfhj
#
URL="https://"$REST_API_ID".execute-api.ap-northeast-1.amazonaws.com/test01"
#
curl  -H "Content-Type: application/json" -X POST -d@in01.json $URL

in01.json
{"name": "夏目漱石",
"key1": "aaaa",
"key2": "bbbb",
"key3": "cccc"}

2) HTTPie

http_test.sh
URL="https://oa7ucmnfhjs.execute-api.ap-northeast-1.amazonaws.com/test01"
#
http $URL < in01.json

3) 파이썬

restapi_test.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
#
#   restapi_test.py
#
#                   Oct/18/2017
# ----------------------------------------------------------------
import sys
import json
import requests
# ----------------------------------------------------------------
#
rest_api_id="oa7ucmnfhj"
#
url="https://" + rest_api_id + ".execute-api.ap-northeast-1.amazonaws.com/test01"
#
print(url)
#
name = '夏目漱石'
key1 = 'abcdef'
key2 = 'test2'
key3 = 'test3'
#
payload = {'Content-Type': 'application/json',
        'name': name,
        'key1': key1,
        'key2': key2,
        'key3': key3}
#
rr = requests.post(url, data=json.dumps(payload))
#
print(rr.text)
#
# ----------------------------------------------------------------

4) Node.js

restapi_test.js
#! /usr/bin/node
// ---------------------------------------------------------------
//
//  restapi_test.js
//
//                  Oct/18/2017
//  
// ---------------------------------------------------------------
var Client = require('node-rest-client').Client

var client = new Client()
const args = {
    data: { "name": "夏目漱石" },
    headers: { "Content-Type": "application/json" }
}

const rest_api_id="oa7ucmnfhj"


const url="https://" + rest_api_id + ".execute-api.ap-northeast-1.amazonaws.com/test01"

client.post(url, args, function (data, response) {
    // parsed response body as js object 
    console.log(data)
    // raw response 
//    console.log(response);
})

//
// ---------------------------------------------------------------

다음 aws-cli 버전에서 확인했습니다.
$ aws --version
aws-cli/2.2.41 Python/3.8.8 Linux/5.14.7-arch1-1 exe/x86_64.arch prompt/off

좋은 웹페이지 즐겨찾기