From 945c6dd9051764002a95d5de8af75ddaffbedf53 Mon Sep 17 00:00:00 2001 From: Quinones Date: Fri, 16 Jul 2021 17:41:31 -0400 Subject: [PATCH 1/7] Initial design commit for new pattern: aws-iot-sqs --- .../aws-iot-sqs/README.md | 101 ++++++++++++++++++ .../aws-iot-sqs/architecture.png | Bin 0 -> 109274 bytes 2 files changed, 101 insertions(+) create mode 100644 source/patterns/@aws-solutions-constructs/aws-iot-sqs/README.md create mode 100644 source/patterns/@aws-solutions-constructs/aws-iot-sqs/architecture.png diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/README.md b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/README.md new file mode 100644 index 000000000..257c2459b --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/README.md @@ -0,0 +1,101 @@ +# aws-iot-sqs module + + +--- + +![Stability: Experimental](https://img.shields.io/badge/stability-Experimental-important.svg?style=for-the-badge) + +> All classes are under active development and subject to non-backward compatible changes or removal in any +> future version. These are not subject to the [Semantic Versioning](https://semver.org/) model. +> This means that while you may use them, you may need to update your source code when upgrading to a newer version of this package. + +--- + + +| **Reference Documentation**:| https://docs.aws.amazon.com/solutions/latest/constructs/| +|:-------------|:-------------| +
+ +| **Language** | **Package** | +|:-------------|-----------------| +|![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws_iot_sqs`| +|![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-iot-sqs`| +|![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java|`software.amazon.awsconstructs.services.iotsqs`| + +This AWS Solutions Construct implements an AWS IoT MQTT topic rule and an AWS SQS Queue pattern. + +Here is a minimal deployable pattern definition in Typescript: + +``` typescript +const { IotToSqsProps, IotToSqs } from '@aws-solutions-constructs/aws-iot-sqs'; + +const props: IotToSqsProps = { + iotTopicRuleProps: { + topicRulePayload: { + ruleDisabled: false, + description: "Testing the IotToSqs Pattern", + sql: "SELECT * FROM 'iot/sqs/#'", + actions: [] + } + } +}; + +new IotToSqs(this, 'test-iot-sqs-integration', props); +``` + +## Initializer + +``` text +new IotToSqs(scope: Construct, id: string, props: IotToSqsProps); +``` + +_Parameters_ + +* scope [`Construct`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_core.Construct.html) +* id `string` +* props [`IotToSqsProps`](#pattern-construct-props) + +## Pattern Construct Props + +| **Name** | **Type** | **Description** | +|:-------------|:----------------|-----------------| +|existingQueueObj?|[`sqs.Queue`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-sqs.Queue.html)|Existing instance of SQS queue object, providing both this and `queueProps` will cause an error.| +|queueProps?|[`sqs.QueueProps`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-sqs.QueueProps.html)|User provided props to override the default props for the SQS queue.| +|deadLetterQueueProps?|[`sqs.QueueProps`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-sqs.QueueProps.html)|Optional user provided properties for the dead letter queue.| +|deployDeadLetterQueue?|`boolean`|Whether to deploy a secondary queue to be used as a dead letter queue. Default `true`.| +|maxReceiveCount?|`number`|The number of times a message can be unsuccessfully dequeued before being moved to the dead-letter queue. Required field if `deployDeadLetterQueue`=`true`.| +|enableEncryptionWithCustomerManagedKey?|`boolean`|Use a KMS Key, either managed by this CDK app, or imported. If importing an encryption key, it must be specified in the `encryptionKey` property for this construct.| +|encryptionKey?|[`kms.Key`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-kms.Key.html)|An optional, imported encryption key to encrypt the SQS queue, and SNS Topic.| +|encryptionKeyProps?|[`kms.KeyProps`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-kms.KeyProps.html)|Optional user-provided props to override the default props for the encryption key.| +|iotTopicRuleProps?|[`iot.CfnTopicRuleProps`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-iot.CfnTopicRuleProps.html)|User provided CfnTopicRuleProps to override the defaults| + +## Pattern Properties + +| **Name** | **Type** | **Description** | +|:-------------|:----------------|-----------------| +|encryptionKey?|[`kms.Key`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-kms.Key.html)|Returns an instance of `kms.Key` used for the SQS queue.| +|iotRole|[`iam.Role`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-iam.Role.html)|Returns an instance of `iam.Role` created by the construct, which allows IoT to publish messages to the SQS Queue| +|sqsQueue|[`sqs.Queue`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-sqs.Queue.html)|Returns an instance of `sqs.Queue` created by the construct| +|deadLetterQueue?|[`sqs.Queue`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-sqs.Queue.html)|Returns an instance of the dead-letter SQS queue created by the pattern.| +|iotTopicRule|[`iot.CfnTopicRule`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-iot.CfnTopicRule.html)|Returns an instance of `iot.CfnTopicRule` created by the construct| + +## Default settings + +Out of the box implementation of the Construct without any override will set the following defaults: + +### Amazon IoT Rule +* Configure an IoT Rule to send messages to the SQS Queue + +### Amazon IAM Role +* Configure least privilege access IAM role for Amazon IoT to be able to publish messages to the SQS Queue + +### Amazon SQS Queue +* Deploy a dead-letter queue for the source queue. +* Enable server-side encryption for the source queue using a customer-managed AWS KMS key. +* Enforce encryption of data in transit. + +## Architecture +![Architecture Diagram](architecture.png) + +*** +© Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. \ No newline at end of file diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/architecture.png b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..cd752a86a8ba8f2a2a5687829816f3900f04f050 GIT binary patch literal 109274 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 P1-x8cC?A(P`JVn4mtED7 literal 0 HcmV?d00001 From aa837fbe191650fa1f0b5d341e62be4e19379a3b Mon Sep 17 00:00:00 2001 From: Quinones Date: Mon, 2 Aug 2021 11:47:26 -0400 Subject: [PATCH 2/7] Corrections to README. renamed to and removed a typo --- .../patterns/@aws-solutions-constructs/aws-iot-sqs/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/README.md b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/README.md index 257c2459b..004242173 100644 --- a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/README.md +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/README.md @@ -65,7 +65,7 @@ _Parameters_ |deployDeadLetterQueue?|`boolean`|Whether to deploy a secondary queue to be used as a dead letter queue. Default `true`.| |maxReceiveCount?|`number`|The number of times a message can be unsuccessfully dequeued before being moved to the dead-letter queue. Required field if `deployDeadLetterQueue`=`true`.| |enableEncryptionWithCustomerManagedKey?|`boolean`|Use a KMS Key, either managed by this CDK app, or imported. If importing an encryption key, it must be specified in the `encryptionKey` property for this construct.| -|encryptionKey?|[`kms.Key`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-kms.Key.html)|An optional, imported encryption key to encrypt the SQS queue, and SNS Topic.| +|encryptionKey?|[`kms.Key`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-kms.Key.html)|An optional, imported encryption key to encrypt the SQS queue.| |encryptionKeyProps?|[`kms.KeyProps`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-kms.KeyProps.html)|Optional user-provided props to override the default props for the encryption key.| |iotTopicRuleProps?|[`iot.CfnTopicRuleProps`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-iot.CfnTopicRuleProps.html)|User provided CfnTopicRuleProps to override the defaults| @@ -74,7 +74,7 @@ _Parameters_ | **Name** | **Type** | **Description** | |:-------------|:----------------|-----------------| |encryptionKey?|[`kms.Key`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-kms.Key.html)|Returns an instance of `kms.Key` used for the SQS queue.| -|iotRole|[`iam.Role`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-iam.Role.html)|Returns an instance of `iam.Role` created by the construct, which allows IoT to publish messages to the SQS Queue| +|iotActionsRole|[`iam.Role`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-iam.Role.html)|Returns an instance of `iam.Role` created by the construct, which allows IoT to publish messages to the SQS Queue| |sqsQueue|[`sqs.Queue`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-sqs.Queue.html)|Returns an instance of `sqs.Queue` created by the construct| |deadLetterQueue?|[`sqs.Queue`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-sqs.Queue.html)|Returns an instance of the dead-letter SQS queue created by the pattern.| |iotTopicRule|[`iot.CfnTopicRule`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-iot.CfnTopicRule.html)|Returns an instance of `iot.CfnTopicRule` created by the construct| From d4ce63fbf364027691635cb75a5de2a49699b5e3 Mon Sep 17 00:00:00 2001 From: Quinones Date: Tue, 3 Aug 2021 00:39:47 -0400 Subject: [PATCH 3/7] feat(aws-iot-sqs): initial implementation fixes #266 Added implementation of new pattern Added unit and integration tests --- .../aws-iot-sqs/.eslintignore | 5 + .../aws-iot-sqs/.gitignore | 16 + .../aws-iot-sqs/.npmignore | 21 + .../aws-iot-sqs/lib/index.ts | 159 ++ .../aws-iot-sqs/package.json | 92 + .../test/__snapshots__/iot-sqs.test.js.snap | 2451 +++++++++++++++++ ...teg.custom-max-receive-count.expected.json | 389 +++ .../test/integ.custom-max-receive-count.ts | 58 + .../integ.dead-letter-queue-off.expected.json | 302 ++ .../test/integ.dead-letter-queue-off.ts | 54 + .../integ.default-arguments.expected.json | 387 +++ .../test/integ.default-arguments.ts | 50 + .../test/integ.existing-queue.expected.json | 85 + .../aws-iot-sqs/test/integ.existing-queue.ts | 56 + .../integ.use-kms-key-props.expected.json | 399 +++ .../test/integ.use-kms-key-props.ts | 54 + .../test/integ.use-queue-props.expected.json | 389 +++ .../aws-iot-sqs/test/integ.use-queue-props.ts | 56 + .../integ.with-existing-key.expected.json | 399 +++ .../test/integ.with-existing-key.ts | 57 + ...integ.without-create-kms-key.expected.json | 240 ++ .../test/integ.without-create-kms-key.ts | 51 + .../aws-iot-sqs/test/iot-sqs.test.ts | 481 ++++ 23 files changed, 6251 insertions(+) create mode 100644 source/patterns/@aws-solutions-constructs/aws-iot-sqs/.eslintignore create mode 100644 source/patterns/@aws-solutions-constructs/aws-iot-sqs/.gitignore create mode 100644 source/patterns/@aws-solutions-constructs/aws-iot-sqs/.npmignore create mode 100644 source/patterns/@aws-solutions-constructs/aws-iot-sqs/lib/index.ts create mode 100644 source/patterns/@aws-solutions-constructs/aws-iot-sqs/package.json create mode 100644 source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/__snapshots__/iot-sqs.test.js.snap create mode 100644 source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.custom-max-receive-count.expected.json create mode 100644 source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.custom-max-receive-count.ts create mode 100644 source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.dead-letter-queue-off.expected.json create mode 100644 source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.dead-letter-queue-off.ts create mode 100644 source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.default-arguments.expected.json create mode 100644 source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.default-arguments.ts create mode 100644 source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.existing-queue.expected.json create mode 100644 source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.existing-queue.ts create mode 100644 source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-kms-key-props.expected.json create mode 100644 source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-kms-key-props.ts create mode 100644 source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-queue-props.expected.json create mode 100644 source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-queue-props.ts create mode 100644 source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.with-existing-key.expected.json create mode 100644 source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.with-existing-key.ts create mode 100644 source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.without-create-kms-key.expected.json create mode 100644 source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.without-create-kms-key.ts create mode 100644 source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/iot-sqs.test.ts diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/.eslintignore b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/.eslintignore new file mode 100644 index 000000000..0819e2e65 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/.eslintignore @@ -0,0 +1,5 @@ +lib/*.js +test/*.js +*.d.ts +coverage +test/lambda/index.js \ No newline at end of file diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/.gitignore b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/.gitignore new file mode 100644 index 000000000..8626f2274 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/.gitignore @@ -0,0 +1,16 @@ +lib/*.js +test/*.js +!test/lambda/* +*.js.map +*.d.ts +node_modules +*.generated.ts +dist +.jsii + +.LAST_BUILD +.nyc_output +coverage +.nycrc +.LAST_PACKAGE +*.snk \ No newline at end of file diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/.npmignore b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/.npmignore new file mode 100644 index 000000000..f66791629 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/.npmignore @@ -0,0 +1,21 @@ +# Exclude typescript source and config +*.ts +tsconfig.json +coverage +.nyc_output +*.tgz +*.snk +*.tsbuildinfo + +# Include javascript files and typescript declarations +!*.js +!*.d.ts + +# Exclude jsii outdir +dist + +# Include .jsii +!.jsii + +# Include .jsii +!.jsii \ No newline at end of file diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/lib/index.ts b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/lib/index.ts new file mode 100644 index 000000000..12cec4957 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/lib/index.ts @@ -0,0 +1,159 @@ +/** + * Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { Queue, QueueProps, DeadLetterQueue } from '@aws-cdk/aws-sqs'; +import { CfnTopicRule, CfnTopicRuleProps } from '@aws-cdk/aws-iot'; +import { IKey, Key, KeyProps } from '@aws-cdk/aws-kms'; +import { Role, ServicePrincipal } from '@aws-cdk/aws-iam'; +import { Construct } from '@aws-cdk/core'; +import { CheckProps, overrideProps } from '@aws-solutions-constructs/core'; +import { buildDeadLetterQueue, buildQueue, DefaultCfnTopicRuleProps } from '@aws-solutions-constructs/core'; + +/** + * @summary The properties for the IotToSqs class. + */ +export interface IotToSqsProps { + /** + * Existing instance of SQS queue object, providing both this and queueProps will cause an error. + * + * @default - None + */ + readonly existingQueueObj?: Queue; + + /** + * User provided props to override the default props for the SQS queue. + * + * @default - Default props are used + */ + readonly queueProps?: QueueProps; + + /** + * Optional user provided properties for the dead letter queue + * + * @default - Default props are used + */ + readonly deadLetterQueueProps?: QueueProps; + + /** + * Whether to deploy a secondary queue to be used as a dead letter queue. + * + * @default - true. + */ + readonly deployDeadLetterQueue?: boolean; + + /** + * The number of times a message can be unsuccessfully dequeued before being moved to the dead-letter queue. + * + * @default - required field if deployDeadLetterQueue=true. + */ + readonly maxReceiveCount?: number; + + /** + * Use a KMS Key, either managed by this CDK app, or imported. If importing an encryption key, it must be specified in + * the encryptionKey property for this construct. + * + * @default - true (encryption enabled, managed by this CDK app). + */ + readonly enableEncryptionWithCustomerManagedKey?: boolean; + + /** + * An optional, imported encryption key to encrypt the SQS queue, and SNS Topic. + * + * @default - not specified. + */ + readonly encryptionKey?: Key; + + /** + * Optional user-provided props to override the default props for the encryption key. + * + * @default - Default props are used. + */ + readonly encryptionKeyProps?: KeyProps; + + /** + * User provided CfnTopicRuleProps to override the defaults + * + * @default - None + */ + readonly iotTopicRuleProps: CfnTopicRuleProps; +} + +export class IotToSqs extends Construct { + public readonly sqsQueue: Queue; + public readonly deadLetterQueue?: DeadLetterQueue; + public readonly encryptionKey?: IKey; + public readonly iotActionsRole: Role; + public readonly iotTopicRule: CfnTopicRule; + + /** + * @summary Constructs a new instance of the IotToSqs class. + * @param {cdk.App} scope - represents the scope for all the resources. + * @param {string} id - this is a a scope-unique id. + * @param {IotToSqsProps} props - user provided props for the construct + * @since 1.110.1 + * @access public + */ + constructor(scope: Construct, id: string, props: IotToSqsProps) { + super(scope, id); + CheckProps(props); + + // Setup the dead letter queue, if applicable + this.deadLetterQueue = buildDeadLetterQueue(this, { + existingQueueObj: props.existingQueueObj, + deployDeadLetterQueue: props.deployDeadLetterQueue, + deadLetterQueueProps: props.deadLetterQueueProps, + maxReceiveCount: props.maxReceiveCount + }); + + // Default to `true` if `enableEncryptionWithCustomerManagedKey` is undefined + let enableEncryptionWithCustomerManagedKey = props.enableEncryptionWithCustomerManagedKey; + if (enableEncryptionWithCustomerManagedKey === undefined) { + enableEncryptionWithCustomerManagedKey = true; + } + + // Setup the queue + [this.sqsQueue, this.encryptionKey] = buildQueue(this, 'queue', { + existingQueueObj: props.existingQueueObj, + queueProps: props.queueProps, + deadLetterQueue: this.deadLetterQueue, + enableEncryptionWithCustomerManagedKey, + encryptionKey: props.encryptionKey, + encryptionKeyProps: props.encryptionKeyProps + }); + + if (this.sqsQueue.fifo) { + throw new Error('The IoT SQS action doesn\'t support Amazon SQS FIFO (First-In-First-Out) queues'); + } + + // Role to allow IoT to send messages to the SQS Queue + this.iotActionsRole = new Role(this, 'iot-actions-role', { + assumedBy: new ServicePrincipal('iot.amazonaws.com') + }); + this.sqsQueue.grantSendMessages(this.iotActionsRole); + + if (this.encryptionKey) { + this.encryptionKey.grantEncrypt(this.iotActionsRole); + } + + const defaultIotTopicProps = DefaultCfnTopicRuleProps([{ + sqs: { + queueUrl: this.sqsQueue.queueUrl, + roleArn: this.iotActionsRole.roleArn + } + }]); + const iotTopicProps = overrideProps(defaultIotTopicProps, props.iotTopicRuleProps, true); + + // Create the IoT topic rule + this.iotTopicRule = new CfnTopicRule(this, 'IotTopicRule', iotTopicProps); + } +} diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/package.json b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/package.json new file mode 100644 index 000000000..6f47ff347 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/package.json @@ -0,0 +1,92 @@ +{ + "name": "@aws-solutions-constructs/aws-iot-sqs", + "version": "1.111.0", + "description": "CDK Constructs for AWS IoT to AWS SQS integration", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/awslabs/aws-solutions-constructs.git", + "directory": "source/patterns/@aws-solutions-constructs/aws-iot-sqs" + }, + "author": { + "name": "Amazon Web Services", + "url": "https://aws.amazon.com", + "organization": true + }, + "license": "Apache-2.0", + "scripts": { + "build": "tsc -b .", + "lint": "eslint -c ../eslintrc.yml --ext=.js,.ts . && tslint --project .", + "lint-fix": "eslint -c ../eslintrc.yml --ext=.js,.ts --fix .", + "test": "jest --coverage", + "clean": "tsc -b --clean", + "watch": "tsc -b -w", + "integ": "cdk-integ", + "integ-no-clean": "cdk-integ --no-clean", + "integ-assert": "cdk-integ-assert", + "jsii": "jsii", + "jsii-pacmak": "jsii-pacmak", + "build+lint+test": "npm run jsii && npm run lint && npm test && npm run integ-assert", + "snapshot-update": "npm run jsii && npm test -- -u && npm run integ-assert" + }, + "jsii": { + "outdir": "dist", + "targets": { + "java": { + "package": "software.amazon.awsconstructs.services.iotsqs", + "maven": { + "groupId": "software.amazon.awsconstructs", + "artifactId": "iotsqs" + } + }, + "dotnet": { + "namespace": "Amazon.Constructs.AWS.IotSqs", + "packageId": "Amazon.Constructs.AWS.IotSqs", + "signAssembly": true, + "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png" + }, + "python": { + "distName": "aws-solutions-constructs.aws-iot-sqs", + "module": "aws_solutions_constructs.aws_iot_sqs" + } + } + }, + "dependencies": { + "@aws-cdk/aws-iot": "1.111.0", + "@aws-cdk/aws-sqs": "1.111.0", + "@aws-cdk/aws-iam": "1.111.0", + "@aws-cdk/aws-kms": "1.111.0", + "@aws-cdk/core": "1.111.0", + "@aws-solutions-constructs/core": "1.111.0", + "constructs": "^3.2.0" + }, + "devDependencies": { + "@aws-cdk/assert": "1.111.0", + "@types/jest": "^26.0.22", + "@types/node": "^10.3.0" + }, + "jest": { + "moduleFileExtensions": [ + "js" + ], + "coverageReporters": [ + "text", + [ + "lcov", + { + "projectRoot": "../../../../" + } + ] + ] + }, + "peerDependencies": { + "@aws-cdk/aws-iot": "1.111.0", + "@aws-cdk/aws-sqs": "1.111.0", + "@aws-cdk/aws-iam": "1.111.0", + "@aws-cdk/aws-kms": "1.111.0", + "@aws-cdk/core": "1.111.0", + "@aws-solutions-constructs/core": "1.111.0", + "constructs": "^3.2.0" + } +} diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/__snapshots__/iot-sqs.test.js.snap b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/__snapshots__/iot-sqs.test.js.snap new file mode 100644 index 000000000..a6e7522d5 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/__snapshots__/iot-sqs.test.js.snap @@ -0,0 +1,2451 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Pattern deployment passing KMS key props 1`] = ` +Object { + "Resources": Object { + "testiotsqsEncryptionKey64EE64B1": Object { + "DeletionPolicy": "Retain", + "Properties": Object { + "EnableKeyRotation": false, + "KeyPolicy": Object { + "Statement": Array [ + Object { + "Action": Array [ + "kms:Create*", + "kms:Describe*", + "kms:Enable*", + "kms:List*", + "kms:Put*", + "kms:Update*", + "kms:Revoke*", + "kms:Disable*", + "kms:Get*", + "kms:Delete*", + "kms:ScheduleKeyDeletion", + "kms:CancelKeyDeletion", + "kms:GenerateDataKey", + "kms:TagResource", + "kms:UntagResource", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":root", + ], + ], + }, + }, + "Resource": "*", + }, + Object { + "Action": Array [ + "kms:Decrypt", + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::GetAtt": Array [ + "testiotsqsiotactionsrole93B1D327", + "Arn", + ], + }, + }, + "Resource": "*", + }, + Object { + "Action": Array [ + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::GetAtt": Array [ + "testiotsqsiotactionsrole93B1D327", + "Arn", + ], + }, + }, + "Resource": "*", + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::KMS::Key", + "UpdateReplacePolicy": "Retain", + }, + "testiotsqsEncryptionKeyAlias5A222BA1": Object { + "Properties": Object { + "AliasName": "alias/new-key-alias-from-props", + "TargetKeyId": Object { + "Fn::GetAtt": Array [ + "testiotsqsEncryptionKey64EE64B1", + "Arn", + ], + }, + }, + "Type": "AWS::KMS::Alias", + }, + "testiotsqsIotTopicRule3ABB9E1A": Object { + "Properties": Object { + "TopicRulePayload": Object { + "Actions": Array [ + Object { + "Sqs": Object { + "QueueUrl": Object { + "Ref": "testiotsqsqueue630B4C1F", + }, + "RoleArn": Object { + "Fn::GetAtt": Array [ + "testiotsqsiotactionsrole93B1D327", + "Arn", + ], + }, + }, + }, + ], + "Description": "Processing messages from IoT devices or factory machines", + "RuleDisabled": false, + "Sql": "SELECT * FROM 'test/topic/#'", + }, + }, + "Type": "AWS::IoT::TopicRule", + }, + "testiotsqsdeadLetterQueue66A04E81": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "KmsMasterKeyId": "alias/aws/sqs", + }, + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + }, + "testiotsqsdeadLetterQueuePolicyE13575BF": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "sqs:DeleteMessage", + "sqs:ReceiveMessage", + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:RemovePermission", + "sqs:AddPermission", + "sqs:SetQueueAttributes", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":root", + ], + ], + }, + }, + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsdeadLetterQueue66A04E81", + "Arn", + ], + }, + "Sid": "QueueOwnerOnlyAccess", + }, + Object { + "Action": "SQS:*", + "Condition": Object { + "Bool": Object { + "aws:SecureTransport": "false", + }, + }, + "Effect": "Deny", + "Principal": "*", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsdeadLetterQueue66A04E81", + "Arn", + ], + }, + "Sid": "HttpsOnly", + }, + ], + "Version": "2012-10-17", + }, + "Queues": Array [ + Object { + "Ref": "testiotsqsdeadLetterQueue66A04E81", + }, + ], + }, + "Type": "AWS::SQS::QueuePolicy", + }, + "testiotsqsiotactionsrole93B1D327": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "Service": "iot.amazonaws.com", + }, + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::IAM::Role", + }, + "testiotsqsiotactionsroleDefaultPolicyEE46FAE6": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsqueue630B4C1F", + "Arn", + ], + }, + }, + Object { + "Action": Array [ + "kms:Decrypt", + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsEncryptionKey64EE64B1", + "Arn", + ], + }, + }, + Object { + "Action": Array [ + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsEncryptionKey64EE64B1", + "Arn", + ], + }, + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "testiotsqsiotactionsroleDefaultPolicyEE46FAE6", + "Roles": Array [ + Object { + "Ref": "testiotsqsiotactionsrole93B1D327", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + "testiotsqsqueue630B4C1F": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "KmsMasterKeyId": Object { + "Fn::GetAtt": Array [ + "testiotsqsEncryptionKey64EE64B1", + "Arn", + ], + }, + "RedrivePolicy": Object { + "deadLetterTargetArn": Object { + "Fn::GetAtt": Array [ + "testiotsqsdeadLetterQueue66A04E81", + "Arn", + ], + }, + "maxReceiveCount": 15, + }, + }, + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + }, + "testiotsqsqueuePolicyD1FF6491": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "sqs:DeleteMessage", + "sqs:ReceiveMessage", + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:RemovePermission", + "sqs:AddPermission", + "sqs:SetQueueAttributes", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":root", + ], + ], + }, + }, + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsqueue630B4C1F", + "Arn", + ], + }, + "Sid": "QueueOwnerOnlyAccess", + }, + Object { + "Action": "SQS:*", + "Condition": Object { + "Bool": Object { + "aws:SecureTransport": "false", + }, + }, + "Effect": "Deny", + "Principal": "*", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsqueue630B4C1F", + "Arn", + ], + }, + "Sid": "HttpsOnly", + }, + ], + "Version": "2012-10-17", + }, + "Queues": Array [ + Object { + "Ref": "testiotsqsqueue630B4C1F", + }, + ], + }, + "Type": "AWS::SQS::QueuePolicy", + }, + }, +} +`; + +exports[`Pattern deployment with custom maxReceiveCount 1`] = ` +Object { + "Resources": Object { + "testiotsqsEncryptionKey64EE64B1": Object { + "DeletionPolicy": "Retain", + "Properties": Object { + "EnableKeyRotation": true, + "KeyPolicy": Object { + "Statement": Array [ + Object { + "Action": Array [ + "kms:Create*", + "kms:Describe*", + "kms:Enable*", + "kms:List*", + "kms:Put*", + "kms:Update*", + "kms:Revoke*", + "kms:Disable*", + "kms:Get*", + "kms:Delete*", + "kms:ScheduleKeyDeletion", + "kms:CancelKeyDeletion", + "kms:GenerateDataKey", + "kms:TagResource", + "kms:UntagResource", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":root", + ], + ], + }, + }, + "Resource": "*", + }, + Object { + "Action": Array [ + "kms:Decrypt", + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::GetAtt": Array [ + "testiotsqsiotactionsrole93B1D327", + "Arn", + ], + }, + }, + "Resource": "*", + }, + Object { + "Action": Array [ + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::GetAtt": Array [ + "testiotsqsiotactionsrole93B1D327", + "Arn", + ], + }, + }, + "Resource": "*", + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::KMS::Key", + "UpdateReplacePolicy": "Retain", + }, + "testiotsqsIotTopicRule3ABB9E1A": Object { + "Properties": Object { + "TopicRulePayload": Object { + "Actions": Array [ + Object { + "Sqs": Object { + "QueueUrl": Object { + "Ref": "testiotsqsqueue630B4C1F", + }, + "RoleArn": Object { + "Fn::GetAtt": Array [ + "testiotsqsiotactionsrole93B1D327", + "Arn", + ], + }, + }, + }, + ], + "Description": "Processing messages from IoT devices or factory machines", + "RuleDisabled": false, + "Sql": "SELECT * FROM 'test/topic/#'", + }, + }, + "Type": "AWS::IoT::TopicRule", + }, + "testiotsqsdeadLetterQueue66A04E81": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "KmsMasterKeyId": "alias/aws/sqs", + "QueueName": "dlq-name", + }, + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + }, + "testiotsqsdeadLetterQueuePolicyE13575BF": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "sqs:DeleteMessage", + "sqs:ReceiveMessage", + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:RemovePermission", + "sqs:AddPermission", + "sqs:SetQueueAttributes", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":root", + ], + ], + }, + }, + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsdeadLetterQueue66A04E81", + "Arn", + ], + }, + "Sid": "QueueOwnerOnlyAccess", + }, + Object { + "Action": "SQS:*", + "Condition": Object { + "Bool": Object { + "aws:SecureTransport": "false", + }, + }, + "Effect": "Deny", + "Principal": "*", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsdeadLetterQueue66A04E81", + "Arn", + ], + }, + "Sid": "HttpsOnly", + }, + ], + "Version": "2012-10-17", + }, + "Queues": Array [ + Object { + "Ref": "testiotsqsdeadLetterQueue66A04E81", + }, + ], + }, + "Type": "AWS::SQS::QueuePolicy", + }, + "testiotsqsiotactionsrole93B1D327": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "Service": "iot.amazonaws.com", + }, + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::IAM::Role", + }, + "testiotsqsiotactionsroleDefaultPolicyEE46FAE6": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsqueue630B4C1F", + "Arn", + ], + }, + }, + Object { + "Action": Array [ + "kms:Decrypt", + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsEncryptionKey64EE64B1", + "Arn", + ], + }, + }, + Object { + "Action": Array [ + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsEncryptionKey64EE64B1", + "Arn", + ], + }, + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "testiotsqsiotactionsroleDefaultPolicyEE46FAE6", + "Roles": Array [ + Object { + "Ref": "testiotsqsiotactionsrole93B1D327", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + "testiotsqsqueue630B4C1F": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "KmsMasterKeyId": Object { + "Fn::GetAtt": Array [ + "testiotsqsEncryptionKey64EE64B1", + "Arn", + ], + }, + "QueueName": "queue-name", + "RedrivePolicy": Object { + "deadLetterTargetArn": Object { + "Fn::GetAtt": Array [ + "testiotsqsdeadLetterQueue66A04E81", + "Arn", + ], + }, + "maxReceiveCount": 1, + }, + }, + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + }, + "testiotsqsqueuePolicyD1FF6491": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "sqs:DeleteMessage", + "sqs:ReceiveMessage", + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:RemovePermission", + "sqs:AddPermission", + "sqs:SetQueueAttributes", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":root", + ], + ], + }, + }, + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsqueue630B4C1F", + "Arn", + ], + }, + "Sid": "QueueOwnerOnlyAccess", + }, + Object { + "Action": "SQS:*", + "Condition": Object { + "Bool": Object { + "aws:SecureTransport": "false", + }, + }, + "Effect": "Deny", + "Principal": "*", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsqueue630B4C1F", + "Arn", + ], + }, + "Sid": "HttpsOnly", + }, + ], + "Version": "2012-10-17", + }, + "Queues": Array [ + Object { + "Ref": "testiotsqsqueue630B4C1F", + }, + ], + }, + "Type": "AWS::SQS::QueuePolicy", + }, + }, +} +`; + +exports[`Pattern deployment with dead letter queue turned off 1`] = ` +Object { + "Resources": Object { + "testiotsqsEncryptionKey64EE64B1": Object { + "DeletionPolicy": "Retain", + "Properties": Object { + "EnableKeyRotation": true, + "KeyPolicy": Object { + "Statement": Array [ + Object { + "Action": Array [ + "kms:Create*", + "kms:Describe*", + "kms:Enable*", + "kms:List*", + "kms:Put*", + "kms:Update*", + "kms:Revoke*", + "kms:Disable*", + "kms:Get*", + "kms:Delete*", + "kms:ScheduleKeyDeletion", + "kms:CancelKeyDeletion", + "kms:GenerateDataKey", + "kms:TagResource", + "kms:UntagResource", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":root", + ], + ], + }, + }, + "Resource": "*", + }, + Object { + "Action": Array [ + "kms:Decrypt", + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::GetAtt": Array [ + "testiotsqsiotactionsrole93B1D327", + "Arn", + ], + }, + }, + "Resource": "*", + }, + Object { + "Action": Array [ + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::GetAtt": Array [ + "testiotsqsiotactionsrole93B1D327", + "Arn", + ], + }, + }, + "Resource": "*", + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::KMS::Key", + "UpdateReplacePolicy": "Retain", + }, + "testiotsqsIotTopicRule3ABB9E1A": Object { + "Properties": Object { + "TopicRulePayload": Object { + "Actions": Array [ + Object { + "Sqs": Object { + "QueueUrl": Object { + "Ref": "testiotsqsqueue630B4C1F", + }, + "RoleArn": Object { + "Fn::GetAtt": Array [ + "testiotsqsiotactionsrole93B1D327", + "Arn", + ], + }, + }, + }, + ], + "Description": "Processing messages from IoT devices or factory machines", + "RuleDisabled": false, + "Sql": "SELECT * FROM 'test/topic/#'", + }, + }, + "Type": "AWS::IoT::TopicRule", + }, + "testiotsqsiotactionsrole93B1D327": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "Service": "iot.amazonaws.com", + }, + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::IAM::Role", + }, + "testiotsqsiotactionsroleDefaultPolicyEE46FAE6": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsqueue630B4C1F", + "Arn", + ], + }, + }, + Object { + "Action": Array [ + "kms:Decrypt", + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsEncryptionKey64EE64B1", + "Arn", + ], + }, + }, + Object { + "Action": Array [ + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsEncryptionKey64EE64B1", + "Arn", + ], + }, + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "testiotsqsiotactionsroleDefaultPolicyEE46FAE6", + "Roles": Array [ + Object { + "Ref": "testiotsqsiotactionsrole93B1D327", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + "testiotsqsqueue630B4C1F": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "KmsMasterKeyId": Object { + "Fn::GetAtt": Array [ + "testiotsqsEncryptionKey64EE64B1", + "Arn", + ], + }, + "QueueName": "queue-name", + }, + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + }, + "testiotsqsqueuePolicyD1FF6491": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "sqs:DeleteMessage", + "sqs:ReceiveMessage", + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:RemovePermission", + "sqs:AddPermission", + "sqs:SetQueueAttributes", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":root", + ], + ], + }, + }, + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsqueue630B4C1F", + "Arn", + ], + }, + "Sid": "QueueOwnerOnlyAccess", + }, + Object { + "Action": "SQS:*", + "Condition": Object { + "Bool": Object { + "aws:SecureTransport": "false", + }, + }, + "Effect": "Deny", + "Principal": "*", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsqueue630B4C1F", + "Arn", + ], + }, + "Sid": "HttpsOnly", + }, + ], + "Version": "2012-10-17", + }, + "Queues": Array [ + Object { + "Ref": "testiotsqsqueue630B4C1F", + }, + ], + }, + "Type": "AWS::SQS::QueuePolicy", + }, + }, +} +`; + +exports[`Pattern deployment with default props 1`] = ` +Object { + "Resources": Object { + "testiotsqsEncryptionKey64EE64B1": Object { + "DeletionPolicy": "Retain", + "Properties": Object { + "EnableKeyRotation": true, + "KeyPolicy": Object { + "Statement": Array [ + Object { + "Action": Array [ + "kms:Create*", + "kms:Describe*", + "kms:Enable*", + "kms:List*", + "kms:Put*", + "kms:Update*", + "kms:Revoke*", + "kms:Disable*", + "kms:Get*", + "kms:Delete*", + "kms:ScheduleKeyDeletion", + "kms:CancelKeyDeletion", + "kms:GenerateDataKey", + "kms:TagResource", + "kms:UntagResource", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":root", + ], + ], + }, + }, + "Resource": "*", + }, + Object { + "Action": Array [ + "kms:Decrypt", + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::GetAtt": Array [ + "testiotsqsiotactionsrole93B1D327", + "Arn", + ], + }, + }, + "Resource": "*", + }, + Object { + "Action": Array [ + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::GetAtt": Array [ + "testiotsqsiotactionsrole93B1D327", + "Arn", + ], + }, + }, + "Resource": "*", + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::KMS::Key", + "UpdateReplacePolicy": "Retain", + }, + "testiotsqsIotTopicRule3ABB9E1A": Object { + "Properties": Object { + "TopicRulePayload": Object { + "Actions": Array [ + Object { + "Sqs": Object { + "QueueUrl": Object { + "Ref": "testiotsqsqueue630B4C1F", + }, + "RoleArn": Object { + "Fn::GetAtt": Array [ + "testiotsqsiotactionsrole93B1D327", + "Arn", + ], + }, + }, + }, + ], + "Description": "Processing messages from IoT devices or factory machines", + "RuleDisabled": false, + "Sql": "SELECT * FROM 'test/topic/#'", + }, + }, + "Type": "AWS::IoT::TopicRule", + }, + "testiotsqsdeadLetterQueue66A04E81": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "KmsMasterKeyId": "alias/aws/sqs", + }, + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + }, + "testiotsqsdeadLetterQueuePolicyE13575BF": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "sqs:DeleteMessage", + "sqs:ReceiveMessage", + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:RemovePermission", + "sqs:AddPermission", + "sqs:SetQueueAttributes", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":root", + ], + ], + }, + }, + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsdeadLetterQueue66A04E81", + "Arn", + ], + }, + "Sid": "QueueOwnerOnlyAccess", + }, + Object { + "Action": "SQS:*", + "Condition": Object { + "Bool": Object { + "aws:SecureTransport": "false", + }, + }, + "Effect": "Deny", + "Principal": "*", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsdeadLetterQueue66A04E81", + "Arn", + ], + }, + "Sid": "HttpsOnly", + }, + ], + "Version": "2012-10-17", + }, + "Queues": Array [ + Object { + "Ref": "testiotsqsdeadLetterQueue66A04E81", + }, + ], + }, + "Type": "AWS::SQS::QueuePolicy", + }, + "testiotsqsiotactionsrole93B1D327": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "Service": "iot.amazonaws.com", + }, + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::IAM::Role", + }, + "testiotsqsiotactionsroleDefaultPolicyEE46FAE6": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsqueue630B4C1F", + "Arn", + ], + }, + }, + Object { + "Action": Array [ + "kms:Decrypt", + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsEncryptionKey64EE64B1", + "Arn", + ], + }, + }, + Object { + "Action": Array [ + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsEncryptionKey64EE64B1", + "Arn", + ], + }, + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "testiotsqsiotactionsroleDefaultPolicyEE46FAE6", + "Roles": Array [ + Object { + "Ref": "testiotsqsiotactionsrole93B1D327", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + "testiotsqsqueue630B4C1F": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "KmsMasterKeyId": Object { + "Fn::GetAtt": Array [ + "testiotsqsEncryptionKey64EE64B1", + "Arn", + ], + }, + "RedrivePolicy": Object { + "deadLetterTargetArn": Object { + "Fn::GetAtt": Array [ + "testiotsqsdeadLetterQueue66A04E81", + "Arn", + ], + }, + "maxReceiveCount": 15, + }, + }, + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + }, + "testiotsqsqueuePolicyD1FF6491": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "sqs:DeleteMessage", + "sqs:ReceiveMessage", + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:RemovePermission", + "sqs:AddPermission", + "sqs:SetQueueAttributes", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":root", + ], + ], + }, + }, + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsqueue630B4C1F", + "Arn", + ], + }, + "Sid": "QueueOwnerOnlyAccess", + }, + Object { + "Action": "SQS:*", + "Condition": Object { + "Bool": Object { + "aws:SecureTransport": "false", + }, + }, + "Effect": "Deny", + "Principal": "*", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsqueue630B4C1F", + "Arn", + ], + }, + "Sid": "HttpsOnly", + }, + ], + "Version": "2012-10-17", + }, + "Queues": Array [ + Object { + "Ref": "testiotsqsqueue630B4C1F", + }, + ], + }, + "Type": "AWS::SQS::QueuePolicy", + }, + }, +} +`; + +exports[`Pattern deployment with existing KMS key 1`] = ` +Object { + "Resources": Object { + "existingkey205DFC01": Object { + "DeletionPolicy": "Retain", + "Properties": Object { + "EnableKeyRotation": false, + "KeyPolicy": Object { + "Statement": Array [ + Object { + "Action": Array [ + "kms:Create*", + "kms:Describe*", + "kms:Enable*", + "kms:List*", + "kms:Put*", + "kms:Update*", + "kms:Revoke*", + "kms:Disable*", + "kms:Get*", + "kms:Delete*", + "kms:ScheduleKeyDeletion", + "kms:CancelKeyDeletion", + "kms:GenerateDataKey", + "kms:TagResource", + "kms:UntagResource", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":root", + ], + ], + }, + }, + "Resource": "*", + }, + Object { + "Action": Array [ + "kms:Decrypt", + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::GetAtt": Array [ + "testiotsqsiotactionsrole93B1D327", + "Arn", + ], + }, + }, + "Resource": "*", + }, + Object { + "Action": Array [ + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::GetAtt": Array [ + "testiotsqsiotactionsrole93B1D327", + "Arn", + ], + }, + }, + "Resource": "*", + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::KMS::Key", + "UpdateReplacePolicy": "Retain", + }, + "existingkeyAliasE18FEC67": Object { + "Properties": Object { + "AliasName": "alias/existing-key-alias", + "TargetKeyId": Object { + "Fn::GetAtt": Array [ + "existingkey205DFC01", + "Arn", + ], + }, + }, + "Type": "AWS::KMS::Alias", + }, + "testiotsqsIotTopicRule3ABB9E1A": Object { + "Properties": Object { + "TopicRulePayload": Object { + "Actions": Array [ + Object { + "Sqs": Object { + "QueueUrl": Object { + "Ref": "testiotsqsqueue630B4C1F", + }, + "RoleArn": Object { + "Fn::GetAtt": Array [ + "testiotsqsiotactionsrole93B1D327", + "Arn", + ], + }, + }, + }, + ], + "Description": "Processing messages from IoT devices or factory machines", + "RuleDisabled": false, + "Sql": "SELECT * FROM 'test/topic/#'", + }, + }, + "Type": "AWS::IoT::TopicRule", + }, + "testiotsqsdeadLetterQueue66A04E81": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "KmsMasterKeyId": "alias/aws/sqs", + }, + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + }, + "testiotsqsdeadLetterQueuePolicyE13575BF": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "sqs:DeleteMessage", + "sqs:ReceiveMessage", + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:RemovePermission", + "sqs:AddPermission", + "sqs:SetQueueAttributes", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":root", + ], + ], + }, + }, + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsdeadLetterQueue66A04E81", + "Arn", + ], + }, + "Sid": "QueueOwnerOnlyAccess", + }, + Object { + "Action": "SQS:*", + "Condition": Object { + "Bool": Object { + "aws:SecureTransport": "false", + }, + }, + "Effect": "Deny", + "Principal": "*", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsdeadLetterQueue66A04E81", + "Arn", + ], + }, + "Sid": "HttpsOnly", + }, + ], + "Version": "2012-10-17", + }, + "Queues": Array [ + Object { + "Ref": "testiotsqsdeadLetterQueue66A04E81", + }, + ], + }, + "Type": "AWS::SQS::QueuePolicy", + }, + "testiotsqsiotactionsrole93B1D327": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "Service": "iot.amazonaws.com", + }, + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::IAM::Role", + }, + "testiotsqsiotactionsroleDefaultPolicyEE46FAE6": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsqueue630B4C1F", + "Arn", + ], + }, + }, + Object { + "Action": Array [ + "kms:Decrypt", + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "existingkey205DFC01", + "Arn", + ], + }, + }, + Object { + "Action": Array [ + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "existingkey205DFC01", + "Arn", + ], + }, + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "testiotsqsiotactionsroleDefaultPolicyEE46FAE6", + "Roles": Array [ + Object { + "Ref": "testiotsqsiotactionsrole93B1D327", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + "testiotsqsqueue630B4C1F": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "KmsMasterKeyId": Object { + "Fn::GetAtt": Array [ + "existingkey205DFC01", + "Arn", + ], + }, + "RedrivePolicy": Object { + "deadLetterTargetArn": Object { + "Fn::GetAtt": Array [ + "testiotsqsdeadLetterQueue66A04E81", + "Arn", + ], + }, + "maxReceiveCount": 15, + }, + }, + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + }, + "testiotsqsqueuePolicyD1FF6491": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "sqs:DeleteMessage", + "sqs:ReceiveMessage", + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:RemovePermission", + "sqs:AddPermission", + "sqs:SetQueueAttributes", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":root", + ], + ], + }, + }, + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsqueue630B4C1F", + "Arn", + ], + }, + "Sid": "QueueOwnerOnlyAccess", + }, + Object { + "Action": "SQS:*", + "Condition": Object { + "Bool": Object { + "aws:SecureTransport": "false", + }, + }, + "Effect": "Deny", + "Principal": "*", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsqueue630B4C1F", + "Arn", + ], + }, + "Sid": "HttpsOnly", + }, + ], + "Version": "2012-10-17", + }, + "Queues": Array [ + Object { + "Ref": "testiotsqsqueue630B4C1F", + }, + ], + }, + "Type": "AWS::SQS::QueuePolicy", + }, + }, +} +`; + +exports[`Pattern deployment with existing queue 1`] = ` +Object { + "Resources": Object { + "existingqueueobjF8AF0ED1": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "QueueName": "existing-queue-obj", + }, + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + }, + "testiotsqsIotTopicRule3ABB9E1A": Object { + "Properties": Object { + "TopicRulePayload": Object { + "Actions": Array [ + Object { + "Sqs": Object { + "QueueUrl": Object { + "Ref": "existingqueueobjF8AF0ED1", + }, + "RoleArn": Object { + "Fn::GetAtt": Array [ + "testiotsqsiotactionsrole93B1D327", + "Arn", + ], + }, + }, + }, + ], + "Description": "Processing messages from IoT devices or factory machines", + "RuleDisabled": false, + "Sql": "SELECT * FROM 'test/topic/#'", + }, + }, + "Type": "AWS::IoT::TopicRule", + }, + "testiotsqsiotactionsrole93B1D327": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "Service": "iot.amazonaws.com", + }, + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::IAM::Role", + }, + "testiotsqsiotactionsroleDefaultPolicyEE46FAE6": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "existingqueueobjF8AF0ED1", + "Arn", + ], + }, + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "testiotsqsiotactionsroleDefaultPolicyEE46FAE6", + "Roles": Array [ + Object { + "Ref": "testiotsqsiotactionsrole93B1D327", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + }, +} +`; + +exports[`Pattern deployment with queue and dead letter queue props 1`] = ` +Object { + "Resources": Object { + "testiotsqsEncryptionKey64EE64B1": Object { + "DeletionPolicy": "Retain", + "Properties": Object { + "EnableKeyRotation": true, + "KeyPolicy": Object { + "Statement": Array [ + Object { + "Action": Array [ + "kms:Create*", + "kms:Describe*", + "kms:Enable*", + "kms:List*", + "kms:Put*", + "kms:Update*", + "kms:Revoke*", + "kms:Disable*", + "kms:Get*", + "kms:Delete*", + "kms:ScheduleKeyDeletion", + "kms:CancelKeyDeletion", + "kms:GenerateDataKey", + "kms:TagResource", + "kms:UntagResource", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":root", + ], + ], + }, + }, + "Resource": "*", + }, + Object { + "Action": Array [ + "kms:Decrypt", + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::GetAtt": Array [ + "testiotsqsiotactionsrole93B1D327", + "Arn", + ], + }, + }, + "Resource": "*", + }, + Object { + "Action": Array [ + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::GetAtt": Array [ + "testiotsqsiotactionsrole93B1D327", + "Arn", + ], + }, + }, + "Resource": "*", + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::KMS::Key", + "UpdateReplacePolicy": "Retain", + }, + "testiotsqsIotTopicRule3ABB9E1A": Object { + "Properties": Object { + "TopicRulePayload": Object { + "Actions": Array [ + Object { + "Sqs": Object { + "QueueUrl": Object { + "Ref": "testiotsqsqueue630B4C1F", + }, + "RoleArn": Object { + "Fn::GetAtt": Array [ + "testiotsqsiotactionsrole93B1D327", + "Arn", + ], + }, + }, + }, + ], + "Description": "Processing messages from IoT devices or factory machines", + "RuleDisabled": false, + "Sql": "SELECT * FROM 'test/topic/#'", + }, + }, + "Type": "AWS::IoT::TopicRule", + }, + "testiotsqsdeadLetterQueue66A04E81": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "KmsMasterKeyId": "alias/aws/sqs", + "QueueName": "dlq-name", + }, + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + }, + "testiotsqsdeadLetterQueuePolicyE13575BF": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "sqs:DeleteMessage", + "sqs:ReceiveMessage", + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:RemovePermission", + "sqs:AddPermission", + "sqs:SetQueueAttributes", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":root", + ], + ], + }, + }, + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsdeadLetterQueue66A04E81", + "Arn", + ], + }, + "Sid": "QueueOwnerOnlyAccess", + }, + Object { + "Action": "SQS:*", + "Condition": Object { + "Bool": Object { + "aws:SecureTransport": "false", + }, + }, + "Effect": "Deny", + "Principal": "*", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsdeadLetterQueue66A04E81", + "Arn", + ], + }, + "Sid": "HttpsOnly", + }, + ], + "Version": "2012-10-17", + }, + "Queues": Array [ + Object { + "Ref": "testiotsqsdeadLetterQueue66A04E81", + }, + ], + }, + "Type": "AWS::SQS::QueuePolicy", + }, + "testiotsqsiotactionsrole93B1D327": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "Service": "iot.amazonaws.com", + }, + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::IAM::Role", + }, + "testiotsqsiotactionsroleDefaultPolicyEE46FAE6": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsqueue630B4C1F", + "Arn", + ], + }, + }, + Object { + "Action": Array [ + "kms:Decrypt", + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsEncryptionKey64EE64B1", + "Arn", + ], + }, + }, + Object { + "Action": Array [ + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsEncryptionKey64EE64B1", + "Arn", + ], + }, + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "testiotsqsiotactionsroleDefaultPolicyEE46FAE6", + "Roles": Array [ + Object { + "Ref": "testiotsqsiotactionsrole93B1D327", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + "testiotsqsqueue630B4C1F": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "KmsMasterKeyId": Object { + "Fn::GetAtt": Array [ + "testiotsqsEncryptionKey64EE64B1", + "Arn", + ], + }, + "QueueName": "queue-name", + "RedrivePolicy": Object { + "deadLetterTargetArn": Object { + "Fn::GetAtt": Array [ + "testiotsqsdeadLetterQueue66A04E81", + "Arn", + ], + }, + "maxReceiveCount": 15, + }, + }, + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + }, + "testiotsqsqueuePolicyD1FF6491": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "sqs:DeleteMessage", + "sqs:ReceiveMessage", + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:RemovePermission", + "sqs:AddPermission", + "sqs:SetQueueAttributes", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":root", + ], + ], + }, + }, + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsqueue630B4C1F", + "Arn", + ], + }, + "Sid": "QueueOwnerOnlyAccess", + }, + Object { + "Action": "SQS:*", + "Condition": Object { + "Bool": Object { + "aws:SecureTransport": "false", + }, + }, + "Effect": "Deny", + "Principal": "*", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsqueue630B4C1F", + "Arn", + ], + }, + "Sid": "HttpsOnly", + }, + ], + "Version": "2012-10-17", + }, + "Queues": Array [ + Object { + "Ref": "testiotsqsqueue630B4C1F", + }, + ], + }, + "Type": "AWS::SQS::QueuePolicy", + }, + }, +} +`; + +exports[`Pattern deployment without creating a KMS key 1`] = ` +Object { + "Resources": Object { + "testiotsqsIotTopicRule3ABB9E1A": Object { + "Properties": Object { + "TopicRulePayload": Object { + "Actions": Array [ + Object { + "Sqs": Object { + "QueueUrl": Object { + "Ref": "testiotsqsqueue630B4C1F", + }, + "RoleArn": Object { + "Fn::GetAtt": Array [ + "testiotsqsiotactionsrole93B1D327", + "Arn", + ], + }, + }, + }, + ], + "Description": "Processing messages from IoT devices or factory machines", + "RuleDisabled": false, + "Sql": "SELECT * FROM 'test/topic/#'", + }, + }, + "Type": "AWS::IoT::TopicRule", + }, + "testiotsqsdeadLetterQueue66A04E81": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "KmsMasterKeyId": "alias/aws/sqs", + }, + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + }, + "testiotsqsdeadLetterQueuePolicyE13575BF": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "sqs:DeleteMessage", + "sqs:ReceiveMessage", + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:RemovePermission", + "sqs:AddPermission", + "sqs:SetQueueAttributes", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":root", + ], + ], + }, + }, + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsdeadLetterQueue66A04E81", + "Arn", + ], + }, + "Sid": "QueueOwnerOnlyAccess", + }, + Object { + "Action": "SQS:*", + "Condition": Object { + "Bool": Object { + "aws:SecureTransport": "false", + }, + }, + "Effect": "Deny", + "Principal": "*", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsdeadLetterQueue66A04E81", + "Arn", + ], + }, + "Sid": "HttpsOnly", + }, + ], + "Version": "2012-10-17", + }, + "Queues": Array [ + Object { + "Ref": "testiotsqsdeadLetterQueue66A04E81", + }, + ], + }, + "Type": "AWS::SQS::QueuePolicy", + }, + "testiotsqsiotactionsrole93B1D327": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "Service": "iot.amazonaws.com", + }, + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::IAM::Role", + }, + "testiotsqsiotactionsroleDefaultPolicyEE46FAE6": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsqueue630B4C1F", + "Arn", + ], + }, + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "testiotsqsiotactionsroleDefaultPolicyEE46FAE6", + "Roles": Array [ + Object { + "Ref": "testiotsqsiotactionsrole93B1D327", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + "testiotsqsqueue630B4C1F": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "KmsMasterKeyId": "alias/aws/sqs", + "RedrivePolicy": Object { + "deadLetterTargetArn": Object { + "Fn::GetAtt": Array [ + "testiotsqsdeadLetterQueue66A04E81", + "Arn", + ], + }, + "maxReceiveCount": 15, + }, + }, + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + }, + "testiotsqsqueuePolicyD1FF6491": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "sqs:DeleteMessage", + "sqs:ReceiveMessage", + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:RemovePermission", + "sqs:AddPermission", + "sqs:SetQueueAttributes", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":root", + ], + ], + }, + }, + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsqueue630B4C1F", + "Arn", + ], + }, + "Sid": "QueueOwnerOnlyAccess", + }, + Object { + "Action": "SQS:*", + "Condition": Object { + "Bool": Object { + "aws:SecureTransport": "false", + }, + }, + "Effect": "Deny", + "Principal": "*", + "Resource": Object { + "Fn::GetAtt": Array [ + "testiotsqsqueue630B4C1F", + "Arn", + ], + }, + "Sid": "HttpsOnly", + }, + ], + "Version": "2012-10-17", + }, + "Queues": Array [ + Object { + "Ref": "testiotsqsqueue630B4C1F", + }, + ], + }, + "Type": "AWS::SQS::QueuePolicy", + }, + }, +} +`; diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.custom-max-receive-count.expected.json b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.custom-max-receive-count.expected.json new file mode 100644 index 000000000..7ae4e6714 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.custom-max-receive-count.expected.json @@ -0,0 +1,389 @@ +{ + "Description": "Integration Test for aws-iot-sqs", + "Resources": { + "testiotsqsstackdeadLetterQueueA417EB97": { + "Type": "AWS::SQS::Queue", + "Properties": { + "KmsMasterKeyId": "alias/aws/sqs", + "QueueName": "dlq-name" + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "testiotsqsstackdeadLetterQueuePolicyD0F4B7D3": { + "Type": "AWS::SQS::QueuePolicy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "sqs:DeleteMessage", + "sqs:ReceiveMessage", + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:RemovePermission", + "sqs:AddPermission", + "sqs:SetQueueAttributes" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackdeadLetterQueueA417EB97", + "Arn" + ] + }, + "Sid": "QueueOwnerOnlyAccess" + }, + { + "Action": "SQS:*", + "Condition": { + "Bool": { + "aws:SecureTransport": "false" + } + }, + "Effect": "Deny", + "Principal": "*", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackdeadLetterQueueA417EB97", + "Arn" + ] + }, + "Sid": "HttpsOnly" + } + ], + "Version": "2012-10-17" + }, + "Queues": [ + { + "Ref": "testiotsqsstackdeadLetterQueueA417EB97" + } + ] + } + }, + "testiotsqsstackEncryptionKeyAB09201B": { + "Type": "AWS::KMS::Key", + "Properties": { + "KeyPolicy": { + "Statement": [ + { + "Action": [ + "kms:Create*", + "kms:Describe*", + "kms:Enable*", + "kms:List*", + "kms:Put*", + "kms:Update*", + "kms:Revoke*", + "kms:Disable*", + "kms:Get*", + "kms:Delete*", + "kms:ScheduleKeyDeletion", + "kms:CancelKeyDeletion", + "kms:GenerateDataKey", + "kms:TagResource", + "kms:UntagResource" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": "*" + }, + { + "Action": [ + "kms:Decrypt", + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::GetAtt": [ + "testiotsqsstackiotactionsrole5F8821AA", + "Arn" + ] + } + }, + "Resource": "*" + }, + { + "Action": [ + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::GetAtt": [ + "testiotsqsstackiotactionsrole5F8821AA", + "Arn" + ] + } + }, + "Resource": "*" + }, + { + "Action": [ + "kms:Encrypt", + "kms:Decrypt" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": "*" + } + ], + "Version": "2012-10-17" + }, + "EnableKeyRotation": true + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "testiotsqsstackqueue3DEA94EF": { + "Type": "AWS::SQS::Queue", + "Properties": { + "KmsMasterKeyId": { + "Fn::GetAtt": [ + "testiotsqsstackEncryptionKeyAB09201B", + "Arn" + ] + }, + "QueueName": "queue-name", + "RedrivePolicy": { + "deadLetterTargetArn": { + "Fn::GetAtt": [ + "testiotsqsstackdeadLetterQueueA417EB97", + "Arn" + ] + }, + "maxReceiveCount": 1 + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "testiotsqsstackqueuePolicy76FA6440": { + "Type": "AWS::SQS::QueuePolicy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "sqs:DeleteMessage", + "sqs:ReceiveMessage", + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:RemovePermission", + "sqs:AddPermission", + "sqs:SetQueueAttributes" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackqueue3DEA94EF", + "Arn" + ] + }, + "Sid": "QueueOwnerOnlyAccess" + }, + { + "Action": "SQS:*", + "Condition": { + "Bool": { + "aws:SecureTransport": "false" + } + }, + "Effect": "Deny", + "Principal": "*", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackqueue3DEA94EF", + "Arn" + ] + }, + "Sid": "HttpsOnly" + } + ], + "Version": "2012-10-17" + }, + "Queues": [ + { + "Ref": "testiotsqsstackqueue3DEA94EF" + } + ] + } + }, + "testiotsqsstackiotactionsrole5F8821AA": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "iot.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "testiotsqsstackiotactionsroleDefaultPolicy02ED7F00": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackqueue3DEA94EF", + "Arn" + ] + } + }, + { + "Action": [ + "kms:Decrypt", + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackEncryptionKeyAB09201B", + "Arn" + ] + } + }, + { + "Action": [ + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackEncryptionKeyAB09201B", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "testiotsqsstackiotactionsroleDefaultPolicy02ED7F00", + "Roles": [ + { + "Ref": "testiotsqsstackiotactionsrole5F8821AA" + } + ] + } + }, + "testiotsqsstackIotTopicRule02F8F602": { + "Type": "AWS::IoT::TopicRule", + "Properties": { + "TopicRulePayload": { + "Actions": [ + { + "Sqs": { + "QueueUrl": { + "Ref": "testiotsqsstackqueue3DEA94EF" + }, + "RoleArn": { + "Fn::GetAtt": [ + "testiotsqsstackiotactionsrole5F8821AA", + "Arn" + ] + } + } + } + ], + "Description": "Processing messages from IoT devices or factory machines", + "RuleDisabled": false, + "Sql": "SELECT * FROM 'test/topic/#'" + } + } + } + } +} \ No newline at end of file diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.custom-max-receive-count.ts b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.custom-max-receive-count.ts new file mode 100644 index 000000000..9a0029a1a --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.custom-max-receive-count.ts @@ -0,0 +1,58 @@ +/** + * Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +// Imports +import { App, Stack } from "@aws-cdk/core"; +import { IotToSqs, IotToSqsProps } from "../lib"; +import * as iam from '@aws-cdk/aws-iam'; +import { generateIntegStackName } from '@aws-solutions-constructs/core'; + +// Setup +const app = new App(); +const stack = new Stack(app, generateIntegStackName(__filename)); +stack.templateOptions.description = 'Integration Test for aws-iot-sqs'; + +// Definitions +const props: IotToSqsProps = { + deadLetterQueueProps: { + queueName: 'dlq-name' + }, + deployDeadLetterQueue: true, + maxReceiveCount: 1, + queueProps: { + queueName: 'queue-name' + }, + iotTopicRuleProps: { + topicRulePayload: { + ruleDisabled: false, + description: "Processing messages from IoT devices or factory machines", + sql: "SELECT * FROM 'test/topic/#'", + actions: [] + } + } +}; + +const iotToSqsStack = new IotToSqs(stack, 'test-iot-sqs-stack', props); + +// Grant yourself permissions to use the Customer Managed KMS Key +const policyStatement = new iam.PolicyStatement({ + actions: ["kms:Encrypt", "kms:Decrypt"], + effect: iam.Effect.ALLOW, + principals: [new iam.AccountRootPrincipal()], + resources: ["*"] +}); + +iotToSqsStack.encryptionKey?.addToResourcePolicy(policyStatement); + +// Synth +app.synth(); diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.dead-letter-queue-off.expected.json b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.dead-letter-queue-off.expected.json new file mode 100644 index 000000000..7202050ad --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.dead-letter-queue-off.expected.json @@ -0,0 +1,302 @@ +{ + "Description": "Integration Test for aws-iot-sqs", + "Resources": { + "testiotsqsstackEncryptionKeyAB09201B": { + "Type": "AWS::KMS::Key", + "Properties": { + "KeyPolicy": { + "Statement": [ + { + "Action": [ + "kms:Create*", + "kms:Describe*", + "kms:Enable*", + "kms:List*", + "kms:Put*", + "kms:Update*", + "kms:Revoke*", + "kms:Disable*", + "kms:Get*", + "kms:Delete*", + "kms:ScheduleKeyDeletion", + "kms:CancelKeyDeletion", + "kms:GenerateDataKey", + "kms:TagResource", + "kms:UntagResource" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": "*" + }, + { + "Action": [ + "kms:Decrypt", + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::GetAtt": [ + "testiotsqsstackiotactionsrole5F8821AA", + "Arn" + ] + } + }, + "Resource": "*" + }, + { + "Action": [ + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::GetAtt": [ + "testiotsqsstackiotactionsrole5F8821AA", + "Arn" + ] + } + }, + "Resource": "*" + }, + { + "Action": [ + "kms:Encrypt", + "kms:Decrypt" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": "*" + } + ], + "Version": "2012-10-17" + }, + "EnableKeyRotation": true + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "testiotsqsstackqueue3DEA94EF": { + "Type": "AWS::SQS::Queue", + "Properties": { + "KmsMasterKeyId": { + "Fn::GetAtt": [ + "testiotsqsstackEncryptionKeyAB09201B", + "Arn" + ] + }, + "QueueName": "queue-name" + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "testiotsqsstackqueuePolicy76FA6440": { + "Type": "AWS::SQS::QueuePolicy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "sqs:DeleteMessage", + "sqs:ReceiveMessage", + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:RemovePermission", + "sqs:AddPermission", + "sqs:SetQueueAttributes" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackqueue3DEA94EF", + "Arn" + ] + }, + "Sid": "QueueOwnerOnlyAccess" + }, + { + "Action": "SQS:*", + "Condition": { + "Bool": { + "aws:SecureTransport": "false" + } + }, + "Effect": "Deny", + "Principal": "*", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackqueue3DEA94EF", + "Arn" + ] + }, + "Sid": "HttpsOnly" + } + ], + "Version": "2012-10-17" + }, + "Queues": [ + { + "Ref": "testiotsqsstackqueue3DEA94EF" + } + ] + } + }, + "testiotsqsstackiotactionsrole5F8821AA": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "iot.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "testiotsqsstackiotactionsroleDefaultPolicy02ED7F00": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackqueue3DEA94EF", + "Arn" + ] + } + }, + { + "Action": [ + "kms:Decrypt", + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackEncryptionKeyAB09201B", + "Arn" + ] + } + }, + { + "Action": [ + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackEncryptionKeyAB09201B", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "testiotsqsstackiotactionsroleDefaultPolicy02ED7F00", + "Roles": [ + { + "Ref": "testiotsqsstackiotactionsrole5F8821AA" + } + ] + } + }, + "testiotsqsstackIotTopicRule02F8F602": { + "Type": "AWS::IoT::TopicRule", + "Properties": { + "TopicRulePayload": { + "Actions": [ + { + "Sqs": { + "QueueUrl": { + "Ref": "testiotsqsstackqueue3DEA94EF" + }, + "RoleArn": { + "Fn::GetAtt": [ + "testiotsqsstackiotactionsrole5F8821AA", + "Arn" + ] + } + } + } + ], + "Description": "Processing messages from IoT devices or factory machines", + "RuleDisabled": false, + "Sql": "SELECT * FROM 'test/topic/#'" + } + } + } + } +} \ No newline at end of file diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.dead-letter-queue-off.ts b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.dead-letter-queue-off.ts new file mode 100644 index 000000000..179b592d9 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.dead-letter-queue-off.ts @@ -0,0 +1,54 @@ +/** + * Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +// Imports +import { App, Stack } from "@aws-cdk/core"; +import { IotToSqs, IotToSqsProps } from "../lib"; +import * as iam from '@aws-cdk/aws-iam'; +import { generateIntegStackName } from '@aws-solutions-constructs/core'; + +// Setup +const app = new App(); +const stack = new Stack(app, generateIntegStackName(__filename)); +stack.templateOptions.description = 'Integration Test for aws-iot-sqs'; + +// Definitions +const props: IotToSqsProps = { + deployDeadLetterQueue: false, + queueProps: { + queueName: 'queue-name' + }, + iotTopicRuleProps: { + topicRulePayload: { + ruleDisabled: false, + description: "Processing messages from IoT devices or factory machines", + sql: "SELECT * FROM 'test/topic/#'", + actions: [] + } + } +}; + +const iotToSqsStack = new IotToSqs(stack, 'test-iot-sqs-stack', props); + +// Grant yourself permissions to use the Customer Managed KMS Key +const policyStatement = new iam.PolicyStatement({ + actions: ["kms:Encrypt", "kms:Decrypt"], + effect: iam.Effect.ALLOW, + principals: [new iam.AccountRootPrincipal()], + resources: ["*"] +}); + +iotToSqsStack.encryptionKey?.addToResourcePolicy(policyStatement); + +// Synth +app.synth(); diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.default-arguments.expected.json b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.default-arguments.expected.json new file mode 100644 index 000000000..845a52069 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.default-arguments.expected.json @@ -0,0 +1,387 @@ +{ + "Description": "Integration Test for aws-iot-sqs", + "Resources": { + "testiotsqsstackdeadLetterQueueA417EB97": { + "Type": "AWS::SQS::Queue", + "Properties": { + "KmsMasterKeyId": "alias/aws/sqs" + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "testiotsqsstackdeadLetterQueuePolicyD0F4B7D3": { + "Type": "AWS::SQS::QueuePolicy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "sqs:DeleteMessage", + "sqs:ReceiveMessage", + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:RemovePermission", + "sqs:AddPermission", + "sqs:SetQueueAttributes" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackdeadLetterQueueA417EB97", + "Arn" + ] + }, + "Sid": "QueueOwnerOnlyAccess" + }, + { + "Action": "SQS:*", + "Condition": { + "Bool": { + "aws:SecureTransport": "false" + } + }, + "Effect": "Deny", + "Principal": "*", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackdeadLetterQueueA417EB97", + "Arn" + ] + }, + "Sid": "HttpsOnly" + } + ], + "Version": "2012-10-17" + }, + "Queues": [ + { + "Ref": "testiotsqsstackdeadLetterQueueA417EB97" + } + ] + } + }, + "testiotsqsstackEncryptionKeyAB09201B": { + "Type": "AWS::KMS::Key", + "Properties": { + "KeyPolicy": { + "Statement": [ + { + "Action": [ + "kms:Create*", + "kms:Describe*", + "kms:Enable*", + "kms:List*", + "kms:Put*", + "kms:Update*", + "kms:Revoke*", + "kms:Disable*", + "kms:Get*", + "kms:Delete*", + "kms:ScheduleKeyDeletion", + "kms:CancelKeyDeletion", + "kms:GenerateDataKey", + "kms:TagResource", + "kms:UntagResource" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": "*" + }, + { + "Action": [ + "kms:Decrypt", + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::GetAtt": [ + "testiotsqsstackiotactionsrole5F8821AA", + "Arn" + ] + } + }, + "Resource": "*" + }, + { + "Action": [ + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::GetAtt": [ + "testiotsqsstackiotactionsrole5F8821AA", + "Arn" + ] + } + }, + "Resource": "*" + }, + { + "Action": [ + "kms:Encrypt", + "kms:Decrypt" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": "*" + } + ], + "Version": "2012-10-17" + }, + "EnableKeyRotation": true + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "testiotsqsstackqueue3DEA94EF": { + "Type": "AWS::SQS::Queue", + "Properties": { + "KmsMasterKeyId": { + "Fn::GetAtt": [ + "testiotsqsstackEncryptionKeyAB09201B", + "Arn" + ] + }, + "RedrivePolicy": { + "deadLetterTargetArn": { + "Fn::GetAtt": [ + "testiotsqsstackdeadLetterQueueA417EB97", + "Arn" + ] + }, + "maxReceiveCount": 15 + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "testiotsqsstackqueuePolicy76FA6440": { + "Type": "AWS::SQS::QueuePolicy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "sqs:DeleteMessage", + "sqs:ReceiveMessage", + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:RemovePermission", + "sqs:AddPermission", + "sqs:SetQueueAttributes" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackqueue3DEA94EF", + "Arn" + ] + }, + "Sid": "QueueOwnerOnlyAccess" + }, + { + "Action": "SQS:*", + "Condition": { + "Bool": { + "aws:SecureTransport": "false" + } + }, + "Effect": "Deny", + "Principal": "*", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackqueue3DEA94EF", + "Arn" + ] + }, + "Sid": "HttpsOnly" + } + ], + "Version": "2012-10-17" + }, + "Queues": [ + { + "Ref": "testiotsqsstackqueue3DEA94EF" + } + ] + } + }, + "testiotsqsstackiotactionsrole5F8821AA": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "iot.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "testiotsqsstackiotactionsroleDefaultPolicy02ED7F00": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackqueue3DEA94EF", + "Arn" + ] + } + }, + { + "Action": [ + "kms:Decrypt", + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackEncryptionKeyAB09201B", + "Arn" + ] + } + }, + { + "Action": [ + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackEncryptionKeyAB09201B", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "testiotsqsstackiotactionsroleDefaultPolicy02ED7F00", + "Roles": [ + { + "Ref": "testiotsqsstackiotactionsrole5F8821AA" + } + ] + } + }, + "testiotsqsstackIotTopicRule02F8F602": { + "Type": "AWS::IoT::TopicRule", + "Properties": { + "TopicRulePayload": { + "Actions": [ + { + "Sqs": { + "QueueUrl": { + "Ref": "testiotsqsstackqueue3DEA94EF" + }, + "RoleArn": { + "Fn::GetAtt": [ + "testiotsqsstackiotactionsrole5F8821AA", + "Arn" + ] + } + } + } + ], + "Description": "Processing messages from IoT devices or factory machines", + "RuleDisabled": false, + "Sql": "SELECT * FROM 'test/topic/#'" + } + } + } + } +} \ No newline at end of file diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.default-arguments.ts b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.default-arguments.ts new file mode 100644 index 000000000..8ecac6ef6 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.default-arguments.ts @@ -0,0 +1,50 @@ +/** + * Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +// Imports +import { App, Stack } from "@aws-cdk/core"; +import { IotToSqs, IotToSqsProps } from "../lib"; +import * as iam from '@aws-cdk/aws-iam'; +import { generateIntegStackName } from '@aws-solutions-constructs/core'; + +// Setup +const app = new App(); +const stack = new Stack(app, generateIntegStackName(__filename)); +stack.templateOptions.description = 'Integration Test for aws-iot-sqs'; + +// Definitions +const props: IotToSqsProps = { + iotTopicRuleProps: { + topicRulePayload: { + ruleDisabled: false, + description: "Processing messages from IoT devices or factory machines", + sql: "SELECT * FROM 'test/topic/#'", + actions: [] + } + } +}; + +const iotToSqsStack = new IotToSqs(stack, 'test-iot-sqs-stack', props); + +// Grant yourself permissions to use the Customer Managed KMS Key +const policyStatement = new iam.PolicyStatement({ + actions: ["kms:Encrypt", "kms:Decrypt"], + effect: iam.Effect.ALLOW, + principals: [ new iam.AccountRootPrincipal() ], + resources: [ "*" ] +}); + +iotToSqsStack.encryptionKey?.addToResourcePolicy(policyStatement); + +// Synth +app.synth(); diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.existing-queue.expected.json b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.existing-queue.expected.json new file mode 100644 index 000000000..056cdc0ef --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.existing-queue.expected.json @@ -0,0 +1,85 @@ +{ + "Description": "Integration Test for aws-iot-sqs", + "Resources": { + "existingqueueobjF8AF0ED1": { + "Type": "AWS::SQS::Queue", + "Properties": { + "QueueName": "existing-queue-obj" + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "testiotsqsstackiotactionsrole5F8821AA": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "iot.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "testiotsqsstackiotactionsroleDefaultPolicy02ED7F00": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "existingqueueobjF8AF0ED1", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "testiotsqsstackiotactionsroleDefaultPolicy02ED7F00", + "Roles": [ + { + "Ref": "testiotsqsstackiotactionsrole5F8821AA" + } + ] + } + }, + "testiotsqsstackIotTopicRule02F8F602": { + "Type": "AWS::IoT::TopicRule", + "Properties": { + "TopicRulePayload": { + "Actions": [ + { + "Sqs": { + "QueueUrl": { + "Ref": "existingqueueobjF8AF0ED1" + }, + "RoleArn": { + "Fn::GetAtt": [ + "testiotsqsstackiotactionsrole5F8821AA", + "Arn" + ] + } + } + } + ], + "Description": "Processing messages from IoT devices or factory machines", + "RuleDisabled": false, + "Sql": "SELECT * FROM 'test/topic/#'" + } + } + } + } +} \ No newline at end of file diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.existing-queue.ts b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.existing-queue.ts new file mode 100644 index 000000000..2e9c0518e --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.existing-queue.ts @@ -0,0 +1,56 @@ +/** + * Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +// Imports +import { App, Stack } from "@aws-cdk/core"; +import { IotToSqs, IotToSqsProps } from "../lib"; +import * as iam from '@aws-cdk/aws-iam'; +import * as sqs from '@aws-cdk/aws-sqs'; +import { generateIntegStackName } from '@aws-solutions-constructs/core'; + +// Setup +const app = new App(); +const stack = new Stack(app, generateIntegStackName(__filename)); +stack.templateOptions.description = 'Integration Test for aws-iot-sqs'; + +// Definitions +const queue = new sqs.Queue(stack, 'existing-queue-obj', { + queueName: 'existing-queue-obj' +}); + +const props: IotToSqsProps = { + existingQueueObj: queue, + iotTopicRuleProps: { + topicRulePayload: { + ruleDisabled: false, + description: "Processing messages from IoT devices or factory machines", + sql: "SELECT * FROM 'test/topic/#'", + actions: [] + } + } +}; + +const iotToSqsStack = new IotToSqs(stack, 'test-iot-sqs-stack', props); + +// Grant yourself permissions to use the Customer Managed KMS Key +const policyStatement = new iam.PolicyStatement({ + actions: ["kms:Encrypt", "kms:Decrypt"], + effect: iam.Effect.ALLOW, + principals: [ new iam.AccountRootPrincipal() ], + resources: [ "*" ] +}); + +iotToSqsStack.encryptionKey?.addToResourcePolicy(policyStatement); + +// Synth +app.synth(); diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-kms-key-props.expected.json b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-kms-key-props.expected.json new file mode 100644 index 000000000..66e1faeb7 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-kms-key-props.expected.json @@ -0,0 +1,399 @@ +{ + "Description": "Integration Test for aws-iot-sqs", + "Resources": { + "testiotsqsstackdeadLetterQueueA417EB97": { + "Type": "AWS::SQS::Queue", + "Properties": { + "KmsMasterKeyId": "alias/aws/sqs" + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "testiotsqsstackdeadLetterQueuePolicyD0F4B7D3": { + "Type": "AWS::SQS::QueuePolicy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "sqs:DeleteMessage", + "sqs:ReceiveMessage", + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:RemovePermission", + "sqs:AddPermission", + "sqs:SetQueueAttributes" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackdeadLetterQueueA417EB97", + "Arn" + ] + }, + "Sid": "QueueOwnerOnlyAccess" + }, + { + "Action": "SQS:*", + "Condition": { + "Bool": { + "aws:SecureTransport": "false" + } + }, + "Effect": "Deny", + "Principal": "*", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackdeadLetterQueueA417EB97", + "Arn" + ] + }, + "Sid": "HttpsOnly" + } + ], + "Version": "2012-10-17" + }, + "Queues": [ + { + "Ref": "testiotsqsstackdeadLetterQueueA417EB97" + } + ] + } + }, + "testiotsqsstackEncryptionKeyAB09201B": { + "Type": "AWS::KMS::Key", + "Properties": { + "KeyPolicy": { + "Statement": [ + { + "Action": [ + "kms:Create*", + "kms:Describe*", + "kms:Enable*", + "kms:List*", + "kms:Put*", + "kms:Update*", + "kms:Revoke*", + "kms:Disable*", + "kms:Get*", + "kms:Delete*", + "kms:ScheduleKeyDeletion", + "kms:CancelKeyDeletion", + "kms:GenerateDataKey", + "kms:TagResource", + "kms:UntagResource" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": "*" + }, + { + "Action": [ + "kms:Decrypt", + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::GetAtt": [ + "testiotsqsstackiotactionsrole5F8821AA", + "Arn" + ] + } + }, + "Resource": "*" + }, + { + "Action": [ + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::GetAtt": [ + "testiotsqsstackiotactionsrole5F8821AA", + "Arn" + ] + } + }, + "Resource": "*" + }, + { + "Action": [ + "kms:Encrypt", + "kms:Decrypt" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": "*" + } + ], + "Version": "2012-10-17" + }, + "EnableKeyRotation": false + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "testiotsqsstackEncryptionKeyAlias45D0FE2E": { + "Type": "AWS::KMS::Alias", + "Properties": { + "AliasName": "alias/new-key-alias-from-props", + "TargetKeyId": { + "Fn::GetAtt": [ + "testiotsqsstackEncryptionKeyAB09201B", + "Arn" + ] + } + } + }, + "testiotsqsstackqueue3DEA94EF": { + "Type": "AWS::SQS::Queue", + "Properties": { + "KmsMasterKeyId": { + "Fn::GetAtt": [ + "testiotsqsstackEncryptionKeyAB09201B", + "Arn" + ] + }, + "RedrivePolicy": { + "deadLetterTargetArn": { + "Fn::GetAtt": [ + "testiotsqsstackdeadLetterQueueA417EB97", + "Arn" + ] + }, + "maxReceiveCount": 15 + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "testiotsqsstackqueuePolicy76FA6440": { + "Type": "AWS::SQS::QueuePolicy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "sqs:DeleteMessage", + "sqs:ReceiveMessage", + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:RemovePermission", + "sqs:AddPermission", + "sqs:SetQueueAttributes" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackqueue3DEA94EF", + "Arn" + ] + }, + "Sid": "QueueOwnerOnlyAccess" + }, + { + "Action": "SQS:*", + "Condition": { + "Bool": { + "aws:SecureTransport": "false" + } + }, + "Effect": "Deny", + "Principal": "*", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackqueue3DEA94EF", + "Arn" + ] + }, + "Sid": "HttpsOnly" + } + ], + "Version": "2012-10-17" + }, + "Queues": [ + { + "Ref": "testiotsqsstackqueue3DEA94EF" + } + ] + } + }, + "testiotsqsstackiotactionsrole5F8821AA": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "iot.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "testiotsqsstackiotactionsroleDefaultPolicy02ED7F00": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackqueue3DEA94EF", + "Arn" + ] + } + }, + { + "Action": [ + "kms:Decrypt", + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackEncryptionKeyAB09201B", + "Arn" + ] + } + }, + { + "Action": [ + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackEncryptionKeyAB09201B", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "testiotsqsstackiotactionsroleDefaultPolicy02ED7F00", + "Roles": [ + { + "Ref": "testiotsqsstackiotactionsrole5F8821AA" + } + ] + } + }, + "testiotsqsstackIotTopicRule02F8F602": { + "Type": "AWS::IoT::TopicRule", + "Properties": { + "TopicRulePayload": { + "Actions": [ + { + "Sqs": { + "QueueUrl": { + "Ref": "testiotsqsstackqueue3DEA94EF" + }, + "RoleArn": { + "Fn::GetAtt": [ + "testiotsqsstackiotactionsrole5F8821AA", + "Arn" + ] + } + } + } + ], + "Description": "Processing messages from IoT devices or factory machines", + "RuleDisabled": false, + "Sql": "SELECT * FROM 'test/topic/#'" + } + } + } + } +} \ No newline at end of file diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-kms-key-props.ts b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-kms-key-props.ts new file mode 100644 index 000000000..9408e8cd0 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-kms-key-props.ts @@ -0,0 +1,54 @@ +/** + * Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +// Imports +import { App, Stack } from "@aws-cdk/core"; +import { IotToSqs, IotToSqsProps } from "../lib"; +import * as iam from '@aws-cdk/aws-iam'; +import { generateIntegStackName } from '@aws-solutions-constructs/core'; + +// Setup +const app = new App(); +const stack = new Stack(app, generateIntegStackName(__filename)); +stack.templateOptions.description = 'Integration Test for aws-iot-sqs'; + +// Definitions +const props: IotToSqsProps = { + encryptionKeyProps: { + enableKeyRotation: false, + alias: 'new-key-alias-from-props' + }, + iotTopicRuleProps: { + topicRulePayload: { + ruleDisabled: false, + description: "Processing messages from IoT devices or factory machines", + sql: "SELECT * FROM 'test/topic/#'", + actions: [] + } + } +}; + +const iotToSqsStack = new IotToSqs(stack, 'test-iot-sqs-stack', props); + +// Grant yourself permissions to use the Customer Managed KMS Key +const policyStatement = new iam.PolicyStatement({ + actions: ["kms:Encrypt", "kms:Decrypt"], + effect: iam.Effect.ALLOW, + principals: [ new iam.AccountRootPrincipal() ], + resources: [ "*" ] +}); + +iotToSqsStack.encryptionKey?.addToResourcePolicy(policyStatement); + +// Synth +app.synth(); diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-queue-props.expected.json b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-queue-props.expected.json new file mode 100644 index 000000000..69e5eaefa --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-queue-props.expected.json @@ -0,0 +1,389 @@ +{ + "Description": "Integration Test for aws-iot-sqs", + "Resources": { + "testiotsqsstackdeadLetterQueueA417EB97": { + "Type": "AWS::SQS::Queue", + "Properties": { + "KmsMasterKeyId": "alias/aws/sqs", + "QueueName": "dlq-name" + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "testiotsqsstackdeadLetterQueuePolicyD0F4B7D3": { + "Type": "AWS::SQS::QueuePolicy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "sqs:DeleteMessage", + "sqs:ReceiveMessage", + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:RemovePermission", + "sqs:AddPermission", + "sqs:SetQueueAttributes" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackdeadLetterQueueA417EB97", + "Arn" + ] + }, + "Sid": "QueueOwnerOnlyAccess" + }, + { + "Action": "SQS:*", + "Condition": { + "Bool": { + "aws:SecureTransport": "false" + } + }, + "Effect": "Deny", + "Principal": "*", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackdeadLetterQueueA417EB97", + "Arn" + ] + }, + "Sid": "HttpsOnly" + } + ], + "Version": "2012-10-17" + }, + "Queues": [ + { + "Ref": "testiotsqsstackdeadLetterQueueA417EB97" + } + ] + } + }, + "testiotsqsstackEncryptionKeyAB09201B": { + "Type": "AWS::KMS::Key", + "Properties": { + "KeyPolicy": { + "Statement": [ + { + "Action": [ + "kms:Create*", + "kms:Describe*", + "kms:Enable*", + "kms:List*", + "kms:Put*", + "kms:Update*", + "kms:Revoke*", + "kms:Disable*", + "kms:Get*", + "kms:Delete*", + "kms:ScheduleKeyDeletion", + "kms:CancelKeyDeletion", + "kms:GenerateDataKey", + "kms:TagResource", + "kms:UntagResource" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": "*" + }, + { + "Action": [ + "kms:Decrypt", + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::GetAtt": [ + "testiotsqsstackiotactionsrole5F8821AA", + "Arn" + ] + } + }, + "Resource": "*" + }, + { + "Action": [ + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::GetAtt": [ + "testiotsqsstackiotactionsrole5F8821AA", + "Arn" + ] + } + }, + "Resource": "*" + }, + { + "Action": [ + "kms:Encrypt", + "kms:Decrypt" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": "*" + } + ], + "Version": "2012-10-17" + }, + "EnableKeyRotation": true + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "testiotsqsstackqueue3DEA94EF": { + "Type": "AWS::SQS::Queue", + "Properties": { + "KmsMasterKeyId": { + "Fn::GetAtt": [ + "testiotsqsstackEncryptionKeyAB09201B", + "Arn" + ] + }, + "QueueName": "queue-name", + "RedrivePolicy": { + "deadLetterTargetArn": { + "Fn::GetAtt": [ + "testiotsqsstackdeadLetterQueueA417EB97", + "Arn" + ] + }, + "maxReceiveCount": 15 + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "testiotsqsstackqueuePolicy76FA6440": { + "Type": "AWS::SQS::QueuePolicy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "sqs:DeleteMessage", + "sqs:ReceiveMessage", + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:RemovePermission", + "sqs:AddPermission", + "sqs:SetQueueAttributes" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackqueue3DEA94EF", + "Arn" + ] + }, + "Sid": "QueueOwnerOnlyAccess" + }, + { + "Action": "SQS:*", + "Condition": { + "Bool": { + "aws:SecureTransport": "false" + } + }, + "Effect": "Deny", + "Principal": "*", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackqueue3DEA94EF", + "Arn" + ] + }, + "Sid": "HttpsOnly" + } + ], + "Version": "2012-10-17" + }, + "Queues": [ + { + "Ref": "testiotsqsstackqueue3DEA94EF" + } + ] + } + }, + "testiotsqsstackiotactionsrole5F8821AA": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "iot.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "testiotsqsstackiotactionsroleDefaultPolicy02ED7F00": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackqueue3DEA94EF", + "Arn" + ] + } + }, + { + "Action": [ + "kms:Decrypt", + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackEncryptionKeyAB09201B", + "Arn" + ] + } + }, + { + "Action": [ + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackEncryptionKeyAB09201B", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "testiotsqsstackiotactionsroleDefaultPolicy02ED7F00", + "Roles": [ + { + "Ref": "testiotsqsstackiotactionsrole5F8821AA" + } + ] + } + }, + "testiotsqsstackIotTopicRule02F8F602": { + "Type": "AWS::IoT::TopicRule", + "Properties": { + "TopicRulePayload": { + "Actions": [ + { + "Sqs": { + "QueueUrl": { + "Ref": "testiotsqsstackqueue3DEA94EF" + }, + "RoleArn": { + "Fn::GetAtt": [ + "testiotsqsstackiotactionsrole5F8821AA", + "Arn" + ] + } + } + } + ], + "Description": "Processing messages from IoT devices or factory machines", + "RuleDisabled": false, + "Sql": "SELECT * FROM 'test/topic/#'" + } + } + } + } +} \ No newline at end of file diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-queue-props.ts b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-queue-props.ts new file mode 100644 index 000000000..c0cbd2c26 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-queue-props.ts @@ -0,0 +1,56 @@ +/** + * Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +// Imports +import { App, Stack } from "@aws-cdk/core"; +import { IotToSqs, IotToSqsProps } from "../lib"; +import * as iam from '@aws-cdk/aws-iam'; +import { generateIntegStackName } from '@aws-solutions-constructs/core'; + +// Setup +const app = new App(); +const stack = new Stack(app, generateIntegStackName(__filename)); +stack.templateOptions.description = 'Integration Test for aws-iot-sqs'; + +// Definitions +const props: IotToSqsProps = { + deadLetterQueueProps: { + queueName: 'dlq-name' + }, + queueProps: { + queueName: 'queue-name' + }, + iotTopicRuleProps: { + topicRulePayload: { + ruleDisabled: false, + description: "Processing messages from IoT devices or factory machines", + sql: "SELECT * FROM 'test/topic/#'", + actions: [] + } + } +}; + +const iotToSqsStack = new IotToSqs(stack, 'test-iot-sqs-stack', props); + +// Grant yourself permissions to use the Customer Managed KMS Key +const policyStatement = new iam.PolicyStatement({ + actions: ["kms:Encrypt", "kms:Decrypt"], + effect: iam.Effect.ALLOW, + principals: [new iam.AccountRootPrincipal()], + resources: ["*"] +}); + +iotToSqsStack.encryptionKey?.addToResourcePolicy(policyStatement); + +// Synth +app.synth(); diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.with-existing-key.expected.json b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.with-existing-key.expected.json new file mode 100644 index 000000000..e34b2504b --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.with-existing-key.expected.json @@ -0,0 +1,399 @@ +{ + "Description": "Integration Test for aws-iot-sqs", + "Resources": { + "existingkey205DFC01": { + "Type": "AWS::KMS::Key", + "Properties": { + "KeyPolicy": { + "Statement": [ + { + "Action": [ + "kms:Create*", + "kms:Describe*", + "kms:Enable*", + "kms:List*", + "kms:Put*", + "kms:Update*", + "kms:Revoke*", + "kms:Disable*", + "kms:Get*", + "kms:Delete*", + "kms:ScheduleKeyDeletion", + "kms:CancelKeyDeletion", + "kms:GenerateDataKey", + "kms:TagResource", + "kms:UntagResource" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": "*" + }, + { + "Action": [ + "kms:Decrypt", + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::GetAtt": [ + "testiotsqsstackiotactionsrole5F8821AA", + "Arn" + ] + } + }, + "Resource": "*" + }, + { + "Action": [ + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::GetAtt": [ + "testiotsqsstackiotactionsrole5F8821AA", + "Arn" + ] + } + }, + "Resource": "*" + }, + { + "Action": [ + "kms:Encrypt", + "kms:Decrypt" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": "*" + } + ], + "Version": "2012-10-17" + }, + "EnableKeyRotation": false + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "existingkeyAliasE18FEC67": { + "Type": "AWS::KMS::Alias", + "Properties": { + "AliasName": "alias/existing-key-alias", + "TargetKeyId": { + "Fn::GetAtt": [ + "existingkey205DFC01", + "Arn" + ] + } + } + }, + "testiotsqsstackdeadLetterQueueA417EB97": { + "Type": "AWS::SQS::Queue", + "Properties": { + "KmsMasterKeyId": "alias/aws/sqs" + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "testiotsqsstackdeadLetterQueuePolicyD0F4B7D3": { + "Type": "AWS::SQS::QueuePolicy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "sqs:DeleteMessage", + "sqs:ReceiveMessage", + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:RemovePermission", + "sqs:AddPermission", + "sqs:SetQueueAttributes" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackdeadLetterQueueA417EB97", + "Arn" + ] + }, + "Sid": "QueueOwnerOnlyAccess" + }, + { + "Action": "SQS:*", + "Condition": { + "Bool": { + "aws:SecureTransport": "false" + } + }, + "Effect": "Deny", + "Principal": "*", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackdeadLetterQueueA417EB97", + "Arn" + ] + }, + "Sid": "HttpsOnly" + } + ], + "Version": "2012-10-17" + }, + "Queues": [ + { + "Ref": "testiotsqsstackdeadLetterQueueA417EB97" + } + ] + } + }, + "testiotsqsstackqueue3DEA94EF": { + "Type": "AWS::SQS::Queue", + "Properties": { + "KmsMasterKeyId": { + "Fn::GetAtt": [ + "existingkey205DFC01", + "Arn" + ] + }, + "RedrivePolicy": { + "deadLetterTargetArn": { + "Fn::GetAtt": [ + "testiotsqsstackdeadLetterQueueA417EB97", + "Arn" + ] + }, + "maxReceiveCount": 15 + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "testiotsqsstackqueuePolicy76FA6440": { + "Type": "AWS::SQS::QueuePolicy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "sqs:DeleteMessage", + "sqs:ReceiveMessage", + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:RemovePermission", + "sqs:AddPermission", + "sqs:SetQueueAttributes" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackqueue3DEA94EF", + "Arn" + ] + }, + "Sid": "QueueOwnerOnlyAccess" + }, + { + "Action": "SQS:*", + "Condition": { + "Bool": { + "aws:SecureTransport": "false" + } + }, + "Effect": "Deny", + "Principal": "*", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackqueue3DEA94EF", + "Arn" + ] + }, + "Sid": "HttpsOnly" + } + ], + "Version": "2012-10-17" + }, + "Queues": [ + { + "Ref": "testiotsqsstackqueue3DEA94EF" + } + ] + } + }, + "testiotsqsstackiotactionsrole5F8821AA": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "iot.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "testiotsqsstackiotactionsroleDefaultPolicy02ED7F00": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackqueue3DEA94EF", + "Arn" + ] + } + }, + { + "Action": [ + "kms:Decrypt", + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "existingkey205DFC01", + "Arn" + ] + } + }, + { + "Action": [ + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "existingkey205DFC01", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "testiotsqsstackiotactionsroleDefaultPolicy02ED7F00", + "Roles": [ + { + "Ref": "testiotsqsstackiotactionsrole5F8821AA" + } + ] + } + }, + "testiotsqsstackIotTopicRule02F8F602": { + "Type": "AWS::IoT::TopicRule", + "Properties": { + "TopicRulePayload": { + "Actions": [ + { + "Sqs": { + "QueueUrl": { + "Ref": "testiotsqsstackqueue3DEA94EF" + }, + "RoleArn": { + "Fn::GetAtt": [ + "testiotsqsstackiotactionsrole5F8821AA", + "Arn" + ] + } + } + } + ], + "Description": "Processing messages from IoT devices or factory machines", + "RuleDisabled": false, + "Sql": "SELECT * FROM 'test/topic/#'" + } + } + } + } +} \ No newline at end of file diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.with-existing-key.ts b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.with-existing-key.ts new file mode 100644 index 000000000..c69847495 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.with-existing-key.ts @@ -0,0 +1,57 @@ +/** + * Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +// Imports +import { App, Stack } from "@aws-cdk/core"; +import { IotToSqs, IotToSqsProps } from "../lib"; +import * as iam from '@aws-cdk/aws-iam'; +import * as kms from '@aws-cdk/aws-kms'; +import { generateIntegStackName } from '@aws-solutions-constructs/core'; + +// Setup +const app = new App(); +const stack = new Stack(app, generateIntegStackName(__filename)); +stack.templateOptions.description = 'Integration Test for aws-iot-sqs'; + +// Definitions +const kmsKey = new kms.Key(stack, 'existing-key', { + enableKeyRotation: false, + alias: 'existing-key-alias' +}); + +const props: IotToSqsProps = { + encryptionKey: kmsKey, + iotTopicRuleProps: { + topicRulePayload: { + ruleDisabled: false, + description: "Processing messages from IoT devices or factory machines", + sql: "SELECT * FROM 'test/topic/#'", + actions: [] + } + } +}; + +const iotToSqsStack = new IotToSqs(stack, 'test-iot-sqs-stack', props); + +// Grant yourself permissions to use the Customer Managed KMS Key +const policyStatement = new iam.PolicyStatement({ + actions: ["kms:Encrypt", "kms:Decrypt"], + effect: iam.Effect.ALLOW, + principals: [new iam.AccountRootPrincipal()], + resources: ["*"] +}); + +iotToSqsStack.encryptionKey?.addToResourcePolicy(policyStatement); + +// Synth +app.synth(); diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.without-create-kms-key.expected.json b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.without-create-kms-key.expected.json new file mode 100644 index 000000000..a090fe2c6 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.without-create-kms-key.expected.json @@ -0,0 +1,240 @@ +{ + "Description": "Integration Test for aws-iot-sqs", + "Resources": { + "testiotsqsstackdeadLetterQueueA417EB97": { + "Type": "AWS::SQS::Queue", + "Properties": { + "KmsMasterKeyId": "alias/aws/sqs" + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "testiotsqsstackdeadLetterQueuePolicyD0F4B7D3": { + "Type": "AWS::SQS::QueuePolicy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "sqs:DeleteMessage", + "sqs:ReceiveMessage", + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:RemovePermission", + "sqs:AddPermission", + "sqs:SetQueueAttributes" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackdeadLetterQueueA417EB97", + "Arn" + ] + }, + "Sid": "QueueOwnerOnlyAccess" + }, + { + "Action": "SQS:*", + "Condition": { + "Bool": { + "aws:SecureTransport": "false" + } + }, + "Effect": "Deny", + "Principal": "*", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackdeadLetterQueueA417EB97", + "Arn" + ] + }, + "Sid": "HttpsOnly" + } + ], + "Version": "2012-10-17" + }, + "Queues": [ + { + "Ref": "testiotsqsstackdeadLetterQueueA417EB97" + } + ] + } + }, + "testiotsqsstackqueue3DEA94EF": { + "Type": "AWS::SQS::Queue", + "Properties": { + "KmsMasterKeyId": "alias/aws/sqs", + "RedrivePolicy": { + "deadLetterTargetArn": { + "Fn::GetAtt": [ + "testiotsqsstackdeadLetterQueueA417EB97", + "Arn" + ] + }, + "maxReceiveCount": 15 + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "testiotsqsstackqueuePolicy76FA6440": { + "Type": "AWS::SQS::QueuePolicy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "sqs:DeleteMessage", + "sqs:ReceiveMessage", + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:RemovePermission", + "sqs:AddPermission", + "sqs:SetQueueAttributes" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackqueue3DEA94EF", + "Arn" + ] + }, + "Sid": "QueueOwnerOnlyAccess" + }, + { + "Action": "SQS:*", + "Condition": { + "Bool": { + "aws:SecureTransport": "false" + } + }, + "Effect": "Deny", + "Principal": "*", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackqueue3DEA94EF", + "Arn" + ] + }, + "Sid": "HttpsOnly" + } + ], + "Version": "2012-10-17" + }, + "Queues": [ + { + "Ref": "testiotsqsstackqueue3DEA94EF" + } + ] + } + }, + "testiotsqsstackiotactionsrole5F8821AA": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "iot.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "testiotsqsstackiotactionsroleDefaultPolicy02ED7F00": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "testiotsqsstackqueue3DEA94EF", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "testiotsqsstackiotactionsroleDefaultPolicy02ED7F00", + "Roles": [ + { + "Ref": "testiotsqsstackiotactionsrole5F8821AA" + } + ] + } + }, + "testiotsqsstackIotTopicRule02F8F602": { + "Type": "AWS::IoT::TopicRule", + "Properties": { + "TopicRulePayload": { + "Actions": [ + { + "Sqs": { + "QueueUrl": { + "Ref": "testiotsqsstackqueue3DEA94EF" + }, + "RoleArn": { + "Fn::GetAtt": [ + "testiotsqsstackiotactionsrole5F8821AA", + "Arn" + ] + } + } + } + ], + "Description": "Processing messages from IoT devices or factory machines", + "RuleDisabled": false, + "Sql": "SELECT * FROM 'test/topic/#'" + } + } + } + } +} \ No newline at end of file diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.without-create-kms-key.ts b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.without-create-kms-key.ts new file mode 100644 index 000000000..54b7cb800 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.without-create-kms-key.ts @@ -0,0 +1,51 @@ +/** + * Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +// Imports +import { App, Stack } from "@aws-cdk/core"; +import { IotToSqs, IotToSqsProps } from "../lib"; +import * as iam from '@aws-cdk/aws-iam'; +import { generateIntegStackName } from '@aws-solutions-constructs/core'; + +// Setup +const app = new App(); +const stack = new Stack(app, generateIntegStackName(__filename)); +stack.templateOptions.description = 'Integration Test for aws-iot-sqs'; + +// Definitions +const props: IotToSqsProps = { + enableEncryptionWithCustomerManagedKey: false, + iotTopicRuleProps: { + topicRulePayload: { + ruleDisabled: false, + description: "Processing messages from IoT devices or factory machines", + sql: "SELECT * FROM 'test/topic/#'", + actions: [] + } + } +}; + +const iotToSqsStack = new IotToSqs(stack, 'test-iot-sqs-stack', props); + +// Grant yourself permissions to use the Customer Managed KMS Key +const policyStatement = new iam.PolicyStatement({ + actions: ["kms:Encrypt", "kms:Decrypt"], + effect: iam.Effect.ALLOW, + principals: [ new iam.AccountRootPrincipal() ], + resources: [ "*" ] +}); + +iotToSqsStack.encryptionKey?.addToResourcePolicy(policyStatement); + +// Synth +app.synth(); diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/iot-sqs.test.ts b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/iot-sqs.test.ts new file mode 100644 index 000000000..f5b3914ce --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/iot-sqs.test.ts @@ -0,0 +1,481 @@ +/** + * Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +// Imports +import { Stack } from "@aws-cdk/core"; +import { IotToSqs, IotToSqsProps } from "../lib"; +import { SynthUtils } from '@aws-cdk/assert'; +import '@aws-cdk/assert/jest'; +import * as sqs from '@aws-cdk/aws-sqs'; +import * as kms from '@aws-cdk/aws-kms'; + +// -------------------------------------------------------------- +// Pattern deployment with default props +// -------------------------------------------------------------- +test('Pattern deployment with default props', () => { + // Initial Setup + const stack = new Stack(); + const props: IotToSqsProps = { + iotTopicRuleProps: { + topicRulePayload: { + ruleDisabled: false, + description: "Processing messages from IoT devices or factory machines", + sql: "SELECT * FROM 'test/topic/#'", + actions: [] + } + } + }; + new IotToSqs(stack, 'test-iot-sqs', props); + + expect(SynthUtils.toCloudFormation(stack)).toMatchSnapshot(); + + // Creates a default sqs queue + expect(stack).toHaveResource("AWS::SQS::Queue", { + KmsMasterKeyId: { + "Fn::GetAtt": [ + "testiotsqsEncryptionKey64EE64B1", + "Arn" + ] + } + }); + + // Creates a dead letter queue + expect(stack).toHaveResource("AWS::SQS::Queue", { + KmsMasterKeyId: "alias/aws/sqs" + }); + + // Creates an IoT Topic Rule + expect(stack).toHaveResource("AWS::IoT::TopicRule", { + TopicRulePayload: { + Actions: [ + { + Sqs: { + QueueUrl: { Ref: "testiotsqsqueue630B4C1F" }, + RoleArn: { + "Fn::GetAtt": [ + "testiotsqsiotactionsrole93B1D327", + "Arn" + ] + } + } + } + ], + Description: "Processing messages from IoT devices or factory machines", + RuleDisabled: false, + Sql: "SELECT * FROM 'test/topic/#'" + } + }); + + // Creates an encryption key + expect(stack).toHaveResource("AWS::KMS::Key", { + EnableKeyRotation: true + }); +}); + +// -------------------------------------------------------------- +// Testing with existing SQS Queue +// -------------------------------------------------------------- +test('Pattern deployment with existing queue', () => { + // Initial Setup + const stack = new Stack(); + + const queue = new sqs.Queue(stack, 'existing-queue-obj', { + queueName: 'existing-queue-obj' + }); + + const props: IotToSqsProps = { + existingQueueObj: queue, + iotTopicRuleProps: { + topicRulePayload: { + ruleDisabled: false, + description: "Processing messages from IoT devices or factory machines", + sql: "SELECT * FROM 'test/topic/#'", + actions: [] + } + } + }; + new IotToSqs(stack, 'test-iot-sqs', props); + + expect(SynthUtils.toCloudFormation(stack)).toMatchSnapshot(); + + // Creates a default sqs queue + expect(stack).toHaveResource("AWS::SQS::Queue", { + QueueName: "existing-queue-obj" + }); +}); + +// -------------------------------------------------------------- +// Testing with passing queue and dead letter queue props +// -------------------------------------------------------------- +test('Pattern deployment with queue and dead letter queue props', () => { + // Initial Setup + const stack = new Stack(); + + const props: IotToSqsProps = { + deadLetterQueueProps: { + queueName: 'dlq-name' + }, + queueProps: { + queueName: 'queue-name' + }, + iotTopicRuleProps: { + topicRulePayload: { + ruleDisabled: false, + description: "Processing messages from IoT devices or factory machines", + sql: "SELECT * FROM 'test/topic/#'", + actions: [] + } + } + }; + new IotToSqs(stack, 'test-iot-sqs', props); + + expect(SynthUtils.toCloudFormation(stack)).toMatchSnapshot(); + + // Creates a queue using the provided props + expect(stack).toHaveResource("AWS::SQS::Queue", { + QueueName: "queue-name", + RedrivePolicy: { + deadLetterTargetArn: { + "Fn::GetAtt": [ + "testiotsqsdeadLetterQueue66A04E81", + "Arn", + ], + }, + maxReceiveCount: 15 + } + }); + + // Creates a dead letter queue using the provided props + expect(stack).toHaveResource("AWS::SQS::Queue", { + QueueName: "dlq-name" + }); +}); + +// -------------------------------------------------------------- +// Testing with dead letter queue turned off +// -------------------------------------------------------------- +test('Pattern deployment with dead letter queue turned off', () => { + // Initial Setup + const stack = new Stack(); + + const props: IotToSqsProps = { + deployDeadLetterQueue: false, + queueProps: { + queueName: 'queue-name' + }, + iotTopicRuleProps: { + topicRulePayload: { + ruleDisabled: false, + description: "Processing messages from IoT devices or factory machines", + sql: "SELECT * FROM 'test/topic/#'", + actions: [] + } + } + }; + new IotToSqs(stack, 'test-iot-sqs', props); + + expect(SynthUtils.toCloudFormation(stack)).toMatchSnapshot(); + + // Creates a queue using the provided props + expect(stack).toHaveResource("AWS::SQS::Queue", { + QueueName: "queue-name" + }); + + // Does not create the default dead letter queue + expect(stack).not.toHaveResource("AWS::SQS::Queue", { + KmsMasterKeyId: "alias/aws/sqs" + }); +}); + +// -------------------------------------------------------------- +// Testing with custom maxReceiveCount +// -------------------------------------------------------------- +test('Pattern deployment with custom maxReceiveCount', () => { + // Initial Setup + const stack = new Stack(); + + const props: IotToSqsProps = { + deadLetterQueueProps: { + queueName: 'dlq-name' + }, + deployDeadLetterQueue: true, + maxReceiveCount: 1, + queueProps: { + queueName: 'queue-name' + }, + iotTopicRuleProps: { + topicRulePayload: { + ruleDisabled: false, + description: "Processing messages from IoT devices or factory machines", + sql: "SELECT * FROM 'test/topic/#'", + actions: [] + } + } + }; + new IotToSqs(stack, 'test-iot-sqs', props); + + expect(SynthUtils.toCloudFormation(stack)).toMatchSnapshot(); + + // Creates a queue using the provided props + expect(stack).toHaveResource("AWS::SQS::Queue", { + QueueName: "queue-name", + RedrivePolicy: { + deadLetterTargetArn: { + "Fn::GetAtt": [ + "testiotsqsdeadLetterQueue66A04E81", + "Arn", + ], + }, + maxReceiveCount: 1 + }, + }); +}); + +// -------------------------------------------------------------- +// Testing without creating a KMS key +// -------------------------------------------------------------- +test('Pattern deployment without creating a KMS key', () => { + // Initial Setup + const stack = new Stack(); + + const props: IotToSqsProps = { + enableEncryptionWithCustomerManagedKey: false, + iotTopicRuleProps: { + topicRulePayload: { + ruleDisabled: false, + description: "Processing messages from IoT devices or factory machines", + sql: "SELECT * FROM 'test/topic/#'", + actions: [] + } + } + }; + new IotToSqs(stack, 'test-iot-sqs', props); + + expect(SynthUtils.toCloudFormation(stack)).toMatchSnapshot(); + + // Creates a default sqs queue + expect(stack).toHaveResource("AWS::SQS::Queue", { + KmsMasterKeyId: "alias/aws/sqs" + }); + + // Creates a dead letter queue + expect(stack).toHaveResource("AWS::SQS::Queue", { + KmsMasterKeyId: "alias/aws/sqs" + }); + + // Creates an IoT Topic Rule + expect(stack).toHaveResource("AWS::IoT::TopicRule", { + TopicRulePayload: { + Actions: [ + { + Sqs: { + QueueUrl: { Ref: "testiotsqsqueue630B4C1F" }, + RoleArn: { + "Fn::GetAtt": [ + "testiotsqsiotactionsrole93B1D327", + "Arn" + ] + } + } + } + ], + Description: "Processing messages from IoT devices or factory machines", + RuleDisabled: false, + Sql: "SELECT * FROM 'test/topic/#'" + } + }); + + // Does not create an encryption key + expect(stack).not.toHaveResource("AWS::KMS::Key"); +}); + +// -------------------------------------------------------------- +// Testing with existing KMS key +// -------------------------------------------------------------- +test('Pattern deployment with existing KMS key', () => { + // Initial Setup + const stack = new Stack(); + + const kmsKey = new kms.Key(stack, 'existing-key', { + enableKeyRotation: false, + alias: 'existing-key-alias' + }); + + const props: IotToSqsProps = { + encryptionKey: kmsKey, + iotTopicRuleProps: { + topicRulePayload: { + ruleDisabled: false, + description: "Processing messages from IoT devices or factory machines", + sql: "SELECT * FROM 'test/topic/#'", + actions: [] + } + } + }; + new IotToSqs(stack, 'test-iot-sqs', props); + + expect(SynthUtils.toCloudFormation(stack)).toMatchSnapshot(); + + // Creates a default sqs queue + expect(stack).toHaveResource("AWS::SQS::Queue", { + KmsMasterKeyId: { + "Fn::GetAtt": [ + "existingkey205DFC01", + "Arn" + ] + } + }); + + // Creates a dead letter queue + expect(stack).toHaveResource("AWS::SQS::Queue", { + KmsMasterKeyId: "alias/aws/sqs" + }); + + // Creates an IoT Topic Rule + expect(stack).toHaveResource("AWS::IoT::TopicRule", { + TopicRulePayload: { + Actions: [ + { + Sqs: { + QueueUrl: { Ref: "testiotsqsqueue630B4C1F" }, + RoleArn: { + "Fn::GetAtt": [ + "testiotsqsiotactionsrole93B1D327", + "Arn" + ] + } + } + } + ], + Description: "Processing messages from IoT devices or factory machines", + RuleDisabled: false, + Sql: "SELECT * FROM 'test/topic/#'" + } + }); + + // Uses the provided key + expect(stack).toHaveResource("AWS::KMS::Key", { + EnableKeyRotation: false + }); +}); + +// -------------------------------------------------------------- +// Testing with passing KMS key props +// -------------------------------------------------------------- +test('Pattern deployment passing KMS key props', () => { + // Initial Setup + const stack = new Stack(); + + const props: IotToSqsProps = { + encryptionKeyProps: { + enableKeyRotation: false, + alias: 'new-key-alias-from-props' + }, + iotTopicRuleProps: { + topicRulePayload: { + ruleDisabled: false, + description: "Processing messages from IoT devices or factory machines", + sql: "SELECT * FROM 'test/topic/#'", + actions: [] + } + } + }; + new IotToSqs(stack, 'test-iot-sqs', props); + + expect(SynthUtils.toCloudFormation(stack)).toMatchSnapshot(); + + // Creates a default sqs queue + expect(stack).toHaveResource("AWS::SQS::Queue", { + KmsMasterKeyId: { + "Fn::GetAtt": [ + "testiotsqsEncryptionKey64EE64B1", + "Arn" + ] + } + }); + + // Creates a dead letter queue + expect(stack).toHaveResource("AWS::SQS::Queue", { + KmsMasterKeyId: "alias/aws/sqs" + }); + + // Creates an IoT Topic Rule + expect(stack).toHaveResource("AWS::IoT::TopicRule", { + TopicRulePayload: { + Actions: [ + { + Sqs: { + QueueUrl: { Ref: "testiotsqsqueue630B4C1F" }, + RoleArn: { + "Fn::GetAtt": [ + "testiotsqsiotactionsrole93B1D327", + "Arn" + ] + } + } + } + ], + Description: "Processing messages from IoT devices or factory machines", + RuleDisabled: false, + Sql: "SELECT * FROM 'test/topic/#'" + } + }); + + // Uses the props to create the key + expect(stack).toHaveResource("AWS::KMS::Key", { + EnableKeyRotation: false + }); + + expect(stack).toHaveResource("AWS::KMS::Alias", { + AliasName: "alias/new-key-alias-from-props", + TargetKeyId: { + "Fn::GetAtt": [ + "testiotsqsEncryptionKey64EE64B1", + "Arn", + ] + } + }); +}); + +// -------------------------------------------------------------- +// Testing with passing a FIFO queue (not supported by IoT) +// -------------------------------------------------------------- +test('Pattern deployment with passing a FIFO queue (not supported by IoT)', () => { + // Initial Setup + const stack = new Stack(); + + const queue = new sqs.Queue(stack, 'existing-fifo-queue-obj', { + queueName: 'existing-queue.fifo', + fifo: true + }); + + const props: IotToSqsProps = { + existingQueueObj: queue, + iotTopicRuleProps: { + topicRulePayload: { + ruleDisabled: false, + description: "Processing messages from IoT devices or factory machines", + sql: "SELECT * FROM 'test/topic/#'", + actions: [] + } + } + }; + + expect.assertions(1); + + try { + new IotToSqs(stack, 'test-iot-sqs', props); + } catch (err) { + expect(err.message).toBe('The IoT SQS action doesn\'t support Amazon SQS FIFO (First-In-First-Out) queues'); + } +}); From 2bd1647c73ae73f30df7c0019dc0ad0812aa239d Mon Sep 17 00:00:00 2001 From: Quinones Date: Tue, 3 Aug 2021 08:28:53 -0400 Subject: [PATCH 4/7] Revert aws-iot-sqs versions in package.json --- .../aws-iot-sqs/package.json | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/package.json b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/package.json index 6f47ff347..4a7fed0ec 100644 --- a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/package.json +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/package.json @@ -1,6 +1,6 @@ { "name": "@aws-solutions-constructs/aws-iot-sqs", - "version": "1.111.0", + "version": "0.0.0", "description": "CDK Constructs for AWS IoT to AWS SQS integration", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -53,16 +53,16 @@ } }, "dependencies": { - "@aws-cdk/aws-iot": "1.111.0", - "@aws-cdk/aws-sqs": "1.111.0", - "@aws-cdk/aws-iam": "1.111.0", - "@aws-cdk/aws-kms": "1.111.0", - "@aws-cdk/core": "1.111.0", - "@aws-solutions-constructs/core": "1.111.0", + "@aws-cdk/aws-iot": "0.0.0", + "@aws-cdk/aws-sqs": "0.0.0", + "@aws-cdk/aws-iam": "0.0.0", + "@aws-cdk/aws-kms": "0.0.0", + "@aws-cdk/core": "0.0.0", + "@aws-solutions-constructs/core": "0.0.0", "constructs": "^3.2.0" }, "devDependencies": { - "@aws-cdk/assert": "1.111.0", + "@aws-cdk/assert": "0.0.0", "@types/jest": "^26.0.22", "@types/node": "^10.3.0" }, @@ -81,12 +81,12 @@ ] }, "peerDependencies": { - "@aws-cdk/aws-iot": "1.111.0", - "@aws-cdk/aws-sqs": "1.111.0", - "@aws-cdk/aws-iam": "1.111.0", - "@aws-cdk/aws-kms": "1.111.0", - "@aws-cdk/core": "1.111.0", - "@aws-solutions-constructs/core": "1.111.0", + "@aws-cdk/aws-iot": "0.0.0", + "@aws-cdk/aws-sqs": "0.0.0", + "@aws-cdk/aws-iam": "0.0.0", + "@aws-cdk/aws-kms": "0.0.0", + "@aws-cdk/core": "0.0.0", + "@aws-solutions-constructs/core": "0.0.0", "constructs": "^3.2.0" } -} +} \ No newline at end of file From c48af2155c3188291832bdd055720ae70489d51f Mon Sep 17 00:00:00 2001 From: Quinones Date: Tue, 3 Aug 2021 09:51:41 -0400 Subject: [PATCH 5/7] Update integration tests to resolve CFN Nag warnings --- .../aws-iot-sqs/test/integ.existing-queue.expected.json | 1 + .../aws-iot-sqs/test/integ.existing-queue.ts | 4 +++- .../aws-iot-sqs/test/integ.use-kms-key-props.expected.json | 2 +- .../aws-iot-sqs/test/integ.use-kms-key-props.ts | 2 +- .../aws-iot-sqs/test/integ.with-existing-key.expected.json | 2 +- .../aws-iot-sqs/test/integ.with-existing-key.ts | 2 +- 6 files changed, 8 insertions(+), 5 deletions(-) diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.existing-queue.expected.json b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.existing-queue.expected.json index 056cdc0ef..6a830d553 100644 --- a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.existing-queue.expected.json +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.existing-queue.expected.json @@ -4,6 +4,7 @@ "existingqueueobjF8AF0ED1": { "Type": "AWS::SQS::Queue", "Properties": { + "KmsMasterKeyId": "alias/aws/sqs", "QueueName": "existing-queue-obj" }, "UpdateReplacePolicy": "Delete", diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.existing-queue.ts b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.existing-queue.ts index 2e9c0518e..5fb480e35 100644 --- a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.existing-queue.ts +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.existing-queue.ts @@ -17,6 +17,7 @@ import { IotToSqs, IotToSqsProps } from "../lib"; import * as iam from '@aws-cdk/aws-iam'; import * as sqs from '@aws-cdk/aws-sqs'; import { generateIntegStackName } from '@aws-solutions-constructs/core'; +import { QueueEncryption } from "@aws-cdk/aws-sqs"; // Setup const app = new App(); @@ -25,7 +26,8 @@ stack.templateOptions.description = 'Integration Test for aws-iot-sqs'; // Definitions const queue = new sqs.Queue(stack, 'existing-queue-obj', { - queueName: 'existing-queue-obj' + queueName: 'existing-queue-obj', + encryption: QueueEncryption.KMS_MANAGED }); const props: IotToSqsProps = { diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-kms-key-props.expected.json b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-kms-key-props.expected.json index 66e1faeb7..cf0639385 100644 --- a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-kms-key-props.expected.json +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-kms-key-props.expected.json @@ -186,7 +186,7 @@ ], "Version": "2012-10-17" }, - "EnableKeyRotation": false + "EnableKeyRotation": true }, "UpdateReplacePolicy": "Retain", "DeletionPolicy": "Retain" diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-kms-key-props.ts b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-kms-key-props.ts index 9408e8cd0..a4abc382d 100644 --- a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-kms-key-props.ts +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-kms-key-props.ts @@ -25,7 +25,7 @@ stack.templateOptions.description = 'Integration Test for aws-iot-sqs'; // Definitions const props: IotToSqsProps = { encryptionKeyProps: { - enableKeyRotation: false, + enableKeyRotation: true, alias: 'new-key-alias-from-props' }, iotTopicRuleProps: { diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.with-existing-key.expected.json b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.with-existing-key.expected.json index e34b2504b..174e8445d 100644 --- a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.with-existing-key.expected.json +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.with-existing-key.expected.json @@ -109,7 +109,7 @@ ], "Version": "2012-10-17" }, - "EnableKeyRotation": false + "EnableKeyRotation": true }, "UpdateReplacePolicy": "Retain", "DeletionPolicy": "Retain" diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.with-existing-key.ts b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.with-existing-key.ts index c69847495..77d480187 100644 --- a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.with-existing-key.ts +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.with-existing-key.ts @@ -25,7 +25,7 @@ stack.templateOptions.description = 'Integration Test for aws-iot-sqs'; // Definitions const kmsKey = new kms.Key(stack, 'existing-key', { - enableKeyRotation: false, + enableKeyRotation: true, alias: 'existing-key-alias' }); From e782f4ac12ae8167ed1217bd0b1de0c7643ffc25 Mon Sep 17 00:00:00 2001 From: Quinones Date: Tue, 3 Aug 2021 13:27:48 -0400 Subject: [PATCH 6/7] Refreshing unit and integration test snapshots after merging from main --- .../test/__snapshots__/iot-sqs.test.js.snap | 52 ++++++++++++++----- ...teg.custom-max-receive-count.expected.json | 8 ++- .../integ.dead-letter-queue-off.expected.json | 4 +- .../integ.default-arguments.expected.json | 8 ++- .../integ.use-kms-key-props.expected.json | 8 ++- .../test/integ.use-queue-props.expected.json | 8 ++- .../integ.with-existing-key.expected.json | 8 ++- ...integ.without-create-kms-key.expected.json | 8 ++- 8 files changed, 78 insertions(+), 26 deletions(-) diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/__snapshots__/iot-sqs.test.js.snap b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/__snapshots__/iot-sqs.test.js.snap index a6e7522d5..976b863c2 100644 --- a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/__snapshots__/iot-sqs.test.js.snap +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/__snapshots__/iot-sqs.test.js.snap @@ -184,7 +184,9 @@ Object { }, }, "Effect": "Deny", - "Principal": "*", + "Principal": Object { + "AWS": "*", + }, "Resource": Object { "Fn::GetAtt": Array [ "testiotsqsdeadLetterQueue66A04E81", @@ -351,7 +353,9 @@ Object { }, }, "Effect": "Deny", - "Principal": "*", + "Principal": Object { + "AWS": "*", + }, "Resource": Object { "Fn::GetAtt": Array [ "testiotsqsqueue630B4C1F", @@ -548,7 +552,9 @@ Object { }, }, "Effect": "Deny", - "Principal": "*", + "Principal": Object { + "AWS": "*", + }, "Resource": Object { "Fn::GetAtt": Array [ "testiotsqsdeadLetterQueue66A04E81", @@ -716,7 +722,9 @@ Object { }, }, "Effect": "Deny", - "Principal": "*", + "Principal": Object { + "AWS": "*", + }, "Resource": Object { "Fn::GetAtt": Array [ "testiotsqsqueue630B4C1F", @@ -994,7 +1002,9 @@ Object { }, }, "Effect": "Deny", - "Principal": "*", + "Principal": Object { + "AWS": "*", + }, "Resource": Object { "Fn::GetAtt": Array [ "testiotsqsqueue630B4C1F", @@ -1190,7 +1200,9 @@ Object { }, }, "Effect": "Deny", - "Principal": "*", + "Principal": Object { + "AWS": "*", + }, "Resource": Object { "Fn::GetAtt": Array [ "testiotsqsdeadLetterQueue66A04E81", @@ -1357,7 +1369,9 @@ Object { }, }, "Effect": "Deny", - "Principal": "*", + "Principal": Object { + "AWS": "*", + }, "Resource": Object { "Fn::GetAtt": Array [ "testiotsqsqueue630B4C1F", @@ -1565,7 +1579,9 @@ Object { }, }, "Effect": "Deny", - "Principal": "*", + "Principal": Object { + "AWS": "*", + }, "Resource": Object { "Fn::GetAtt": Array [ "testiotsqsdeadLetterQueue66A04E81", @@ -1732,7 +1748,9 @@ Object { }, }, "Effect": "Deny", - "Principal": "*", + "Principal": Object { + "AWS": "*", + }, "Resource": Object { "Fn::GetAtt": Array [ "testiotsqsqueue630B4C1F", @@ -2016,7 +2034,9 @@ Object { }, }, "Effect": "Deny", - "Principal": "*", + "Principal": Object { + "AWS": "*", + }, "Resource": Object { "Fn::GetAtt": Array [ "testiotsqsdeadLetterQueue66A04E81", @@ -2184,7 +2204,9 @@ Object { }, }, "Effect": "Deny", - "Principal": "*", + "Principal": Object { + "AWS": "*", + }, "Resource": Object { "Fn::GetAtt": Array [ "testiotsqsqueue630B4C1F", @@ -2293,7 +2315,9 @@ Object { }, }, "Effect": "Deny", - "Principal": "*", + "Principal": Object { + "AWS": "*", + }, "Resource": Object { "Fn::GetAtt": Array [ "testiotsqsdeadLetterQueue66A04E81", @@ -2426,7 +2450,9 @@ Object { }, }, "Effect": "Deny", - "Principal": "*", + "Principal": Object { + "AWS": "*", + }, "Resource": Object { "Fn::GetAtt": Array [ "testiotsqsqueue630B4C1F", diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.custom-max-receive-count.expected.json b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.custom-max-receive-count.expected.json index 7ae4e6714..e8fc495b6 100644 --- a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.custom-max-receive-count.expected.json +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.custom-max-receive-count.expected.json @@ -60,7 +60,9 @@ } }, "Effect": "Deny", - "Principal": "*", + "Principal": { + "AWS": "*" + }, "Resource": { "Fn::GetAtt": [ "testiotsqsstackdeadLetterQueueA417EB97", @@ -265,7 +267,9 @@ } }, "Effect": "Deny", - "Principal": "*", + "Principal": { + "AWS": "*" + }, "Resource": { "Fn::GetAtt": [ "testiotsqsstackqueue3DEA94EF", diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.dead-letter-queue-off.expected.json b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.dead-letter-queue-off.expected.json index 7202050ad..8fab10a29 100644 --- a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.dead-letter-queue-off.expected.json +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.dead-letter-queue-off.expected.json @@ -178,7 +178,9 @@ } }, "Effect": "Deny", - "Principal": "*", + "Principal": { + "AWS": "*" + }, "Resource": { "Fn::GetAtt": [ "testiotsqsstackqueue3DEA94EF", diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.default-arguments.expected.json b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.default-arguments.expected.json index 845a52069..528c234c8 100644 --- a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.default-arguments.expected.json +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.default-arguments.expected.json @@ -59,7 +59,9 @@ } }, "Effect": "Deny", - "Principal": "*", + "Principal": { + "AWS": "*" + }, "Resource": { "Fn::GetAtt": [ "testiotsqsstackdeadLetterQueueA417EB97", @@ -263,7 +265,9 @@ } }, "Effect": "Deny", - "Principal": "*", + "Principal": { + "AWS": "*" + }, "Resource": { "Fn::GetAtt": [ "testiotsqsstackqueue3DEA94EF", diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-kms-key-props.expected.json b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-kms-key-props.expected.json index cf0639385..887def5b3 100644 --- a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-kms-key-props.expected.json +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-kms-key-props.expected.json @@ -59,7 +59,9 @@ } }, "Effect": "Deny", - "Principal": "*", + "Principal": { + "AWS": "*" + }, "Resource": { "Fn::GetAtt": [ "testiotsqsstackdeadLetterQueueA417EB97", @@ -275,7 +277,9 @@ } }, "Effect": "Deny", - "Principal": "*", + "Principal": { + "AWS": "*" + }, "Resource": { "Fn::GetAtt": [ "testiotsqsstackqueue3DEA94EF", diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-queue-props.expected.json b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-queue-props.expected.json index 69e5eaefa..ea157757e 100644 --- a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-queue-props.expected.json +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.use-queue-props.expected.json @@ -60,7 +60,9 @@ } }, "Effect": "Deny", - "Principal": "*", + "Principal": { + "AWS": "*" + }, "Resource": { "Fn::GetAtt": [ "testiotsqsstackdeadLetterQueueA417EB97", @@ -265,7 +267,9 @@ } }, "Effect": "Deny", - "Principal": "*", + "Principal": { + "AWS": "*" + }, "Resource": { "Fn::GetAtt": [ "testiotsqsstackqueue3DEA94EF", diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.with-existing-key.expected.json b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.with-existing-key.expected.json index 174e8445d..42412b4b9 100644 --- a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.with-existing-key.expected.json +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.with-existing-key.expected.json @@ -184,7 +184,9 @@ } }, "Effect": "Deny", - "Principal": "*", + "Principal": { + "AWS": "*" + }, "Resource": { "Fn::GetAtt": [ "testiotsqsstackdeadLetterQueueA417EB97", @@ -275,7 +277,9 @@ } }, "Effect": "Deny", - "Principal": "*", + "Principal": { + "AWS": "*" + }, "Resource": { "Fn::GetAtt": [ "testiotsqsstackqueue3DEA94EF", diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.without-create-kms-key.expected.json b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.without-create-kms-key.expected.json index a090fe2c6..44d278364 100644 --- a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.without-create-kms-key.expected.json +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/test/integ.without-create-kms-key.expected.json @@ -59,7 +59,9 @@ } }, "Effect": "Deny", - "Principal": "*", + "Principal": { + "AWS": "*" + }, "Resource": { "Fn::GetAtt": [ "testiotsqsstackdeadLetterQueueA417EB97", @@ -145,7 +147,9 @@ } }, "Effect": "Deny", - "Principal": "*", + "Principal": { + "AWS": "*" + }, "Resource": { "Fn::GetAtt": [ "testiotsqsstackqueue3DEA94EF", From 3d0fde1040ae40036e11bacf3c3da0422dfd9c48 Mon Sep 17 00:00:00 2001 From: Quinones Date: Tue, 3 Aug 2021 22:34:23 -0400 Subject: [PATCH 7/7] PR feedback updates: * Removed references to lambda from .gitignore and .eslintignore * Use service namespaces instead of named imports * Updated architecture diagram --- .../aws-iot-sqs/.eslintignore | 3 +- .../aws-iot-sqs/.gitignore | 1 - .../aws-iot-sqs/architecture.png | Bin 109274 -> 299746 bytes .../aws-iot-sqs/lib/index.ts | 56 +++++++++--------- 4 files changed, 28 insertions(+), 32 deletions(-) diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/.eslintignore b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/.eslintignore index 0819e2e65..910cb0513 100644 --- a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/.eslintignore +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/.eslintignore @@ -1,5 +1,4 @@ lib/*.js test/*.js *.d.ts -coverage -test/lambda/index.js \ No newline at end of file +coverage \ No newline at end of file diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/.gitignore b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/.gitignore index 8626f2274..6773cabd2 100644 --- a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/.gitignore +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/.gitignore @@ -1,6 +1,5 @@ lib/*.js test/*.js -!test/lambda/* *.js.map *.d.ts node_modules diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/architecture.png b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/architecture.png index cd752a86a8ba8f2a2a5687829816f3900f04f050..11e9fcac2314e5dfd40095a8379bcc1e2e2133a5 100644 GIT binary patch literal 299746 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 m8QhtgjhqHgDuL!W(~{5z)9kq!K!hGm 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

Y{hN1TG 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
  • PX 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

    p!f*TV%p?L3Y3zx1O@ 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 literal 109274 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 P1-x8cC?A(P`JVn4mtED7 diff --git a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/lib/index.ts b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/lib/index.ts index 12cec4957..343bcf2cf 100644 --- a/source/patterns/@aws-solutions-constructs/aws-iot-sqs/lib/index.ts +++ b/source/patterns/@aws-solutions-constructs/aws-iot-sqs/lib/index.ts @@ -11,13 +11,12 @@ * and limitations under the License. */ -import { Queue, QueueProps, DeadLetterQueue } from '@aws-cdk/aws-sqs'; -import { CfnTopicRule, CfnTopicRuleProps } from '@aws-cdk/aws-iot'; -import { IKey, Key, KeyProps } from '@aws-cdk/aws-kms'; -import { Role, ServicePrincipal } from '@aws-cdk/aws-iam'; -import { Construct } from '@aws-cdk/core'; -import { CheckProps, overrideProps } from '@aws-solutions-constructs/core'; -import { buildDeadLetterQueue, buildQueue, DefaultCfnTopicRuleProps } from '@aws-solutions-constructs/core'; +import * as cdk from '@aws-cdk/core'; +import * as sqs from '@aws-cdk/aws-sqs'; +import * as iot from '@aws-cdk/aws-iot'; +import * as kms from '@aws-cdk/aws-kms'; +import * as iam from '@aws-cdk/aws-iam'; +import * as defaults from '@aws-solutions-constructs/core'; /** * @summary The properties for the IotToSqs class. @@ -28,21 +27,21 @@ export interface IotToSqsProps { * * @default - None */ - readonly existingQueueObj?: Queue; + readonly existingQueueObj?: sqs.Queue; /** * User provided props to override the default props for the SQS queue. * * @default - Default props are used */ - readonly queueProps?: QueueProps; + readonly queueProps?: sqs.QueueProps; /** * Optional user provided properties for the dead letter queue * * @default - Default props are used */ - readonly deadLetterQueueProps?: QueueProps; + readonly deadLetterQueueProps?: sqs.QueueProps; /** * Whether to deploy a secondary queue to be used as a dead letter queue. @@ -71,44 +70,43 @@ export interface IotToSqsProps { * * @default - not specified. */ - readonly encryptionKey?: Key; + readonly encryptionKey?: kms.Key; /** * Optional user-provided props to override the default props for the encryption key. * * @default - Default props are used. */ - readonly encryptionKeyProps?: KeyProps; + readonly encryptionKeyProps?: kms.KeyProps; /** * User provided CfnTopicRuleProps to override the defaults * * @default - None */ - readonly iotTopicRuleProps: CfnTopicRuleProps; + readonly iotTopicRuleProps: iot.CfnTopicRuleProps; } -export class IotToSqs extends Construct { - public readonly sqsQueue: Queue; - public readonly deadLetterQueue?: DeadLetterQueue; - public readonly encryptionKey?: IKey; - public readonly iotActionsRole: Role; - public readonly iotTopicRule: CfnTopicRule; +export class IotToSqs extends cdk.Construct { + public readonly sqsQueue: sqs.Queue; + public readonly deadLetterQueue?: sqs.DeadLetterQueue; + public readonly encryptionKey?: kms.IKey; + public readonly iotActionsRole: iam.Role; + public readonly iotTopicRule: iot.CfnTopicRule; /** * @summary Constructs a new instance of the IotToSqs class. * @param {cdk.App} scope - represents the scope for all the resources. * @param {string} id - this is a a scope-unique id. * @param {IotToSqsProps} props - user provided props for the construct - * @since 1.110.1 * @access public */ - constructor(scope: Construct, id: string, props: IotToSqsProps) { + constructor(scope: cdk.Construct, id: string, props: IotToSqsProps) { super(scope, id); - CheckProps(props); + defaults.CheckProps(props); // Setup the dead letter queue, if applicable - this.deadLetterQueue = buildDeadLetterQueue(this, { + this.deadLetterQueue = defaults.buildDeadLetterQueue(this, { existingQueueObj: props.existingQueueObj, deployDeadLetterQueue: props.deployDeadLetterQueue, deadLetterQueueProps: props.deadLetterQueueProps, @@ -122,7 +120,7 @@ export class IotToSqs extends Construct { } // Setup the queue - [this.sqsQueue, this.encryptionKey] = buildQueue(this, 'queue', { + [this.sqsQueue, this.encryptionKey] = defaults.buildQueue(this, 'queue', { existingQueueObj: props.existingQueueObj, queueProps: props.queueProps, deadLetterQueue: this.deadLetterQueue, @@ -136,8 +134,8 @@ export class IotToSqs extends Construct { } // Role to allow IoT to send messages to the SQS Queue - this.iotActionsRole = new Role(this, 'iot-actions-role', { - assumedBy: new ServicePrincipal('iot.amazonaws.com') + this.iotActionsRole = new iam.Role(this, 'iot-actions-role', { + assumedBy: new iam.ServicePrincipal('iot.amazonaws.com') }); this.sqsQueue.grantSendMessages(this.iotActionsRole); @@ -145,15 +143,15 @@ export class IotToSqs extends Construct { this.encryptionKey.grantEncrypt(this.iotActionsRole); } - const defaultIotTopicProps = DefaultCfnTopicRuleProps([{ + const defaultIotTopicProps = defaults.DefaultCfnTopicRuleProps([{ sqs: { queueUrl: this.sqsQueue.queueUrl, roleArn: this.iotActionsRole.roleArn } }]); - const iotTopicProps = overrideProps(defaultIotTopicProps, props.iotTopicRuleProps, true); + const iotTopicProps = defaults.overrideProps(defaultIotTopicProps, props.iotTopicRuleProps, true); // Create the IoT topic rule - this.iotTopicRule = new CfnTopicRule(this, 'IotTopicRule', iotTopicProps); + this.iotTopicRule = new iot.CfnTopicRule(this, 'IotTopicRule', iotTopicProps); } }