Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
6960acf
feat(events-targets): support messageGroupId for standard SQS queues
ravilg-aws Nov 14, 2025
b8c1c8e
docs(events-targets): add README section and integration test for mes…
ravilg-aws Nov 14, 2025
1278d09
fix: remove unused ValidationError import
ravilg-aws Nov 14, 2025
9a301dd
JSDoc wording update
ravilg-aws Nov 14, 2025
378ceca
test: update integration test snapshot for messageGroupId
ravilg-aws Nov 14, 2025
b5e9cc2
Merge branch 'main' into feat/events-targets-support-messagegroupid-s…
aemada-aws Dec 1, 2025
20de5d0
Snapshot fix
ravilg-aws Dec 2, 2025
6a9c746
Merge branch 'feat/events-targets-support-messagegroupid-standard-que…
ravilg-aws Dec 2, 2025
f7aa790
fix(integ-test): allow destructive changes for new SQS resources
ravilg-aws Dec 2, 2025
357297f
Merge branch 'main' into feat/events-targets-support-messagegroupid-s…
ravilg-aws Dec 2, 2025
35c4ac9
test(integ): update snapshots for sqs-event-rule-target
ravilg-aws Dec 3, 2025
82e974a
test(integ): add destructive change traces to manifest.json
ravilg-aws Dec 3, 2025
621783b
Added will destroy to manifest.json as well
ravilg-aws Dec 3, 2025
7644acc
Removed allowDestory, following other examples, keeping will_destory …
ravilg-aws Dec 4, 2025
c7d2461
Replaced app.synth() with IntegTest construct. Added allowDestroy wit…
ravilg-aws Dec 5, 2025
8951423
Set the correct hash for assertionStackName
ravilg-aws Dec 5, 2025
11cb540
fix: add diffAssets and stackUpdateWorkflow to integ test snapshot
ravilg-aws Dec 6, 2025
93e6630
Merge branch 'main' into feat/events-targets-support-messagegroupid-s…
ravilg-aws Dec 6, 2025
18e77ca
adressing security guardian comments
ravilg-aws Dec 7, 2025
87fee9a
security guardian fix 2
ravilg-aws Dec 7, 2025
af50ffd
snapshot update
ravilg-aws Dec 8, 2025
e7f68ac
logical ids udpate
ravilg-aws Dec 8, 2025
9f6c3f4
Readme fix for rosetta build
ravilg-aws Dec 9, 2025
57f73ae
Removed the import * as sqs from 'aws-cdk-lib/aws-sqs'; from the firs…
ravilg-aws Dec 9, 2025
2d2187e
Merge branch 'main' into feat/events-targets-support-messagegroupid-s…
ravilg-aws Dec 9, 2025
5e98b36
Merge branch 'main' into feat/events-targets-support-messagegroupid-s…
ravilg-aws Dec 11, 2025
3e192ff
Merge branch 'main' into feat/events-targets-support-messagegroupid-s…
ravilg-aws Dec 11, 2025
90475ff
Merge branch 'main' into feat/events-targets-support-messagegroupid-s…
aemada-aws Dec 15, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,13 @@
]
}
},
"Metadata": {
"guard": {
"SuppressedRules": [
"SQS_NO_WORLD_ACCESSIBLE_INLINE"
]
}
},
"UpdateReplacePolicy": "Delete",
"DeletionPolicy": "Delete"
},
Expand Down Expand Up @@ -135,6 +142,16 @@
},
"MyDeadLetterQueueD997968A": {
"Type": "AWS::SQS::Queue",
"Properties": {
"SqsManagedSseEnabled": true
},
"Metadata": {
"guard": {
"SuppressedRules": [
"SQS_NO_WORLD_ACCESSIBLE_INLINE"
]
}
},
"UpdateReplacePolicy": "Delete",
"DeletionPolicy": "Delete"
},
Expand Down Expand Up @@ -176,6 +193,84 @@
}
]
}
},
"StandardQueueD43B45BD": {
"Type": "AWS::SQS::Queue",
"Properties": {
"SqsManagedSseEnabled": true
},
"Metadata": {
"guard": {
"SuppressedRules": [
"SQS_NO_WORLD_ACCESSIBLE_INLINE"
]
}
},
"UpdateReplacePolicy": "Delete",
"DeletionPolicy": "Delete"
},
"StandardQueuePolicy21A6CBEE": {
"Type": "AWS::SQS::QueuePolicy",
"Properties": {
"PolicyDocument": {
"Statement": [
{
"Action": [
"sqs:GetQueueAttributes",
"sqs:GetQueueUrl",
"sqs:SendMessage"
],
"Condition": {
"ArnEquals": {
"aws:SourceArn": {
"Fn::GetAtt": [
"StandardQueueRule82F7813E",
"Arn"
]
}
}
},
"Effect": "Allow",
"Principal": {
"Service": "events.amazonaws.com"
},
"Resource": {
"Fn::GetAtt": [
"StandardQueueD43B45BD",
"Arn"
]
}
}
],
"Version": "2012-10-17"
},
"Queues": [
{
"Ref": "StandardQueueD43B45BD"
}
]
}
},
"StandardQueueRule82F7813E": {
"Type": "AWS::Events::Rule",
"Properties": {
"ScheduleExpression": "rate(1 minute)",
"State": "ENABLED",
"Targets": [
{
"Arn": {
"Fn::GetAtt": [
"StandardQueueD43B45BD",
"Arn"
]
},
"Id": "Target0",
"SqsParameters": {
"MessageGroupId": "MyMessageGroupId"
}
}
]
}
}
},
"Parameters": {
Expand Down Expand Up @@ -212,4 +307,4 @@
]
}
}
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import * as kms from 'aws-cdk-lib/aws-kms';
import * as sqs from 'aws-cdk-lib/aws-sqs';
import * as cdk from 'aws-cdk-lib';
import * as targets from 'aws-cdk-lib/aws-events-targets';
import { IntegTest } from '@aws-cdk/integ-tests-alpha';

// ---------------------------------
// Define a rule that triggers an SNS topic every 1min.
Expand All @@ -23,11 +24,45 @@ const queue = new sqs.Queue(stack, 'MyQueue', {
encryption: sqs.QueueEncryption.KMS,
encryptionMasterKey: key,
});
// Suppress false positive: queue uses separate QueuePolicy resource (not inline), which is the correct pattern
(queue.node.defaultChild as cdk.CfnResource).addMetadata('guard', {
SuppressedRules: ['SQS_NO_WORLD_ACCESSIBLE_INLINE'],
});

const deadLetterQueue = new sqs.Queue(stack, 'MyDeadLetterQueue');
const deadLetterQueue = new sqs.Queue(stack, 'MyDeadLetterQueue', {
encryption: sqs.QueueEncryption.SQS_MANAGED,
});
// Suppress false positive: queue uses separate QueuePolicy resource (not inline), which is the correct pattern
(deadLetterQueue.node.defaultChild as cdk.CfnResource).addMetadata('guard', {
SuppressedRules: ['SQS_NO_WORLD_ACCESSIBLE_INLINE'],
});

event.addTarget(new targets.SqsQueue(queue, {
deadLetterQueue,
}));

app.synth();
// Test messageGroupId support for standard (non-FIFO) queues
const standardQueue = new sqs.Queue(stack, 'StandardQueue', {
encryption: sqs.QueueEncryption.SQS_MANAGED,
});
// Suppress false positive: queue uses separate QueuePolicy resource (not inline), which is the correct pattern
(standardQueue.node.defaultChild as cdk.CfnResource).addMetadata('guard', {
SuppressedRules: ['SQS_NO_WORLD_ACCESSIBLE_INLINE'],
});

const standardQueueEvent = new events.Rule(stack, 'StandardQueueRule', {
schedule: events.Schedule.rate(cdk.Duration.minutes(1)),
});

standardQueueEvent.addTarget(new targets.SqsQueue(standardQueue, {
messageGroupId: 'MyMessageGroupId',
}));

new IntegTest(app, 'integ.sqs-event-rule-target', {
testCases: [stack],
allowDestroy: [
'AWS::SQS::Queue',
'AWS::SQS::QueuePolicy',
'AWS::Events::Rule',
],
});
Loading
Loading