Skip to content

Commit a46469a

Browse files
committed
fix: use role base policy instead of resource for SQS
1 parent ce99696 commit a46469a

File tree

1 file changed

+29
-8
lines changed

1 file changed

+29
-8
lines changed

src/components/QueueLambda.ts

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import * as aws from '@pulumi/aws'
22
import * as pulumi from '@pulumi/pulumi'
3-
import { LambdaFunctionArgs, LambdaFunction } from './LambdaFunction'
4-
import { SQSProcessPolicy } from './policies'
3+
import { LambdaFunction, LambdaFunctionArgs } from './LambdaFunction'
54

65
export interface QueueLambdaArgs extends Omit<LambdaFunctionArgs, 'role'> {
76
queue: aws.sqs.Queue
@@ -11,26 +10,47 @@ export interface QueueLambdaArgs extends Omit<LambdaFunctionArgs, 'role'> {
1110
export 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

Comments
 (0)