簡體   English   中英

允許使用 Cognito 訪問 S3 上的自定義前綴

[英]Allow access to custom prefix on S3 with Cognito

我需要允許用戶使用我無法更改的特定前綴(即 username1)訪問 S3 上的文件,因此我不能僅使用${cognito-identity.amazonaws.com:sub}作為前綴. 我的 S3 存儲桶已經填充了特定前綴下的內容 - 因此用戶登錄我的應用程序,然后被允許訪問這些特定前綴之一

目前在 AWS 上設置為允許用戶使用 Firebase 和開發人員身份驗證以 Cognito 角色進行身份驗證。 每個用戶帳戶(電子郵件/密碼)都有一個關聯的 S3 前綴,他們必須能夠訪問該前綴。 一些用戶將共享此前綴(例如,兩個用戶訪問 S3-bucket/username1)。 用戶不應能夠列出或訪問除其關聯前綴之外的任何其他前綴。

我不太確定實現這一目標的最佳方法是什么——僅使用 Cognito 角色或使用數據庫和 lambda 函數 + api 端點、存儲桶/用戶策略或 ACL。 有沒有我缺少的簡單方法?

AWS 的新手,任何幫助將不勝感激!

tl; dr:如何只允許用戶訪問 S3 上具有特定前綴的文件,這不是${cognito-identity.amazonaws.com:sub}變量?

如評論中所述,Amazon Cognito 目前不直接支持您的用例。 您可以實施類似以下內容來實現您的目標:

  1. 使用 Cognito 像往常一樣對您的用戶進行身份驗證。 Cognito 身份將有權調用 API 網關端點。
  2. 您的 API(在 Lambda 中運行)使用 Cognito 身份 ID(在上下文中提供)來查找 Cognito 身份到您的自定義 S3 前綴的映射。
  3. 您的 API 使用 STS 生成臨時憑證以訪問該前綴,並將它們返回給客戶端。
  4. 客戶端使用這些憑據直接向 S3 發出請求。

暫無
暫無

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

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