From d3672674b598266b5521d7af2a1e77822fc4a74e Mon Sep 17 00:00:00 2001 From: Nicola Racco Date: Wed, 31 Jul 2024 19:29:41 +0200 Subject: [PATCH 1/5] docs: remove headings from method doc (#30965) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Issue # (if applicable) The documentation for [Stack#exportValue](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.Stack.html#exportwbrvalueexportedvalue-options) contains an “Example” section formatted as an H2 with two H3 sub-sections, whereas the method signature uses an H3. When generating documentation for CDK libraries inheriting from Stack, and jsii duplicates this “Example” section for each stack in the application in the API.md, this formatting issue causes a disruption in the heading hierarchy. This is particularly problematic on constructs.dev, where H3 headings are listed in the sidebar. Examples can be seen at: - https://constructs.dev/packages/@condensetech/cdk-constructs/v/0.1.2?lang=typescript - https://constructs.dev/packages/@cloudcomponents/cdk-temp-stack/v/2.4.0?lang=typescript - https://constructs.dev/packages/@gammarers/aws-lambda-function-invoke-error-notification-stack/v/1.0.49?lang=typescript ### Reason for this change By removing any heading from the method doc, there's no risk of altering the generated markdown hierarchy ### Description of changes I've removed the headings from the method documentation ### Description of how you validated changes N/A ### Checklist - [x] My code adheres to the [CONTRIBUTING GUIDE](https://github.com/aws/aws-cdk/blob/main/CONTRIBUTING.md) and [DESIGN GUIDELINES](https://github.com/aws/aws-cdk/blob/main/docs/DESIGN_GUIDELINES.md) ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- packages/aws-cdk-lib/core/lib/stack.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/aws-cdk-lib/core/lib/stack.ts b/packages/aws-cdk-lib/core/lib/stack.ts index b946d73974973..ce3cb9c9b9fd8 100644 --- a/packages/aws-cdk-lib/core/lib/stack.ts +++ b/packages/aws-cdk-lib/core/lib/stack.ts @@ -1171,8 +1171,6 @@ export class Stack extends Construct implements ITaggable { * remove the reference from the consuming stack. After that, you can remove * the resource and the manual export. * - * ## Example - * * Here is how the process works. Let's say there are two stacks, * `producerStack` and `consumerStack`, and `producerStack` has a bucket * called `bucket`, which is referenced by `consumerStack` (perhaps because @@ -1183,7 +1181,7 @@ export class Stack extends Construct implements ITaggable { * * Instead, the process takes two deployments: * - * ### Deployment 1: break the relationship + * **Deployment 1: break the relationship**: * * - Make sure `consumerStack` no longer references `bucket.bucketName` (maybe the consumer * stack now uses its own bucket, or it writes to an AWS DynamoDB table, or maybe you just @@ -1193,7 +1191,7 @@ export class Stack extends Construct implements ITaggable { * between the two stacks is being broken. * - Deploy (this will effectively only change the `consumerStack`, but it's safe to deploy both). * - * ### Deployment 2: remove the bucket resource + * **Deployment 2: remove the bucket resource**: * * - You are now free to remove the `bucket` resource from `producerStack`. * - Don't forget to remove the `exportValue()` call as well. From ad3a25d539dd98e16385413fcbb415230e3706ce Mon Sep 17 00:00:00 2001 From: Melle van der Linde <118454433+mellevanderlinde@users.noreply.github.com> Date: Wed, 31 Jul 2024 20:00:29 +0200 Subject: [PATCH 2/5] chore(apprunner-alpha): add runtimes PYTHON_311 and NODEJS_18 (#30149) ### Issue # (if applicable) Closes #30146. ### Reason for this change Runtimes Python 3.11 and NodeJS 18 were missing. ### Description of changes Runtimes Python 3.11 and NodeJS 18 were added. ### Description of how you validated changes No tests were added, as it seems not required for this type of change. ### Checklist - [*] My code adheres to the [CONTRIBUTING GUIDE](https://github.com/aws/aws-cdk/blob/main/CONTRIBUTING.md) and [DESIGN GUIDELINES](https://github.com/aws/aws-cdk/blob/main/docs/DESIGN_GUIDELINES.md) ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- packages/@aws-cdk/aws-apprunner-alpha/lib/service.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/@aws-cdk/aws-apprunner-alpha/lib/service.ts b/packages/@aws-cdk/aws-apprunner-alpha/lib/service.ts index d70d0730034c8..80040c76ad560 100644 --- a/packages/@aws-cdk/aws-apprunner-alpha/lib/service.ts +++ b/packages/@aws-cdk/aws-apprunner-alpha/lib/service.ts @@ -202,6 +202,11 @@ export class Runtime { */ public static readonly NODEJS_16 = Runtime.of('NODEJS_16') + /** + * NodeJS 18 + */ + public static readonly NODEJS_18 = Runtime.of('NODEJS_18') + /** * PHP 8.1 */ @@ -212,6 +217,11 @@ export class Runtime { */ public static readonly PYTHON_3 = Runtime.of('PYTHON_3') + /** + * Python 3.11 + */ + public static readonly PYTHON_311 = Runtime.of('PYTHON_311') + /** * Ruby 3.1 */ From c185194e2bc5bb538672df51482e1bfb134698b5 Mon Sep 17 00:00:00 2001 From: Clement Allen Date: Wed, 31 Jul 2024 19:31:26 +0100 Subject: [PATCH 3/5] feat(kinesisanalytics-flink): add support for Flink 1.19 (#30723) ### Reason for this change Amazon Kinesis Data Analytics now supports Apache Flink v1.18 ([LINK](https://aws.amazon.com/about-aws/whats-new/2024/06/amazon-managed-service-apache-flink-1-19/)) This is also supported in Cloudformation ([LINK](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalyticsv2-application.html#aws-resource-kinesisanalyticsv2-application-properties)) ### Description of changes - Added Flink 1.19 to `Runtime` type - Updated Readme to reference Flink 1.19 ### Checklist - [x] My code adheres to the [CONTRIBUTING GUIDE](https://github.com/aws/aws-cdk/blob/main/CONTRIBUTING.md) and [DESIGN GUIDELINES](https://github.com/aws/aws-cdk/blob/main/docs/DESIGN_GUIDELINES.md) ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- .../@aws-cdk/aws-kinesisanalytics-flink-alpha/README.md | 8 ++++---- .../aws-kinesisanalytics-flink-alpha/lib/types.ts | 3 +++ .../test/application.test.ts | 6 +++--- .../FlinkAppCodeFromBucketTest.assets.json | 4 ++-- .../FlinkAppCodeFromBucketTest.template.json | 2 +- .../manifest.json | 2 +- .../tree.json | 2 +- .../test/integ.application-code-from-bucket.lit.ts | 2 +- .../FlinkAppTest.assets.json | 4 ++-- .../FlinkAppTest.template.json | 2 +- .../test/integ.application.lit.js.snapshot/manifest.json | 2 +- .../test/integ.application.lit.js.snapshot/tree.json | 2 +- .../test/integ.application.lit.ts | 2 +- .../FlinkAppTest.assets.json | 4 ++-- .../FlinkAppTest.template.json | 2 +- .../test/integ.vpc-application.js.snapshot/manifest.json | 2 +- .../test/integ.vpc-application.js.snapshot/tree.json | 2 +- .../test/integ.vpc-application.ts | 2 +- 18 files changed, 28 insertions(+), 25 deletions(-) diff --git a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/README.md b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/README.md index 72d5f5cefae4d..4dccb1716255f 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/README.md +++ b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/README.md @@ -1,4 +1,4 @@ -# Kinesis Analytics Flink +# Kinesis Analytics Flink --- @@ -46,7 +46,7 @@ const flinkApp = new flink.Application(this, 'Application', { }, }, // ... - runtime: flink.Runtime.FLINK_1_18, + runtime: flink.Runtime.FLINK_1_19, code: flink.ApplicationCode.fromBucket(bucket, 'my-app.jar'), }); ``` @@ -59,7 +59,7 @@ snapshotting, monitoring, and parallelism. declare const bucket: s3.Bucket; const flinkApp = new flink.Application(this, 'Application', { code: flink.ApplicationCode.fromBucket(bucket, 'my-app.jar'), - runtime: flink.Runtime.FLINK_1_18, + runtime: flink.Runtime.FLINK_1_19, checkpointingEnabled: true, // default is true checkpointInterval: Duration.seconds(30), // default is 1 minute minPauseBetweenCheckpoints: Duration.seconds(10), // default is 5 seconds @@ -80,7 +80,7 @@ declare const bucket: s3.Bucket; declare const vpc: ec2.Vpc; const flinkApp = new flink.Application(this, 'Application', { code: flink.ApplicationCode.fromBucket(bucket, 'my-app.jar'), - runtime: flink.Runtime.FLINK_1_18, + runtime: flink.Runtime.FLINK_1_19, vpc, }); ``` diff --git a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/lib/types.ts b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/lib/types.ts index 9dbca48bcdeaa..6e4dad7da8ea9 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/lib/types.ts +++ b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/lib/types.ts @@ -69,6 +69,9 @@ export class Runtime { /** Flink Version 1.18 */ public static readonly FLINK_1_18 = Runtime.of('FLINK-1_18'); + /** Flink Version 1.19 */ + public static readonly FLINK_1_19 = Runtime.of('FLINK-1_19'); + /** Create a new Runtime with with an arbitrary Flink version string */ public static of(value: string) { return new Runtime(value); diff --git a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/application.test.ts b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/application.test.ts index 996a018649db7..e9323c26d3fef 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/application.test.ts +++ b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/application.test.ts @@ -21,21 +21,21 @@ describe('Application', () => { stack = new core.Stack(); bucket = new s3.Bucket(stack, 'CodeBucket'); requiredProps = { - runtime: flink.Runtime.FLINK_1_11, + runtime: flink.Runtime.FLINK_1_19, code: flink.ApplicationCode.fromBucket(bucket, 'my-app.jar'), }; }); test('default Flink Application', () => { new flink.Application(stack, 'FlinkApplication', { - runtime: flink.Runtime.FLINK_1_11, + runtime: flink.Runtime.FLINK_1_19, code: flink.ApplicationCode.fromBucket(bucket, 'my-app.jar'), applicationName: 'MyFlinkApplication', }); Template.fromStack(stack).hasResourceProperties('AWS::KinesisAnalyticsV2::Application', { ApplicationName: 'MyFlinkApplication', - RuntimeEnvironment: 'FLINK-1_11', + RuntimeEnvironment: 'FLINK-1_19', ServiceExecutionRole: { 'Fn::GetAtt': [ 'FlinkApplicationRole2F7BCBF6', diff --git a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application-code-from-bucket.lit.js.snapshot/FlinkAppCodeFromBucketTest.assets.json b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application-code-from-bucket.lit.js.snapshot/FlinkAppCodeFromBucketTest.assets.json index 512342f1e3cfc..e0607d544076b 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application-code-from-bucket.lit.js.snapshot/FlinkAppCodeFromBucketTest.assets.json +++ b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application-code-from-bucket.lit.js.snapshot/FlinkAppCodeFromBucketTest.assets.json @@ -14,7 +14,7 @@ } } }, - "1bb9d6dca32d920930c65ef51caf5b52af031dde0168b5e26ba8384c5a3d0eba": { + "44fd92b7a5ccc7121c21de7cd5b1b4d06367ff64dd6b6e4c7471fdb07e352470": { "source": { "path": "FlinkAppCodeFromBucketTest.template.json", "packaging": "file" @@ -22,7 +22,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "1bb9d6dca32d920930c65ef51caf5b52af031dde0168b5e26ba8384c5a3d0eba.json", + "objectKey": "44fd92b7a5ccc7121c21de7cd5b1b4d06367ff64dd6b6e4c7471fdb07e352470.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application-code-from-bucket.lit.js.snapshot/FlinkAppCodeFromBucketTest.template.json b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application-code-from-bucket.lit.js.snapshot/FlinkAppCodeFromBucketTest.template.json index 7468c5f86bde2..6b8047bec78fa 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application-code-from-bucket.lit.js.snapshot/FlinkAppCodeFromBucketTest.template.json +++ b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application-code-from-bucket.lit.js.snapshot/FlinkAppCodeFromBucketTest.template.json @@ -175,7 +175,7 @@ "SnapshotsEnabled": true } }, - "RuntimeEnvironment": "FLINK-1_18", + "RuntimeEnvironment": "FLINK-1_19", "ServiceExecutionRole": { "Fn::GetAtt": [ "AppRole1AF9B530", diff --git a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application-code-from-bucket.lit.js.snapshot/manifest.json b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application-code-from-bucket.lit.js.snapshot/manifest.json index b2e8fdbe2bedb..7e2a71cacbae7 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application-code-from-bucket.lit.js.snapshot/manifest.json +++ b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application-code-from-bucket.lit.js.snapshot/manifest.json @@ -18,7 +18,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/1bb9d6dca32d920930c65ef51caf5b52af031dde0168b5e26ba8384c5a3d0eba.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/44fd92b7a5ccc7121c21de7cd5b1b4d06367ff64dd6b6e4c7471fdb07e352470.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application-code-from-bucket.lit.js.snapshot/tree.json b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application-code-from-bucket.lit.js.snapshot/tree.json index 380a8cfac2686..7451a25459e91 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application-code-from-bucket.lit.js.snapshot/tree.json +++ b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application-code-from-bucket.lit.js.snapshot/tree.json @@ -260,7 +260,7 @@ "snapshotsEnabled": true } }, - "runtimeEnvironment": "FLINK-1_18", + "runtimeEnvironment": "FLINK-1_19", "serviceExecutionRole": { "Fn::GetAtt": [ "AppRole1AF9B530", diff --git a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application-code-from-bucket.lit.ts b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application-code-from-bucket.lit.ts index 56fd6661b1aeb..3e351e48062a2 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application-code-from-bucket.lit.ts +++ b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application-code-from-bucket.lit.ts @@ -15,7 +15,7 @@ const fileKey = asset.s3ObjectKey; ///! show new flink.Application(stack, 'App', { code: flink.ApplicationCode.fromBucket(bucket, fileKey), - runtime: flink.Runtime.FLINK_1_18, + runtime: flink.Runtime.FLINK_1_19, }); ///! hide diff --git a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application.lit.js.snapshot/FlinkAppTest.assets.json b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application.lit.js.snapshot/FlinkAppTest.assets.json index 03b680411ffa8..dce3d0ca52cd9 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application.lit.js.snapshot/FlinkAppTest.assets.json +++ b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application.lit.js.snapshot/FlinkAppTest.assets.json @@ -14,7 +14,7 @@ } } }, - "48dd04d48b618ae68b67e5b8cf8896c84fb9c39997deb11669ac2a4a5205a3db": { + "1c62c36f9601016c7fec8f26431c7c7438490b95747135095f9af7ecd84ddb1d": { "source": { "path": "FlinkAppTest.template.json", "packaging": "file" @@ -22,7 +22,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "48dd04d48b618ae68b67e5b8cf8896c84fb9c39997deb11669ac2a4a5205a3db.json", + "objectKey": "1c62c36f9601016c7fec8f26431c7c7438490b95747135095f9af7ecd84ddb1d.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application.lit.js.snapshot/FlinkAppTest.template.json b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application.lit.js.snapshot/FlinkAppTest.template.json index 641754e087da3..e818a2566e993 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application.lit.js.snapshot/FlinkAppTest.template.json +++ b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application.lit.js.snapshot/FlinkAppTest.template.json @@ -175,7 +175,7 @@ "SnapshotsEnabled": true } }, - "RuntimeEnvironment": "FLINK-1_18", + "RuntimeEnvironment": "FLINK-1_19", "ServiceExecutionRole": { "Fn::GetAtt": [ "AppRole1AF9B530", diff --git a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application.lit.js.snapshot/manifest.json b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application.lit.js.snapshot/manifest.json index fec94be2b694b..0109af83fd75c 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application.lit.js.snapshot/manifest.json +++ b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application.lit.js.snapshot/manifest.json @@ -18,7 +18,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/48dd04d48b618ae68b67e5b8cf8896c84fb9c39997deb11669ac2a4a5205a3db.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/1c62c36f9601016c7fec8f26431c7c7438490b95747135095f9af7ecd84ddb1d.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application.lit.js.snapshot/tree.json b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application.lit.js.snapshot/tree.json index dbea05c652f46..a5810d986631b 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application.lit.js.snapshot/tree.json +++ b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application.lit.js.snapshot/tree.json @@ -260,7 +260,7 @@ "snapshotsEnabled": true } }, - "runtimeEnvironment": "FLINK-1_18", + "runtimeEnvironment": "FLINK-1_19", "serviceExecutionRole": { "Fn::GetAtt": [ "AppRole1AF9B530", diff --git a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application.lit.ts b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application.lit.ts index 4503fb68b607d..392d8290c1a1b 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application.lit.ts +++ b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.application.lit.ts @@ -9,7 +9,7 @@ const stack = new core.Stack(app, 'FlinkAppTest'); const flinkApp = new flink.Application(stack, 'App', { code: flink.ApplicationCode.fromAsset(path.join(__dirname, 'code-asset')), - runtime: flink.Runtime.FLINK_1_18, + runtime: flink.Runtime.FLINK_1_19, }); new cloudwatch.Alarm(stack, 'Alarm', { diff --git a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.vpc-application.js.snapshot/FlinkAppTest.assets.json b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.vpc-application.js.snapshot/FlinkAppTest.assets.json index 40297376933cc..0c67c6ec545e3 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.vpc-application.js.snapshot/FlinkAppTest.assets.json +++ b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.vpc-application.js.snapshot/FlinkAppTest.assets.json @@ -14,7 +14,7 @@ } } }, - "fe970e1e860316af219eaa6f9d8b7a5281e9d62e630b8cdeb13c470780eb8edb": { + "116dffd1e9c0ae39910a7ab73510d002f510b36a58698a15374ed21483f86792": { "source": { "path": "FlinkAppTest.template.json", "packaging": "file" @@ -22,7 +22,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "fe970e1e860316af219eaa6f9d8b7a5281e9d62e630b8cdeb13c470780eb8edb.json", + "objectKey": "116dffd1e9c0ae39910a7ab73510d002f510b36a58698a15374ed21483f86792.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.vpc-application.js.snapshot/FlinkAppTest.template.json b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.vpc-application.js.snapshot/FlinkAppTest.template.json index 761924982d37b..1fa3b9d549299 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.vpc-application.js.snapshot/FlinkAppTest.template.json +++ b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.vpc-application.js.snapshot/FlinkAppTest.template.json @@ -612,7 +612,7 @@ } ] }, - "RuntimeEnvironment": "FLINK-1_18", + "RuntimeEnvironment": "FLINK-1_19", "ServiceExecutionRole": { "Fn::GetAtt": [ "AppRole1AF9B530", diff --git a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.vpc-application.js.snapshot/manifest.json b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.vpc-application.js.snapshot/manifest.json index 2007d0265edd2..f69aef7c2da3c 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.vpc-application.js.snapshot/manifest.json +++ b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.vpc-application.js.snapshot/manifest.json @@ -18,7 +18,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/fe970e1e860316af219eaa6f9d8b7a5281e9d62e630b8cdeb13c470780eb8edb.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/116dffd1e9c0ae39910a7ab73510d002f510b36a58698a15374ed21483f86792.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.vpc-application.js.snapshot/tree.json b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.vpc-application.js.snapshot/tree.json index b5c9ccfc97f1a..7aa0235f83a65 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.vpc-application.js.snapshot/tree.json +++ b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.vpc-application.js.snapshot/tree.json @@ -967,7 +967,7 @@ } ] }, - "runtimeEnvironment": "FLINK-1_18", + "runtimeEnvironment": "FLINK-1_19", "serviceExecutionRole": { "Fn::GetAtt": [ "AppRole1AF9B530", diff --git a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.vpc-application.ts b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.vpc-application.ts index a2c78ba68f1db..9b3e99fca99a5 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.vpc-application.ts +++ b/packages/@aws-cdk/aws-kinesisanalytics-flink-alpha/test/integ.vpc-application.ts @@ -10,7 +10,7 @@ const vpc = new ec2.Vpc(stack, 'VPC', { restrictDefaultSecurityGroup: false }); new flink.Application(stack, 'App', { code: flink.ApplicationCode.fromAsset(path.join(__dirname, 'code-asset')), - runtime: flink.Runtime.FLINK_1_18, + runtime: flink.Runtime.FLINK_1_19, vpc, }); From 4104043f8c3ce556c4a98579991f4ef860c966b6 Mon Sep 17 00:00:00 2001 From: mazyu36 Date: Thu, 1 Aug 2024 04:02:08 +0900 Subject: [PATCH 4/5] chore(location): add validation for description property in PlaceIndex class (#30974) ### Issue # (if applicable) N/A ### Reason for this change Add validation for PlaceIndex description, similar to #30648, #30682, and #30711 . ### Description of changes Add validation and unit tests for description. ### Description of how you validated changes Add unit tests. ### Checklist - [x] My code adheres to the [CONTRIBUTING GUIDE](https://github.com/aws/aws-cdk/blob/main/CONTRIBUTING.md) and [DESIGN GUIDELINES](https://github.com/aws/aws-cdk/blob/main/docs/DESIGN_GUIDELINES.md) ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- .../aws-location-alpha/lib/place-index.ts | 7 +++++ .../test/place-index.test.ts | 28 +++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/packages/@aws-cdk/aws-location-alpha/lib/place-index.ts b/packages/@aws-cdk/aws-location-alpha/lib/place-index.ts index ae62abe343bea..144059b6469a2 100644 --- a/packages/@aws-cdk/aws-location-alpha/lib/place-index.ts +++ b/packages/@aws-cdk/aws-location-alpha/lib/place-index.ts @@ -29,6 +29,9 @@ export interface PlaceIndexProps { /** * A name for the place index * + * Must be between 1 and 100 characters and contain only alphanumeric characters, + * hyphens, periods and underscores. + * * @default - A name is automatically generated */ readonly placeIndexName?: string; @@ -175,6 +178,10 @@ export class PlaceIndex extends PlaceIndexBase { public readonly placeIndexUpdateTime: string; constructor(scope: Construct, id: string, props: PlaceIndexProps = {}) { + if (props.description && !Token.isUnresolved(props.description) && props.description.length > 1000) { + throw new Error(`\`description\` must be between 0 and 1000 characters. Received: ${props.description.length} characters`); + } + if (props.placeIndexName && !Token.isUnresolved(props.placeIndexName) && !/^[-.\w]{1,100}$/.test(props.placeIndexName)) { throw new Error(`Invalid place index name. The place index name must be between 1 and 100 characters and contain only alphanumeric characters, hyphens, periods and underscores. Received: ${props.placeIndexName}`); } diff --git a/packages/@aws-cdk/aws-location-alpha/test/place-index.test.ts b/packages/@aws-cdk/aws-location-alpha/test/place-index.test.ts index 763ff44c573f6..a600705339445 100644 --- a/packages/@aws-cdk/aws-location-alpha/test/place-index.test.ts +++ b/packages/@aws-cdk/aws-location-alpha/test/place-index.test.ts @@ -17,6 +17,34 @@ test('create a place index', () => { }); }); +test('create a place index with description', () => { + new PlaceIndex(stack, 'PlaceIndex', { + description: 'my-description', + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Location::PlaceIndex', { + DataSource: 'Esri', + IndexName: 'PlaceIndex', + Description: 'my-description', + }); +}); + +test('creates a place index with empty description', () => { + new PlaceIndex(stack, 'PlaceIndex', { + description: '', + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Location::PlaceIndex', { + Description: '', + }); +}); + +test('throws with invalid description', () => { + expect(() => new PlaceIndex(stack, 'PlaceIndex', { + description: 'a'.repeat(1001), + })).toThrow('`description` must be between 0 and 1000 characters. Received: 1001 characters'); +}); + test('throws with invalid name', () => { expect(() => new PlaceIndex(stack, 'PlaceIndex', { placeIndexName: 'inv@lid', From d56d05c78a9f7355f318cfd08e5927ef7fee8c77 Mon Sep 17 00:00:00 2001 From: watany <76135106+watany-dev@users.noreply.github.com> Date: Thu, 1 Aug 2024 04:33:07 +0900 Subject: [PATCH 5/5] fix(stepfunctions): allow disable x-ray (#30808) ### Issue # (if applicable) Closes [#30796 .](https://github.com/aws/aws-cdk/issues/30796) ### Reason for this change ### Description of changes ### Description of how you validated changes ### Checklist - [x] My code adheres to the [CONTRIBUTING GUIDE](https://github.com/aws/aws-cdk/blob/main/CONTRIBUTING.md) and [DESIGN GUIDELINES](https://github.com/aws/aws-cdk/blob/main/docs/DESIGN_GUIDELINES.md) ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- ...efaultTestDeployAssert24D3F33C.assets.json | 19 ++ ...aultTestDeployAssert24D3F33C.template.json | 36 ++++ .../aws-stepfunctions-integ.assets.json | 19 ++ .../aws-stepfunctions-integ.template.json | 75 +++++++ .../cdk.out | 1 + .../integ.json | 12 ++ .../manifest.json | 119 +++++++++++ .../tree.json | 185 ++++++++++++++++++ .../test/integ.state-machine-disable-xray.ts | 14 ++ .../aws-stepfunctions/lib/state-machine.ts | 34 ++-- .../test/state-machine.test.ts | 19 ++ 11 files changed, 519 insertions(+), 14 deletions(-) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/StateMachineDisableXrayDefaultTestDeployAssert24D3F33C.assets.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/StateMachineDisableXrayDefaultTestDeployAssert24D3F33C.template.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/aws-stepfunctions-integ.assets.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/aws-stepfunctions-integ.template.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/integ.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/tree.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.ts diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/StateMachineDisableXrayDefaultTestDeployAssert24D3F33C.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/StateMachineDisableXrayDefaultTestDeployAssert24D3F33C.assets.json new file mode 100644 index 0000000000000..2b8efe2b912dd --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/StateMachineDisableXrayDefaultTestDeployAssert24D3F33C.assets.json @@ -0,0 +1,19 @@ +{ + "version": "36.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "source": { + "path": "StateMachineDisableXrayDefaultTestDeployAssert24D3F33C.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/StateMachineDisableXrayDefaultTestDeployAssert24D3F33C.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/StateMachineDisableXrayDefaultTestDeployAssert24D3F33C.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/StateMachineDisableXrayDefaultTestDeployAssert24D3F33C.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/aws-stepfunctions-integ.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/aws-stepfunctions-integ.assets.json new file mode 100644 index 0000000000000..2068c7a0b9b72 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/aws-stepfunctions-integ.assets.json @@ -0,0 +1,19 @@ +{ + "version": "36.0.0", + "files": { + "7ba8b87b0747e6c3e548e85d4dd454f09746ed79a29633c3e0fbb869281f9406": { + "source": { + "path": "aws-stepfunctions-integ.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "7ba8b87b0747e6c3e548e85d4dd454f09746ed79a29633c3e0fbb869281f9406.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/aws-stepfunctions-integ.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/aws-stepfunctions-integ.template.json new file mode 100644 index 0000000000000..2f96776c49591 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/aws-stepfunctions-integ.template.json @@ -0,0 +1,75 @@ +{ + "Resources": { + "StateMachineRoleB840431D": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "states.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "StateMachine2E01A3A5": { + "Type": "AWS::StepFunctions::StateMachine", + "Properties": { + "DefinitionString": "{\"StartAt\":\"StartState\",\"States\":{\"StartState\":{\"Type\":\"Pass\",\"End\":true}},\"Comment\":\"a super cool state machine\"}", + "RoleArn": { + "Fn::GetAtt": [ + "StateMachineRoleB840431D", + "Arn" + ] + }, + "TracingConfiguration": { + "Enabled": false + } + }, + "DependsOn": [ + "StateMachineRoleB840431D" + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/cdk.out b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/cdk.out new file mode 100644 index 0000000000000..1f0068d32659a --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"36.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/integ.json b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/integ.json new file mode 100644 index 0000000000000..9888945e3632b --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/integ.json @@ -0,0 +1,12 @@ +{ + "version": "36.0.0", + "testCases": { + "StateMachineDisableXray/DefaultTest": { + "stacks": [ + "aws-stepfunctions-integ" + ], + "assertionStack": "StateMachineDisableXray/DefaultTest/DeployAssert", + "assertionStackName": "StateMachineDisableXrayDefaultTestDeployAssert24D3F33C" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/manifest.json new file mode 100644 index 0000000000000..0d630730497f9 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/manifest.json @@ -0,0 +1,119 @@ +{ + "version": "36.0.0", + "artifacts": { + "aws-stepfunctions-integ.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-stepfunctions-integ.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-stepfunctions-integ": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-stepfunctions-integ.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/7ba8b87b0747e6c3e548e85d4dd454f09746ed79a29633c3e0fbb869281f9406.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-stepfunctions-integ.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-stepfunctions-integ.assets" + ], + "metadata": { + "/aws-stepfunctions-integ/StateMachine/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "StateMachineRoleB840431D" + } + ], + "/aws-stepfunctions-integ/StateMachine/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "StateMachine2E01A3A5" + } + ], + "/aws-stepfunctions-integ/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-stepfunctions-integ/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-stepfunctions-integ" + }, + "StateMachineDisableXrayDefaultTestDeployAssert24D3F33C.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "StateMachineDisableXrayDefaultTestDeployAssert24D3F33C.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "StateMachineDisableXrayDefaultTestDeployAssert24D3F33C": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "StateMachineDisableXrayDefaultTestDeployAssert24D3F33C.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "StateMachineDisableXrayDefaultTestDeployAssert24D3F33C.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "StateMachineDisableXrayDefaultTestDeployAssert24D3F33C.assets" + ], + "metadata": { + "/StateMachineDisableXray/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/StateMachineDisableXray/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "StateMachineDisableXray/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/tree.json new file mode 100644 index 0000000000000..9bb1895ae1923 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.js.snapshot/tree.json @@ -0,0 +1,185 @@ +{ + "version": "tree-0.1", + "tree": { + "id": "App", + "path": "", + "children": { + "aws-stepfunctions-integ": { + "id": "aws-stepfunctions-integ", + "path": "aws-stepfunctions-integ", + "children": { + "StartState": { + "id": "StartState", + "path": "aws-stepfunctions-integ/StartState", + "constructInfo": { + "fqn": "aws-cdk-lib.aws_stepfunctions.Pass", + "version": "0.0.0" + } + }, + "StateMachine": { + "id": "StateMachine", + "path": "aws-stepfunctions-integ/StateMachine", + "children": { + "Role": { + "id": "Role", + "path": "aws-stepfunctions-integ/StateMachine/Role", + "children": { + "ImportRole": { + "id": "ImportRole", + "path": "aws-stepfunctions-integ/StateMachine/Role/ImportRole", + "constructInfo": { + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-stepfunctions-integ/StateMachine/Role/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "states.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.CfnRole", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.Role", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-stepfunctions-integ/StateMachine/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::StepFunctions::StateMachine", + "aws:cdk:cloudformation:props": { + "definitionString": "{\"StartAt\":\"StartState\",\"States\":{\"StartState\":{\"Type\":\"Pass\",\"End\":true}},\"Comment\":\"a super cool state machine\"}", + "roleArn": { + "Fn::GetAtt": [ + "StateMachineRoleB840431D", + "Arn" + ] + }, + "tracingConfiguration": { + "enabled": false + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_stepfunctions.CfnStateMachine", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_stepfunctions.StateMachine", + "version": "0.0.0" + } + }, + "BootstrapVersion": { + "id": "BootstrapVersion", + "path": "aws-stepfunctions-integ/BootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnParameter", + "version": "0.0.0" + } + }, + "CheckBootstrapVersion": { + "id": "CheckBootstrapVersion", + "path": "aws-stepfunctions-integ/CheckBootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnRule", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.Stack", + "version": "0.0.0" + } + }, + "StateMachineDisableXray": { + "id": "StateMachineDisableXray", + "path": "StateMachineDisableXray", + "children": { + "DefaultTest": { + "id": "DefaultTest", + "path": "StateMachineDisableXray/DefaultTest", + "children": { + "Default": { + "id": "Default", + "path": "StateMachineDisableXray/DefaultTest/Default", + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.3.0" + } + }, + "DeployAssert": { + "id": "DeployAssert", + "path": "StateMachineDisableXray/DefaultTest/DeployAssert", + "children": { + "BootstrapVersion": { + "id": "BootstrapVersion", + "path": "StateMachineDisableXray/DefaultTest/DeployAssert/BootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnParameter", + "version": "0.0.0" + } + }, + "CheckBootstrapVersion": { + "id": "CheckBootstrapVersion", + "path": "StateMachineDisableXray/DefaultTest/DeployAssert/CheckBootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnRule", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.Stack", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/integ-tests-alpha.IntegTestCase", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/integ-tests-alpha.IntegTest", + "version": "0.0.0" + } + }, + "Tree": { + "id": "Tree", + "path": "Tree", + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.3.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.App", + "version": "0.0.0" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.ts b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.ts new file mode 100644 index 0000000000000..4196d8ed1239d --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-stepfunctions/test/integ.state-machine-disable-xray.ts @@ -0,0 +1,14 @@ +import * as cdk from 'aws-cdk-lib'; +import { IntegTest } from '@aws-cdk/integ-tests-alpha'; +import * as sfn from 'aws-cdk-lib/aws-stepfunctions'; + +const app = new cdk.App(); +const stack = new cdk.Stack(app, 'aws-stepfunctions-integ'); + +new sfn.StateMachine(stack, 'StateMachine', { + comment: 'a super cool state machine', + definition: new sfn.Pass(stack, 'StartState'), + tracingEnabled: false, +}); + +new IntegTest(app, 'StateMachineDisableXray', { testCases: [stack] }); diff --git a/packages/aws-cdk-lib/aws-stepfunctions/lib/state-machine.ts b/packages/aws-cdk-lib/aws-stepfunctions/lib/state-machine.ts index a7636ec6c14a4..83465bf354e54 100644 --- a/packages/aws-cdk-lib/aws-stepfunctions/lib/state-machine.ts +++ b/packages/aws-cdk-lib/aws-stepfunctions/lib/state-machine.ts @@ -457,7 +457,7 @@ export class StateMachine extends StateMachineBase { stateMachineType: props.stateMachineType ?? undefined, roleArn: this.role.roleArn, loggingConfiguration: props.logs ? this.buildLoggingConfiguration(props.logs) : undefined, - tracingConfiguration: props.tracingEnabled ? this.buildTracingConfiguration() : undefined, + tracingConfiguration: this.buildTracingConfiguration(props.tracingEnabled), ...definitionBody.bind(this, this.role, props, graph), definitionSubstitutions: props.definitionSubstitutions, }); @@ -532,21 +532,27 @@ export class StateMachine extends StateMachineBase { }; } - private buildTracingConfiguration(): CfnStateMachine.TracingConfigurationProperty { - this.addToRolePolicy(new iam.PolicyStatement({ - // https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources - // https://docs.aws.amazon.com/step-functions/latest/dg/xray-iam.html - actions: [ - 'xray:PutTraceSegments', - 'xray:PutTelemetryRecords', - 'xray:GetSamplingRules', - 'xray:GetSamplingTargets', - ], - resources: ['*'], - })); + private buildTracingConfiguration(isTracing?: boolean): CfnStateMachine.TracingConfigurationProperty | undefined { + if (isTracing === undefined) { + return undefined; + } + + if (isTracing) { + this.addToRolePolicy(new iam.PolicyStatement({ + // https://docs.aws.amazon.com/xray/latest/devguide/security_iam_id-based-policy-examples.html#xray-permissions-resources + // https://docs.aws.amazon.com/step-functions/latest/dg/xray-iam.html + actions: [ + 'xray:PutTraceSegments', + 'xray:PutTelemetryRecords', + 'xray:GetSamplingRules', + 'xray:GetSamplingTargets', + ], + resources: ['*'], + })); + } return { - enabled: true, + enabled: isTracing, }; } } diff --git a/packages/aws-cdk-lib/aws-stepfunctions/test/state-machine.test.ts b/packages/aws-cdk-lib/aws-stepfunctions/test/state-machine.test.ts index c60c05105c649..2f7d0f8e46afd 100644 --- a/packages/aws-cdk-lib/aws-stepfunctions/test/state-machine.test.ts +++ b/packages/aws-cdk-lib/aws-stepfunctions/test/state-machine.test.ts @@ -348,6 +348,25 @@ describe('State Machine', () => { }); }); + test('disable tracing configuration', () => { + // GIVEN + const stack = new cdk.Stack(); + + // WHEN + new sfn.StateMachine(stack, 'MyStateMachine', { + definitionBody: sfn.DefinitionBody.fromChainable(sfn.Chain.start(new sfn.Pass(stack, 'Pass'))), + tracingEnabled: false, + }); + + // THEN + Template.fromStack(stack).hasResourceProperties('AWS::StepFunctions::StateMachine', { + DefinitionString: '{"StartAt":"Pass","States":{"Pass":{"Type":"Pass","End":true}}}', + TracingConfiguration: { + Enabled: false, + }, + }); + }); + test('grant access', () => { // GIVEN const stack = new cdk.Stack();