使用 AWS Lambda 和 API Gateway 建立 REST API 無伺服器應用程式

建立函式

首先,在 AWS Lambda 建立一個函式。

  • Function name: GetStartedLambdaProxyIntegration
  • Runtime: Node.js
  • Execution role name: GetStartedLambdaBasicExecutionRole

建立範例函式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
export const handler = function(event, context, callback) {
console.log('Received event:', JSON.stringify(event, null, 2));
var res ={
"statusCode": 200,
"headers": {
"Content-Type": "*/*"
}
};
var greeter = 'World';
if (event.greeter && event.greeter!=="") {
greeter = event.greeter;
} else if (event.body && event.body !== "") {
var body = JSON.parse(event.body);
if (body.greeter && body.greeter !== "") {
greeter = body.greeter;
}
} else if (event.queryStringParameters && event.queryStringParameters.greeter && event.queryStringParameters.greeter !== "") {
greeter = event.queryStringParameters.greeter;
} else if (event.multiValueHeaders && event.multiValueHeaders.greeter && event.multiValueHeaders.greeter != "") {
greeter = event.multiValueHeaders.greeter.join(" and ");
} else if (event.headers && event.headers.greeter && event.headers.greeter != "") {
greeter = event.headers.greeter;
}

res.body = "Hello, " + greeter + "!";
callback(null, res);
};

點選 Deploy 按鈕。

建立 API

API Gateway 建立一個 REST API。

  • API name: LambdaProxyAPI

建立 resource 如下:

  • Resource path: /
  • Resource name: helloworld

建立 method 如下:

  • Method type: ANY
  • 啟用 Lambda proxy integration 功能

部署

點選 Deploy API 按鈕,並建立 stage 如下:

  • Stage name: test

測試

使用 curl 測試。

1
curl -X GET 'https://xxx.execute-api.ap-northeast-1.amazonaws.com/test/helloworld?greeter=Memo'

回應如下:

1
Hello, Memo!

參考資料