Amazon-Web-Services
通過 S3 對象 GET 觸發 AWS Lambda
我的問題
我有一個公共 S3 儲存桶,它用作我發送給同事和客戶的大文件 (GB) 的儲存解決方案。這些文件會在幾週後自動刪除。
此設置的問題是,如果有人啟動 DDOS 並大量下載我的連結之一,我可能會遭受巨額費用。我最終可能會支付巨額的出口網路費用,我想避免這種情況。
一種解決方案可能是每當有人下載對象時觸發 Lambda 函式,並為該對象增加一個 DynamoDB 計數器。如果計數器超過一個合理的門檻值(例如,50 次下載),Lambda 函式會將文件設為私有以避免進一步的費用。
我的問題
如何配置 Lambda 函式以在有人從特定 S3 儲存桶請求文件時觸發?
正如@MLu 提到的,您可以使用預簽名的 URL。你也可以這樣做:
與其將它們公開供任何人下載,我會將它們設為私有,並且僅將預簽名的 URL分發給您的同事和客戶。
您可以創建一個簡單的門戶,您的客戶可以在其中登錄並獲得一個指向 S3 對象的預簽名連結,該連結會在一小時內到期。如果他們需要再次下載,他們可以隨時獲得新連結。這將使您可以完全控制和審計誰可以下載您的 S3 對象,而不會冒巨額出口費用的風險。
看看這個:https ://aws.nz/best-practice/s3-presigned-url/
希望有幫助:)