2017-02-16 40 views
3

我正在使用自定義身份驗證(使用自定義授權者)訪問AWS lambda。授權過程正常工作。但是,我在授權者lambda和業務lambda之間傳輸數據(ex principalId)時遇到了問題。我所有的lambda都是用JS開發的。 正如AWS文檔中的解釋,在授權者lambda中,我在Auth響應的上下文字段中添加了幾個簡單字段(下面的代碼中的principalId)。但在我的業務lambda中,我無法獲得這些字段。 AWS文檔討論了$上下文變量。AWS lambda:將數據從自定義授權者傳遞到業務lambda

首先,你能解釋我如果$背景變量是另一個變量或比JS函數的參數中收到的背景變量相同的變量?

其次,你能否解釋我如何獲得我的業務lambda數據字段(例如:principalId)由授權者提供?

勒布

+0

爲了澄清答案,它在JS函數的上下文變量中不可用。這是事件。該事件只是一個匹配您的映射模板或「代理」集成的默認格式的JSON映射。 –

回答

2

我猜$context變量,你指的是在API網關映射模板中的一個可用。它不等同於業務Lambda的context參數。

但是,使用映射模板及其$context變量,您可以構建業務Lambda的event參數。

如果你的API端點的映射模板看起來是這樣的:

{ 
    "principalId" : "$context.authorizer.principalId" 
} 

你應該在lambda的event參數檢索principalId

使用傳遞選項,principalId應在event.context['authorizer-principal-id']中可用。這是您創建端點時的默認行爲。


參考有關的文檔映射模板:

+0

你如何以及在哪裏定義映射模板? –

+0

轉到端點定義並輸入* Integration Request *部分。然後在* Body Mapping Templates *中,根據請求的內容類型,有多種選項來定義泛型集成或特定的集成。 –

0

除了亞歷克西斯答案,principalId - 目前可以從被傳遞的唯一PARAM自定義授權人到Lambda(截至今天)。但是,傳遞自定義參數的解決方法是將JSON參數串化爲principleId。關於此事的討論是here

相關問題