簡體   English   中英

AWS API網關-如何進行S3 Cognito用戶池限制的文件夾訪問?

[英]AWS API gateway - how to do S3 Cognito userpool-restricted folder access?

我的應用程序使用Cognito用戶池來限制訪問,以便每個用戶都可以在“專用”存儲桶中讀取/寫入自己的個人文件夾。 在“公共”存儲桶中,它是相同的,只是每個人都具有對所有內容的讀取訪問權限,而僅對自己文件夾的寫入權限。 通過JavaScript S3 SDK訪問時,一切正常。

我現在正嘗試通過與訪問S3的Lambda函數交談的API網關來實現訪問。

問題是Lambda函數似乎沒有使用Cognito用戶池標識。 如果我將Lambda函數角色授予S3總訪問權限,則該函數可以正常訪問S3,並且該函數可以正常工作。 但是,如果如上所述,我有適當的角色策略受Cognito Userpool ID限制,則會拒絕訪問。

在我看來,Userpool Cognito身份不是Lambda函數正在使用的身份。

誰能為該設置建議正確的配置?

謝謝

API Gateway和Lambda不會自動支持此用例。

Lambda函數以其執行角色的身份運行,因此其上下文將不包含來自Cognito用戶池的身份屬性。 (Lambda函數中的上下文對象從Lambda的角度來看包含上下文。)

API網關通過API網關中的$ context.authorizer.claims變量公開Cognito用戶池標識信息。 要從Lambda函數中訪問此信息,必須在API Gateway中修改主體映射模板,以將所需數據從$ context.authorizer.claims通過請求主體傳遞到Lambda函數。 然后,您就是Lambda函數,就像其他任何字段一樣,從請求正文中讀取此信息。

在這種情況下,沒有機制可以根據每個Cognito用戶自動將權限限制到S3存儲桶/對象。 您可以在Lambda函數中實現邏輯以使用自定義代碼強制實施。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM