API Service
Packhouse API Service
npm install serverless packhouse-cli mocha -g
packhouse generate-api-service
你必須手動添加你的
IAM-ROLE
使你的Lambda有能力使用其他服務,可於serverless.yml
中找到以下欄位:provider:
name: aws
runtime: nodejs12.x
### 這裡
role: YOUR-IAM-ROLE
###
stage: v1
region: us-east-1
timeout: 30
memorySize: 256
建立的服務預設Region在
us-east-1。
cd service
npm install
npm run deploy
這是我們建立Packhouse前使用的架構:

參考自php laravel
由於是建立在Cloud Service的服務,因此Database的操作大多來自SDK,而不是SQL,所以讀寫資料庫的工作交由Repository:

Packhouse的架構跟Model2相差不遠
當你部屬好你的第一個服務後,就會看見以下這段Log:
endpoints:
GET - https://xxxxxx.execute-api.us-east-1.amazonaws.com/v1/hello
開啟你的瀏覽器並貼上這段網址:
https://xxxxxx.execute-api.us-east-1.amazonaws.com/v1/hello?message=helloworld
即可看到你的第一個Response:

也可以在Dynamodb中看到你的Message Log:

為了避免被收取額外費用,你可以使用
npm run remove
指令關閉整個服務。AWS SDK的所有方法雖然都有提供
promise
接口,但它的promise
有一個糟糕的問題,在有一定複雜的呼叫過程時如果有程式碼報錯,promise
會捕捉到error
卻不會觸發catch()
。// 這是個糟糕的例子 😢
let AWS = require('aws-sdk')
let client = new AWS.DynamoDB.DocumentClient()
let group = {
tools: {
getUser: {
handler(self, name) {
let parmas = {
TableName: 'users',
Key: {
name
}
}
// 避免如下宣告
client.get(params).promise().then(self.success).catch(self.error)
}
}
}
}
// 這是個優良案例 🤣
let AWS = require('aws-sdk')
let client = new AWS.DynamoDB.DocumentClient()
let group = {
tools: {
getUser: {
handler(self, name) {
let parmas = {
TableName: 'users',
Key: {
name
}
}
client.get(params, self.assess())
}
}
}
}
Last modified 3yr ago