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。 –