11import  *  as  aws  from  '@pulumi/aws' 
22import  *  as  pulumi  from  '@pulumi/pulumi' 
3- import  {  LambdaFunctionArgs ,  LambdaFunction  }  from  './LambdaFunction' 
4- import  {  SQSProcessPolicy  }  from  './policies' 
3+ import  {  LambdaFunction ,  LambdaFunctionArgs  }  from  './LambdaFunction' 
54
65export  interface  QueueLambdaArgs  extends  Omit < LambdaFunctionArgs ,  'role' >  { 
76  queue : aws . sqs . Queue 
@@ -11,26 +10,47 @@ export interface QueueLambdaArgs extends Omit<LambdaFunctionArgs, 'role'> {
1110export  class  QueueLambda  extends  pulumi . ComponentResource  { 
1211  readonly  queue : aws . sqs . Queue 
1312  readonly  lambda : LambdaFunction 
14-   readonly  queuePolicy : SQSProcessPolicy 
1513
1614  constructor ( name : string ,  args : QueueLambdaArgs ,  opts ?: pulumi . ComponentResourceOptions )  { 
1715    super ( 'aws:components:QueueLambda' ,  name ,  args ,  opts ) 
1816    const  defaultParentOptions : pulumi . ResourceOptions  =  {  parent : this  } 
1917    const  {  queue,  queueBatchSize =  10 ,  environment,  ...lambdaArgs  }  =  args 
2018
21-     const  sqsPolicyName  =  `${ name }  -policy-sqs` 
22-     this . queuePolicy  =  new  SQSProcessPolicy ( sqsPolicyName ,  {  queueArn : queue . arn  } ,  defaultParentOptions ) 
23- 
2419    this . lambda  =  new  LambdaFunction ( 
2520      name , 
2621      { 
2722        ...lambdaArgs , 
28-         policyArns : [ ...( lambdaArgs . policyArns  ||  [ ] ) ,  this . queuePolicy . policy . arn ] , 
2923        environment
3024      } , 
3125      defaultParentOptions 
3226    ) 
3327
28+     const  sqsPolicyName  =  `${ name }  -policy-sqs` 
29+     const  sqsPolicy  =  new  aws . iam . RolePolicy ( 
30+       sqsPolicyName , 
31+       { 
32+         name : sqsPolicyName , 
33+         policy : { 
34+           Version : '2012-10-17' , 
35+           Statement : [ 
36+             { 
37+               Effect : 'Allow' , 
38+               Action : [ 
39+                 'sqs:GetQueueUrl' , 
40+                 'sqs:ReceiveMessage' , 
41+                 'sqs:DeleteMessage' , 
42+                 'sqs:GetQueueAttributes' , 
43+                 'sqs:ChangeMessageVisibility' 
44+               ] , 
45+               Resource : [ queue . arn ] 
46+             } 
47+           ] 
48+         } , 
49+         role : this . lambda . role 
50+       } , 
51+       {  parent : this . lambda  } 
52+     ) 
53+ 
3454    queue . onEvent ( 
3555      `${ name }  -queue-event-subscription` , 
3656      this . lambda . lambda , 
@@ -43,7 +63,8 @@ export class QueueLambda extends pulumi.ComponentResource {
4363    this . queue  =  queue 
4464
4565    this . registerOutputs ( { 
46-       lambda : {  name : this . lambda . lambda . name ,  arn : this . lambda . lambda . arn  } 
66+       lambda : {  name : this . lambda . lambda . name ,  arn : this . lambda . lambda . arn  } , 
67+       queuePolicy : {  name : sqsPolicy . name  } 
4768    } ) 
4869  } 
4970} 
0 commit comments