4

在AWS上,我們實現了AWS lambda將消息推送到AWS隊列的功能;AWS安全組規則部署(lambda-> SQS)

但是在這個實現過程中,我不得不手動授予AWS lambda的權限才能將消息添加到特定隊列。這個手動點擊的應用程序對於產品部署來說不是很好。

任何建議如何自動化AWS服務(主要是lambda和SQS)之間添加權限的過程,以及創建用於prod env的「良好」部署包?

回答

2

每個Lambda函數都有一個附加角色,您可以在IAM儀表板中指定權限。如果您將Lambda函數的角色授予推送到SQS隊列的權限,那麼您很好。例如,附上這個JSON作爲一個自定義的角色(見http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/SQSExamples.html):

{ 
    "Version": "2012-10-17", 
    "Id": "Queue1_Policy_UUID", 
    "Statement": 
    { 
     "Sid":"Queue1_SendMessage", 
     "Effect": "Allow", 
     "Principal": { 
      "AWS": "111122223333" 
     }, 
     "Action": "sqs:SendMessage", 
     "Resource": "arn:aws:sqs:us-east-1:444455556666:queue1" 
    } 
} 

您可以使用星號來賦予權限給多個隊列,如:

"Resource": "arn:aws:sqs:us-east-1:444455556666:production-*" 

舉的sendMessage允許所有隊列是從production-開始。

+0

我在zip文件中有一個lambda代碼。問題是如何在AWS控制檯中手動應用此策略(或者它可能是部署的一部分)? – user1459144

+0

您不能創建沒有角色的Lambda函數。因此,首先創建角色,然後在創建lambda函數期間選擇它,或者在創建Lambda函數時創建角色,然後前往IAM添加權限。這可以使用控制檯或API。 –