2015-09-22 74 views
0

我正在使用Java中的AWS Lambda/DynamoDb,並且希望將HTML模板存儲到Dynamo數據庫以用於郵件發送。 我的問題陳述: 我必須使用HTML模板向最終用戶發送郵件。在NoSQL DB中存儲HTML模板

解決方案,我實現:

解決方案1:存儲模板在S3中下載模板,改變佔位並郵寄。 問題與解決方案 - >當我在我的本地系統中測試這一切工作正常,但我上傳到lamda然後執行該功能後,它不起作用。

我收到以下錯誤信息: -

java.io.FileNotFoundException: 1.html (Permission denied) 
java.io.FileNotFoundException: 1.html (Permission denied) 

我的代碼 -

String bucketName = "abc"; 
     String key = "xyz/1.html"; 
     String fileName = "1.html"; 

     ObjectMetadata s3object = s3Client.getObject(new GetObjectRequest(
       bucketName, key), new File(fileName)); 

美中不足的是,這個確切的腳本在我的本地機器的工作原理,所以我敢肯定,鍵和bucketname匹配到正確的文件。

解決方案2: 在Dynamodb中存儲html模板,並在需要時替換佔位符,然後發送郵件。 由於Dynamo db是關鍵值db,因此不允許使用雙引號。所以我需要逃避它們。我可以通過轉義模板的雙引號來保存模板,但是那時我需要從db中取回它們,然後再次刪除所有轉義序列。 ?這是一個正確的過程,如果是的話,那麼如何實現這一目標?

所以我的問題是:

  1. 如何實現的解決方案1.
  2. 是否有任何API或其他方式來第一回避然後刪除HTML模板中的逃逸?
  3. 有沒有更好的方法來解決我的問題案例。
+1

你有(http://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html)爲您的lambda表達式正確的[權限] – mkobit

+0

是@mkobit。我已經從你提供的鏈接中進行驗證。 –

回答

3

對於解決方案1,從S3下載文件時,將其寫入/ tmp目錄。

即/tmp/1.html

/tmp目錄是你的拉姆達可以寫入到文件系統的唯一目錄。