2017-08-24 164 views
0

我正在Amazon AWS Lambda上編寫lambda函數。它訪問EC2實例的URL,我在其上運行Web REST API。 lambda函數由Alexa觸發,並以Python語言(python3.x)編碼。

目前,我已經在lambda函數中硬編碼了EC2實例的URL併成功運行了Alexa技能。

我希望lambda函數自動從EC2實例獲取IP,該實例在我啓動實例時會不斷變化。這將確保我不必每次啓動EC2實例時都要訪問代碼並對網址進行硬編碼。

我偶然發現了一個類似的問題,但沒有答案。但是,有回覆表示更新IAM角色。我之前已經爲其他目的創建了IAM角色,但我仍然不習慣。 這可能嗎?它是否需要管理EC2實例的安全組? 我需要設置一些權限/配置/設置嗎? lambda代碼如何實現這一點?

此外,我PIP安裝在我的系統請求庫,我試圖上傳 '.ZIP' 文件結構爲:
從AWS lambda函數獲取EC2實例IP並使用請求庫

  • REST.zip/
    • 請求庫文件夾
    • index.py

我目前使用的urllib庫

當我使用zip文件我上傳代碼(我目前編輯代碼內聯),它甚至不能accesse index.py文件運行代碼

+2

這不是很好的應用程序堆棧設計。 – jordanm

+0

我是初學者,只是爲了練習。設計應該如何? –

回答

2

可能做它使用boto3,但我會建議反對該架構。更好的方法是使用負載平衡器(即使您只有一個實例),然後在應用程序中使用負載平衡器的CNAME記錄(只要LB存在,這不會更改)。

如果您有權訪問自己的域名,更好的辦法是創建一個CNAME記錄並將其指向負載均衡器的地址。然後,您可以愉快地在您的Lambda函數中使用DNS名稱,而不必擔心它會改變。

+0

感謝您的回覆。 –