2017-05-11 55 views
1

我在特殊標題中獲得WebHook中的簽名。我想將它們傳遞給令牌體或屬性中的SQS。我試過以下配置。它不工作。請幫助想要從API網關將WebRequest的標頭值傳遞給SQS(或者作爲標記值或屬性)

以下是詳細信息:

AWS Service : Simple Queue Service (SQS) 
HTTP method :POST 
Path override :Account/QueueName?Action=SendMessage 
Execution role :arn:aws:iam::Acc#:role 
Content Handling :Passthrough 

Body Mapping Templates : 
Content-Type : application/json 

{ 
    "MessageBody" : { 
     "payload": $input.json('$'), 
     "x-api-key" : "$input.params('x-api-key')" 
    } 
} 

Instead of MessageBody, I also tried with "body". 
Response I get : 
{ 
    "Error": { 
     "Code": "MissingParameter", 
     "Message": "The request must contain the parameter MessageBody.", 
     "Type": "Sender" 
}, 
"RequestId": "d5fc3acf-18dc-5379-9af2-6b4cc42358f3" 
} 

我缺少什麼?請幫忙。我花了幾乎整整一天的時間試圖找出答案。

在此先感謝。

+0

我認爲sqs的輸入是錯誤的。這裏是一個示例https://medium.com/@gayanhewa/api-gateway-and-service-proxy-with-sqs-2699c6960690,這裏是另一個答案http://stackoverflow.com/questions/41097441/how-to -integrate-api-gateway-with-sqs –

+0

我嘗試了https://medium.com/@gayanhewa/api-gateway-and-service-proxy-with-sqs-2699c6960690上給出的解決方案。不幸的是,它不適合我。在第二個例子中,他們只是添加正文(我能夠通過)。我想對body進行額外的編輯,併爲它添加一個標題或在屬性中傳遞標題。 –

回答

0

SQS SendMessage API要求將MessageBody參數作爲查詢字符串參數進行傳遞。您可以將API Gateway配置爲通過任何輸入參數傳遞此參數,但不幸的是,目前無法使用基本參數映射來操作MessageBody以將其他參數添加到消息主體。如果SQS API將MessageBody參數作爲HTTP請求的POST正文,那麼您可以使用映射模板來完成此操作,但不幸的是,它需要將MessageBody作爲查詢字符串參數進行傳遞。

目前完成此操作的唯一方法是使用Lambda函數。您可以使用映射模板將原始MessageBody和API關鍵字傳遞給您的Lambda函數,然後將它們合併到您的Lambda函數中,並在查詢字符串參數中使用組合的MessageBody調用SQS SendMessage API。

相關問題