發表文章

目前顯示的是有「AWS Lambda」標籤的文章

AWS Serverless RESTful API

圖片
AWS Serverless RESTful APIs 近幾年在雲架構上討論熱度較高的 2 大主題分別是 容器化 (Containerize)與 無伺服器 (Serverless)架構。本篇文章會帶你瞭解什麼是 AWS 無伺服器架構,以及如何使用 Serverless Framework 這個框架,快速開發 RESTful APIs。 大綱 什麼是 XaaS? AWS 無伺服器架構 Serverless Framework CRUDable Service 基礎設施即程式碼 什麼是 XaaS? 馬雲說過一句話:「過去的一百年,我們把人變成了機器,未來的一百年,我們將會把機器變成人。」 人算不如天算,天算就是雲計算。 如果要用一句話來定義 XaaS(X as a Service)的話,那就是「 萬物皆服務 」。 舉凡 IaaS(基礎設施及服務)、PaaS(平台即服務)或 SaaS(軟體即服務)等⋯⋯,用一張圖來概括各個 XaaS 的關係: 坐在服務窗口後面的人最後都會變成 API。(via @legendtang ) — ruanyf (@ruanyf) 2016年8月26日 身為程式設計師,我們就是那個負責寫服務來取代人類的存在 。 所以能夠以最快速度開發出可驗證的服務原型,就成了開發者彼此之間的競爭條件之一,也是本篇文章的目的。 AWS 無伺服器架構 AWS 是目前雲技術的領頭羊,如果想要用 AWS 來開發 Serverless 的 RESTful APIs,主要會由 3 個核心服務所構成: AWS Lambda(Functions as a Service) Amazon API Gateway(REST API Endpoint as a Service) Amazon DynamoDB(NoSQL DB as a Service) 利用 3 個 XaaS 組成一個 BaaS(後端即服務) 這裡不會贅述如何操作這些 AWS 服務,如果你已經熟悉這些服務,可以直接前往下一章的 Serverless Framework;如果還不知道它們是怎麼運作的,強烈建議先跑過一遍官方的幾篇教學與實作,理解這 3 個傢伙為什麼這麼酷,也才能理解為什麼接下...

如何正確處理 AWS API Gateway 的 Lambda Error Status

圖片
翻譯自原文 Error handling in AWS API Gateway with Lambda 這篇文章會介紹如何設置 AWS API Gateway 正確處理 Lambda 返回的 HTTP 錯誤狀態碼。 更新:2016.03.12 claudia 可以自動化解決這個問題,詳細可以參考 這篇 文章。 本文假設讀者已經知道如何利用 AWS API Gateway 和 Lambda 建立 REST API,詳細可參考 Create API Gateway API for Lambda Functions 。 假設你的 Lambda function 錯誤處理如下: console.log('I am a AWS Lambda function'); exports.handler = function(event, context) { // 一般使用 context.fail 來返回 Lambda function 錯誤 context.fail(JSON.stringify({status:'fail', reason:'some reason', foo:'bar'})); }; 但是 API Gateway 返回的結果會是 HTTP 200 : HTTP/1.1 200 OK ... { "errorMessage": "{\"status\":\"fail\",\"reason\":\"some reason\",\"foo\":\"bar\"}" } 我們希望的結果是: HTTP Status 400 Bad request 只顯示 errorMessage 的 JSON 值 1. 新增 HTTP Status 400 Method Response 前往 API Gateway Console 進入 Method Execution 進入 Method Response 點選 Add Response 輸入 HTTP Status 400 點選...

Serverless! 使用 AWS 開發 Slack Slash Commands

圖片
本文介紹如何使用 AWS Lambda & AWS API Gateway 搭建一個不需要伺服器的環境,提供 Slack Slash Commands 查詢豆瓣電影。 2016-01-24 Update: New – Slack Integration Blueprints for AWS Lambda 在 Slack 輸入 /movie 絕地救援,會顯示相關的電影資料。 這篇文章使用到的技術: Slack Slash Commands AWS Lambda AWS API Gateway 豆瓣電影 API 閱讀這篇文章需要具備什麼能力: Node.js 的基本能力 Amazon Web Services 的基本操作 接下來我會逐步講解這些東西: Slack Slash Commands 的運作機制 建立一個簡單的 AWS Lambda function 建立一個簡單的 AWS API Gateway 執行 Lambda function 使用 Lambda 呼叫豆瓣電影 API 測試 AWS API Gateway 將 API Gateway endpoint 加入至 Slack Slash Command Slack Slash Commands 的運作機制 當你在 Slack channel 輸入 /movie 權力的遊戲 ,Slack 會發出一個 content-type Header 設為 application/x-www-form-urlencoded 的 HTTP POST 請求,格式如下: token=YOUR_SLASH_COMMAND_TOKEN team_id=YOUR_TEAM_ID team_domain=YOUR_TEAM_DOMAIN channel_id=YOUR_CHANNEL_ID channel_name=YOUR_CHANNEL_NAME user_id=YOUR_USER_ID user_name=YOUR_USER_NAME command=/movie text=權力的遊戲 response_url=YOUR_HOOK_URL 然後 Slack 需要收到的 JSON 回應格式如下(詳見 Attachments): { ...