2016-07-28 53 views
0

我正在嘗試編寫一個Lambda函數,它將取決於某些AWS數據存儲(DynamoDB/Redshift/RDS)中存儲的數據。我曾希望這種授權可以由IAM來處理,也就是說,如果我在授權讀取數據存儲的角色下運行Lambda函數,我不需要提供訪問的憑證詳細信息。使用AWS角色授權Lambda查詢AWS數據存儲

但是,this code(它是「Configuring a Lambda Function to Access Resources in an Amazon VPC」示例的一部分)仍然需要用戶名和密碼。

是否可以使用IAM角色授權Lambda查詢AWS數據存儲?

回答

1

它完全取決於您決定使用哪個數據存儲區。 DynamoDB訪問由IAM控制,因爲它是專有的Amazon服務。 RDS數據庫和ElastiCache都使用您在創建RDS服務器或ElastiCache羣集時選擇的數據庫引擎的授權方案,我相信在任何情況下都是某種形式的用戶名/密碼。此外,Aurora使用的登錄名和密碼與MySQL相似,因爲它與MySQL兼容,並且Redshift使用的登錄名/密碼與PostgreSQL類似,因爲它與PostgreSQL兼容。

我強烈建議您根據實際的數據存儲要求選擇一個數據存儲。如果需要關係OLTP數據庫,請選擇RDS;如果需要OLAP數據庫,請選擇Redshift;如果需要Redis或Memcached緩存,ElastiCache,第三方或自我管理的NoSQL數據庫,如mLab/MongoDB,或者在NoSQL數據庫中使用DynamoDB將工作並且DynamoDB適合您的需求。

+0

確定 - 這聽起來像任何非Dynamo系統都需要在代碼本身中包含用戶名/密碼(或一些配置文件以及代碼)。有趣的 - 這不是一個安全問題嗎? 理想情況下,我們會使用Elasticache,因爲有問題的數據變化緩慢,並且立即一致性不是一個大問題。也就是說,我(有趣地)聽說Elasticache非常昂貴,這也是一個問題。 – scubbo

+0

這樣看,如果你給你的EC2服務器一個允許訪問數據庫的IAM角色,那麼任何訪問EC2服務器的人都可以訪問你的數據庫。如何比在服務器上存儲數據庫用戶名/密碼憑證更安全?並且請注意,我不建議將這些憑據存儲在您的代碼中,因爲這確實是一個安全問題。如果您真的關心此問題,請考慮使用AWS KMS服務來存儲您的憑證。 –

+0

另外,我會跳過軼事的信息,並直接去源。 https://aws.amazon.com/elasticache/pricing/ ElastiCache可能比手動在EC2服務器上運行Redis更貴一些,但它可爲您處理大量管理任務。而且它肯定比在RDS上運行RDBMS要便宜。如果價格是一個問題,您也可能想要查看RedisLabs,但ElastiCache通常會更安全,因爲它完全在您的VPC中運行。 –

相關問題