2017-08-14 87 views
0

我想爲我的應用程序使用AWS Cognito & DynamoDB實現公共文件共享系統。基本上,用戶可以使用Cognito創建並登錄帳戶,並使用此帳戶上傳文件。公共元數據需要經常訪問DynamoDB(例如評級,下載次數,上傳日期等),並將文件本身存入S3存儲桶。DynamoDB與Cognito的侷限性

爲確保只有共享該文件的Cognito用戶才能刪除DynamoDB項目並修改某些專用屬性,我將Cognito身份標識用作DynamoDB內部項目的主鍵,並附帶策略規則as described in the docs。 Afaik沒有其他解決方案。

到目前爲止,這顯然意味着用戶無法向數據庫上傳超過1個項目,因爲DynamoDB項目的主鍵屬性必須是唯一的,這是不可能的,因爲我使用的是Cognito身份標識爲他們。

我當然可以爲每個用戶創建一個項目,並存儲元數據,他所擁有的地圖內的每個文件,但這不會讓我按日期,等級等

我要查詢的項目我老實說卡住了,並且想不到以任何其他方式構建我的數據庫項目來完成此項工作的方法。 DynamoDB甚至可行嗎?

+0

你是否在考慮將主鍵作爲認知ID的同時,爲每個圖像添加一個範圍鍵作爲GUID? – Ashan

+0

@Ashan非常感謝你,這實際上工作。我重新創建了表並在安裝時添加了一個排序鍵。 – domp

+0

沒有probs。我已經爲他人未來的參考更新了答案。 – Ashan

回答

1

您可以爲每個文件創建一個帶唯一標識的範圍鍵,同時將主鍵保留爲允許保留DynamoDB細粒度授權的Cognito ID。