2015-08-16 201 views
7

我通過設置指向它的AWS API網關端點向公開HTTP請求公開AWS Lambda函數。是否可以使用AWS API爲Lambda函數設置AWS API網關端點?

有兩個部分是:

  • 創建並上傳我的AWS lambda函數
  • 設置API網關的HTTP端點指向我的lambda表達式

我想使用API​​調用而不是Web界面來執行這兩個部分。我可以使用AWS開發工具包和AWS CLI爲第一部分做到這一點。

但是,對於第二部分,我卡住了。在查看AWS SDK for node.jsAWS CLI

時,我沒有發現API網關的提及有沒有方法使用AWS API以編程方式爲Lambda函數設置API網關端點?

+0

CLI/SDK支持書面教程'API Gateway'還沒有準備好。我個人希望能夠在're:Invent 2015'上發佈更多有關這些功能的細節。 – kixorz

+1

此外,'CloudFormation'可能對您未來的工作有很大的幫助。 – kixorz

回答

7

是的,可以通過AWS的API爲您的AWS Lambda功能設置您的Amazon API網關端點。

雖然Node.js和AWS CLI中的適用於JavaScript的AWS開發工具包尚不支持Amazon API Gateway,但您可以使用Amazon API Gateway REST API而不使用官方SDK進行設置。在這種情況下,你可能會使用這些API:

  1. RESTAPI:創建
  2. 資源:創建
  3. 方法:把
  4. 整合:把
  5. integrationresponse:把
  6. methodresponse:看跌

您可能希望使用第三方庫集成Amazon API Gatew使用AWS Lambda,例如jaws-stack/JAWSr7kamura/fluct

2

是的......這是絕對可能的。以下是使用AWS-SDK for node.js的一些node.js代碼。我在這裏做一個POST方法集成。現在你需要一些東西。希望這有幫助,祝你好運!

您正在使用的網關API

方法的RESOURCEID網關API休息標識

的調用角色能夠引起您的lambda表達式的ARN

您想要整合的Lambda函數的ARN。

var AWS = require('aws-sdk'); 

api = new AWS.APIGateway(); 

var params = { 
    httpMethod: 'POST', 
    resourceId: [YOUR RESOURCE ID], 
    restApiId: [YOUR REST API ID], 
    type: 'AWS', 
    uri: [YOUR LAMBDA FUNCTION ARN], 
    integrationHttpMethod: 'POST', 
    credentials : [YOUR INVOKE ROLE ARN] 
}; 

api.putIntegration(params, function (err, data) { 
    if (err) { 
     console.log('AWS Error', err); 
    } else { 
     console.log('Put Integration Method Created', data); 
    } 
}); 
+0

謝謝凱文! uri不容易弄清楚,所以這裏有一個更詳細的描述,以幫助某人:--uri arn:aws:apigateway:aws-region:lambda:path/2015-03-31/functions/arn:aws :波長:AWS區域:AWS-ACCT-ID:功能:您-λ-功能名稱/調用 –

0

您可以將您的API端點lambda函數。在API網關中創建新的HTTP方法時,選擇「集成類型」作爲「Lambda函數」,然後選擇需要調用的Lambda函數。

主要挑戰是將API輸入參數映射到Lambda模型對象,您可以手動定義映射或提供模型模式(使用json-schema)。

實施例的映射:

{ 
    "firstname" : "$input.params('firstname')", 
    "lastname" : "$input.params('lastname')" 
} 

參見this blog後爲一步一步的Java 8.

相關問題