From 68c9367903ac6dc491efec77b6f3bf23c958c435 Mon Sep 17 00:00:00 2001 From: corymhall <43035978+corymhall@users.noreply.github.com> Date: Fri, 8 Apr 2022 12:50:43 +0000 Subject: [PATCH 1/6] chore: switch to using the new integ-runner This PR is a follow up to #19802 which added all of the new integ test snapshots that are used by the new `integ-runner` tool. This PR switches out the old `cdk-integ` tool for the new `integ-runner`. Updates made: 1. Update all `package.json` files to install and use the `integ-runner` 2. Update `cdk-test` to use `integ-runner` --- INTEGRATION_TESTS.md | 6 +- .../ecs-service-extensions/package.json | 4 +- packages/@aws-cdk/alexa-ask/package.json | 2 +- packages/@aws-cdk/app-delivery/package.json | 4 +- packages/@aws-cdk/assets/package.json | 4 +- .../@aws-cdk/aws-accessanalyzer/package.json | 2 +- packages/@aws-cdk/aws-acmpca/package.json | 2 +- packages/@aws-cdk/aws-amazonmq/package.json | 2 +- packages/@aws-cdk/aws-amplify/package.json | 4 +- .../aws-amplifyuibuilder/package.json | 2 +- packages/@aws-cdk/aws-apigateway/package.json | 4 +- .../aws-apigatewayv2-authorizers/package.json | 4 +- .../package.json | 4 +- .../@aws-cdk/aws-apigatewayv2/package.json | 4 +- packages/@aws-cdk/aws-appconfig/package.json | 2 +- packages/@aws-cdk/aws-appflow/package.json | 2 +- .../@aws-cdk/aws-appintegrations/package.json | 2 +- .../aws-applicationautoscaling/package.json | 2 +- .../aws-applicationinsights/package.json | 2 +- packages/@aws-cdk/aws-appmesh/package.json | 4 +- packages/@aws-cdk/aws-apprunner/package.json | 4 +- packages/@aws-cdk/aws-appstream/package.json | 2 +- packages/@aws-cdk/aws-appsync/package.json | 4 +- packages/@aws-cdk/aws-aps/package.json | 2 +- packages/@aws-cdk/aws-athena/package.json | 4 +- .../@aws-cdk/aws-auditmanager/package.json | 2 +- .../aws-autoscaling-common/package.json | 4 +- .../aws-autoscaling-hooktargets/package.json | 4 +- .../@aws-cdk/aws-autoscaling/package.json | 4 +- .../aws-autoscalingplans/package.json | 2 +- packages/@aws-cdk/aws-backup/package.json | 4 +- packages/@aws-cdk/aws-batch/package.json | 4 +- .../aws-billingconductor/package.json | 2 +- packages/@aws-cdk/aws-budgets/package.json | 2 +- packages/@aws-cdk/aws-cassandra/package.json | 2 +- packages/@aws-cdk/aws-ce/package.json | 2 +- .../aws-certificatemanager/package.json | 2 +- packages/@aws-cdk/aws-chatbot/package.json | 4 +- packages/@aws-cdk/aws-cloud9/package.json | 4 +- .../@aws-cdk/aws-cloudformation/package.json | 4 +- .../aws-cloudfront-origins/package.json | 4 +- packages/@aws-cdk/aws-cloudfront/package.json | 4 +- packages/@aws-cdk/aws-cloudtrail/package.json | 4 +- .../aws-cloudwatch-actions/package.json | 4 +- packages/@aws-cdk/aws-cloudwatch/package.json | 4 +- .../@aws-cdk/aws-codeartifact/package.json | 2 +- packages/@aws-cdk/aws-codebuild/package.json | 4 +- packages/@aws-cdk/aws-codecommit/package.json | 4 +- packages/@aws-cdk/aws-codedeploy/package.json | 4 +- .../aws-codeguruprofiler/package.json | 4 +- .../aws-codegurureviewer/package.json | 2 +- .../aws-codepipeline-actions/package.json | 4 +- .../@aws-cdk/aws-codepipeline/package.json | 4 +- packages/@aws-cdk/aws-codestar/package.json | 4 +- .../aws-codestarconnections/package.json | 2 +- .../aws-codestarnotifications/package.json | 4 +- .../aws-cognito-identitypool/package.json | 4 +- packages/@aws-cdk/aws-cognito/package.json | 4 +- packages/@aws-cdk/aws-config/package.json | 4 +- packages/@aws-cdk/aws-connect/package.json | 2 +- packages/@aws-cdk/aws-cur/package.json | 2 +- .../aws-customerprofiles/package.json | 2 +- packages/@aws-cdk/aws-databrew/package.json | 2 +- .../@aws-cdk/aws-datapipeline/package.json | 2 +- packages/@aws-cdk/aws-datasync/package.json | 2 +- packages/@aws-cdk/aws-dax/package.json | 2 +- packages/@aws-cdk/aws-detective/package.json | 2 +- packages/@aws-cdk/aws-devopsguru/package.json | 2 +- .../aws-directoryservice/package.json | 2 +- packages/@aws-cdk/aws-dlm/package.json | 2 +- packages/@aws-cdk/aws-dms/package.json | 2 +- packages/@aws-cdk/aws-docdb/package.json | 4 +- .../@aws-cdk/aws-dynamodb-global/package.json | 4 +- packages/@aws-cdk/aws-dynamodb/package.json | 4 +- packages/@aws-cdk/aws-ec2/package.json | 4 +- packages/@aws-cdk/aws-ecr-assets/package.json | 4 +- packages/@aws-cdk/aws-ecr/package.json | 4 +- .../@aws-cdk/aws-ecs-patterns/package.json | 4 +- packages/@aws-cdk/aws-ecs/package.json | 4 +- .../aws-ecs-fargate-efs.template.json | 512 ++++++++++ .../fargate-with-efs.integ.snapshot/cdk.out | 1 + .../manifest.json | 197 ++++ .../fargate-with-efs.integ.snapshot/tree.json | 893 ++++++++++++++++++ packages/@aws-cdk/aws-efs/package.json | 4 +- packages/@aws-cdk/aws-eks-legacy/package.json | 4 +- packages/@aws-cdk/aws-eks/package.json | 4 +- .../aws-cdk-eks-helm-test.template.json | 89 +- ...bectlProvider207F42E4.nested.template.json | 20 +- .../manifest.json | 92 +- .../eks-helm-asset.integ.snapshot/tree.json | 122 ++- .../@aws-cdk/aws-elasticache/package.json | 2 +- .../aws-elasticbeanstalk/package.json | 2 +- .../aws-elasticloadbalancing/package.json | 4 +- .../package.json | 4 +- .../package.json | 4 +- .../aws-elasticloadbalancingv2/package.json | 4 +- .../@aws-cdk/aws-elasticsearch/package.json | 4 +- packages/@aws-cdk/aws-emr/package.json | 2 +- .../@aws-cdk/aws-emrcontainers/package.json | 2 +- .../@aws-cdk/aws-events-targets/package.json | 4 +- packages/@aws-cdk/aws-events/package.json | 2 +- .../@aws-cdk/aws-eventschemas/package.json | 2 +- packages/@aws-cdk/aws-evidently/package.json | 2 +- packages/@aws-cdk/aws-finspace/package.json | 2 +- packages/@aws-cdk/aws-fis/package.json | 2 +- packages/@aws-cdk/aws-fms/package.json | 2 +- packages/@aws-cdk/aws-forecast/package.json | 2 +- .../@aws-cdk/aws-frauddetector/package.json | 2 +- packages/@aws-cdk/aws-fsx/package.json | 4 +- packages/@aws-cdk/aws-gamelift/package.json | 2 +- .../package.json | 4 +- .../aws-globalaccelerator/package.json | 4 +- packages/@aws-cdk/aws-glue/package.json | 4 +- packages/@aws-cdk/aws-greengrass/package.json | 2 +- .../@aws-cdk/aws-greengrassv2/package.json | 2 +- .../@aws-cdk/aws-groundstation/package.json | 2 +- packages/@aws-cdk/aws-guardduty/package.json | 2 +- packages/@aws-cdk/aws-healthlake/package.json | 2 +- packages/@aws-cdk/aws-iam/package.json | 4 +- .../@aws-cdk/aws-imagebuilder/package.json | 2 +- packages/@aws-cdk/aws-inspector/package.json | 2 +- .../@aws-cdk/aws-inspectorv2/package.json | 2 +- .../@aws-cdk/aws-iot-actions/package.json | 4 +- packages/@aws-cdk/aws-iot/package.json | 4 +- packages/@aws-cdk/aws-iot1click/package.json | 2 +- .../@aws-cdk/aws-iotanalytics/package.json | 2 +- .../aws-iotcoredeviceadvisor/package.json | 2 +- .../aws-iotevents-actions/package.json | 4 +- packages/@aws-cdk/aws-iotevents/package.json | 4 +- .../@aws-cdk/aws-iotfleethub/package.json | 2 +- .../@aws-cdk/aws-iotsitewise/package.json | 2 +- .../@aws-cdk/aws-iotthingsgraph/package.json | 2 +- .../@aws-cdk/aws-iotwireless/package.json | 2 +- packages/@aws-cdk/aws-ivs/package.json | 4 +- .../@aws-cdk/aws-kafkaconnect/package.json | 2 +- packages/@aws-cdk/aws-kendra/package.json | 2 +- packages/@aws-cdk/aws-kinesis/package.json | 4 +- .../aws-kinesisanalytics-flink/package.json | 4 +- .../aws-kinesisanalytics/package.json | 2 +- .../aws-kinesisanalyticsv2/package.json | 2 +- .../package.json | 4 +- .../@aws-cdk/aws-kinesisfirehose/package.json | 4 +- .../@aws-cdk/aws-kinesisvideo/package.json | 2 +- packages/@aws-cdk/aws-kms/package.json | 4 +- .../@aws-cdk/aws-lakeformation/package.json | 2 +- .../aws-lambda-destinations/package.json | 4 +- .../aws-lambda-event-sources/package.json | 4 +- packages/@aws-cdk/aws-lambda-go/package.json | 4 +- .../@aws-cdk/aws-lambda-nodejs/package.json | 4 +- .../@aws-cdk/aws-lambda-python/package.json | 4 +- packages/@aws-cdk/aws-lambda/package.json | 4 +- packages/@aws-cdk/aws-lex/package.json | 2 +- .../@aws-cdk/aws-licensemanager/package.json | 2 +- packages/@aws-cdk/aws-lightsail/package.json | 2 +- packages/@aws-cdk/aws-location/package.json | 2 +- .../aws-logs-destinations/package.json | 4 +- packages/@aws-cdk/aws-logs/package.json | 4 +- .../aws-lookoutequipment/package.json | 2 +- .../@aws-cdk/aws-lookoutmetrics/package.json | 2 +- .../@aws-cdk/aws-lookoutvision/package.json | 2 +- packages/@aws-cdk/aws-macie/package.json | 2 +- .../aws-managedblockchain/package.json | 2 +- .../@aws-cdk/aws-mediaconnect/package.json | 2 +- .../@aws-cdk/aws-mediaconvert/package.json | 2 +- packages/@aws-cdk/aws-medialive/package.json | 2 +- .../@aws-cdk/aws-mediapackage/package.json | 2 +- packages/@aws-cdk/aws-mediastore/package.json | 2 +- .../@aws-cdk/aws-mediatailor/package.json | 2 +- packages/@aws-cdk/aws-memorydb/package.json | 2 +- packages/@aws-cdk/aws-msk/package.json | 4 +- packages/@aws-cdk/aws-mwaa/package.json | 2 +- packages/@aws-cdk/aws-neptune/package.json | 4 +- .../@aws-cdk/aws-networkfirewall/package.json | 2 +- .../@aws-cdk/aws-networkmanager/package.json | 2 +- .../@aws-cdk/aws-nimblestudio/package.json | 2 +- .../aws-opensearchservice/package.json | 4 +- packages/@aws-cdk/aws-opsworks/package.json | 2 +- packages/@aws-cdk/aws-opsworkscm/package.json | 2 +- packages/@aws-cdk/aws-panorama/package.json | 2 +- .../@aws-cdk/aws-personalize/package.json | 2 +- packages/@aws-cdk/aws-pinpoint/package.json | 2 +- .../@aws-cdk/aws-pinpointemail/package.json | 2 +- packages/@aws-cdk/aws-qldb/package.json | 2 +- packages/@aws-cdk/aws-quicksight/package.json | 2 +- packages/@aws-cdk/aws-ram/package.json | 2 +- packages/@aws-cdk/aws-rds/package.json | 4 +- packages/@aws-cdk/aws-redshift/package.json | 4 +- .../@aws-cdk/aws-refactorspaces/package.json | 2 +- .../@aws-cdk/aws-rekognition/package.json | 2 +- .../@aws-cdk/aws-resiliencehub/package.json | 2 +- .../@aws-cdk/aws-resourcegroups/package.json | 2 +- packages/@aws-cdk/aws-robomaker/package.json | 2 +- .../aws-route53-patterns/package.json | 4 +- .../@aws-cdk/aws-route53-targets/package.json | 4 +- packages/@aws-cdk/aws-route53/package.json | 4 +- .../aws-route53recoverycontrol/package.json | 2 +- .../aws-route53recoveryreadiness/package.json | 2 +- .../@aws-cdk/aws-route53resolver/package.json | 4 +- packages/@aws-cdk/aws-rum/package.json | 2 +- packages/@aws-cdk/aws-s3-assets/package.json | 4 +- .../@aws-cdk/aws-s3-deployment/package.json | 4 +- .../aws-s3-notifications/package.json | 4 +- packages/@aws-cdk/aws-s3/package.json | 4 +- .../@aws-cdk/aws-s3objectlambda/package.json | 6 +- packages/@aws-cdk/aws-s3outposts/package.json | 2 +- packages/@aws-cdk/aws-sagemaker/package.json | 2 +- packages/@aws-cdk/aws-sam/package.json | 2 +- packages/@aws-cdk/aws-sdb/package.json | 2 +- .../@aws-cdk/aws-secretsmanager/package.json | 4 +- .../@aws-cdk/aws-securityhub/package.json | 2 +- .../@aws-cdk/aws-servicecatalog/package.json | 4 +- .../package.json | 4 +- .../aws-servicediscovery/package.json | 4 +- .../@aws-cdk/aws-ses-actions/package.json | 4 +- packages/@aws-cdk/aws-ses/package.json | 4 +- packages/@aws-cdk/aws-signer/package.json | 2 +- .../aws-sns-subscriptions/package.json | 4 +- .../FunctionStack.template.json | 2 +- .../tree.json | 2 +- packages/@aws-cdk/aws-sns/package.json | 4 +- packages/@aws-cdk/aws-sqs/package.json | 4 +- packages/@aws-cdk/aws-ssm/package.json | 4 +- .../@aws-cdk/aws-ssmcontacts/package.json | 2 +- .../@aws-cdk/aws-ssmincidents/package.json | 2 +- packages/@aws-cdk/aws-sso/package.json | 2 +- .../aws-stepfunctions-tasks/package.json | 4 +- .../@aws-cdk/aws-stepfunctions/package.json | 4 +- packages/@aws-cdk/aws-synthetics/package.json | 4 +- packages/@aws-cdk/aws-timestream/package.json | 2 +- packages/@aws-cdk/aws-transfer/package.json | 2 +- packages/@aws-cdk/aws-waf/package.json | 2 +- .../@aws-cdk/aws-wafregional/package.json | 2 +- packages/@aws-cdk/aws-wafv2/package.json | 2 +- packages/@aws-cdk/aws-wisdom/package.json | 2 +- packages/@aws-cdk/aws-workspaces/package.json | 2 +- packages/@aws-cdk/aws-xray/package.json | 2 +- .../cloudformation-include/package.json | 4 +- .../@aws-cdk/custom-resources/package.json | 4 +- .../example-construct-library/package.json | 4 +- packages/@aws-cdk/integ-runner/README.md | 92 +- .../@aws-cdk/lambda-layer-awscli/package.json | 4 +- .../lambda-layer-kubectl/package.json | 4 +- .../package.json | 4 +- packages/@aws-cdk/pipelines/package.json | 4 +- packages/@aws-cdk/triggers/package.json | 4 +- packages/cdk-assets/package.json | 2 +- packages/cdk-cli-wrapper/package.json | 2 +- .../@aws-cdk/cdk-build-tools/bin/cdk-test.ts | 2 +- 248 files changed, 2237 insertions(+), 487 deletions(-) create mode 100644 packages/@aws-cdk/aws-ecs/test/fargate/fargate-with-efs.integ.snapshot/aws-ecs-fargate-efs.template.json create mode 100644 packages/@aws-cdk/aws-ecs/test/fargate/fargate-with-efs.integ.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-ecs/test/fargate/fargate-with-efs.integ.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-ecs/test/fargate/fargate-with-efs.integ.snapshot/tree.json diff --git a/INTEGRATION_TESTS.md b/INTEGRATION_TESTS.md index 3f21037d95aa2..cf6038748e3f5 100644 --- a/INTEGRATION_TESTS.md +++ b/INTEGRATION_TESTS.md @@ -16,7 +16,7 @@ on what type of changes require integrations tests and how you should write inte All Construct libraries in the CDK code base have integration tests that serve to - 1. Acts as a regression detector. It does this by running `cdk synth` on the integration test and comparing it against - the `*.expected.json` file. This highlights how a change affects the synthesized stacks. + the Cloud Assembly stored in the snapshot (`*.integ.snapshot/`) directory. This highlights how a change affects the synthesized stacks. 2. Allows for a way to verify if the stacks are still valid CloudFormation templates, as part of an intrusive change. This is done by running `yarn integ` which will run `cdk deploy` across all of the integration tests in that package. If you are developing a new integration test or for some other reason want to work on a single integration test @@ -102,14 +102,14 @@ To run the test you would run: *Note - filename must be `*.js`* ``` -npm run cdk-integ integ.lambda.js +yarn integ --update-on-failed integ.lambda.js ``` This will: 1. Synthesize the CDK app 2. `cdk deploy` to your AWS account 3. `cdk destroy` to delete the stack -4. Save a snapshot of the synthed CloudFormation template to `integ.lambda.expected.json` +4. Save a snapshot of the Cloud Assembly to `lambda.integ.snapshot/` Now when you run `npm test` it will synth the integ app and compare the result with the snapshot. If the snapshot has changed the same process must be followed to update the snapshot. diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/package.json b/packages/@aws-cdk-containers/ecs-service-extensions/package.json index 3587f60c10eda..9ab34110fe6cb 100644 --- a/packages/@aws-cdk-containers/ecs-service-extensions/package.json +++ b/packages/@aws-cdk-containers/ecs-service-extensions/package.json @@ -14,7 +14,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -39,7 +39,7 @@ "devDependencies": { "@types/jest": "^27.4.1", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/aws-autoscaling": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "jest": "^27.5.1", diff --git a/packages/@aws-cdk/alexa-ask/package.json b/packages/@aws-cdk/alexa-ask/package.json index 2d533773cdc92..bde9d71188fc6 100644 --- a/packages/@aws-cdk/alexa-ask/package.json +++ b/packages/@aws-cdk/alexa-ask/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "pkglint": "pkglint -f", diff --git a/packages/@aws-cdk/app-delivery/package.json b/packages/@aws-cdk/app-delivery/package.json index 89760784513ef..b29ded12d92d4 100644 --- a/packages/@aws-cdk/app-delivery/package.json +++ b/packages/@aws-cdk/app-delivery/package.json @@ -45,7 +45,7 @@ "test": "cdk-test", "watch": "cdk-watch", "lint": "cdk-lint", - "integ": "cdk-integ", + "integ": "integ-runner", "awslint": "cdk-awslint", "build+test+package": "yarn build+test && yarn package", "build+test": "yarn build && yarn test", @@ -70,7 +70,7 @@ "@aws-cdk/assertions": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", "fast-check": "^2.23.2", diff --git a/packages/@aws-cdk/assets/package.json b/packages/@aws-cdk/assets/package.json index 30adc5c82cfcb..7dcef9bf75f67 100644 --- a/packages/@aws-cdk/assets/package.json +++ b/packages/@aws-cdk/assets/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -78,7 +78,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", "@types/sinon": "^9.0.11", diff --git a/packages/@aws-cdk/aws-accessanalyzer/package.json b/packages/@aws-cdk/aws-accessanalyzer/package.json index ed8871901f393..1b9e9e2832515 100644 --- a/packages/@aws-cdk/aws-accessanalyzer/package.json +++ b/packages/@aws-cdk/aws-accessanalyzer/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-acmpca/package.json b/packages/@aws-cdk/aws-acmpca/package.json index 8522c051e20b0..d224dab1c4ae9 100644 --- a/packages/@aws-cdk/aws-acmpca/package.json +++ b/packages/@aws-cdk/aws-acmpca/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-amazonmq/package.json b/packages/@aws-cdk/aws-amazonmq/package.json index 56d6e296c4ed0..ded5a55cb754d 100644 --- a/packages/@aws-cdk/aws-amazonmq/package.json +++ b/packages/@aws-cdk/aws-amazonmq/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "pkglint": "pkglint -f", diff --git a/packages/@aws-cdk/aws-amplify/package.json b/packages/@aws-cdk/aws-amplify/package.json index 7a221bfd747f5..136d0751da30d 100644 --- a/packages/@aws-cdk/aws-amplify/package.json +++ b/packages/@aws-cdk/aws-amplify/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", @@ -83,7 +83,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-amplifyuibuilder/package.json b/packages/@aws-cdk/aws-amplifyuibuilder/package.json index 443b2308b309f..2993bc2338e68 100644 --- a/packages/@aws-cdk/aws-amplifyuibuilder/package.json +++ b/packages/@aws-cdk/aws-amplifyuibuilder/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-apigateway/package.json b/packages/@aws-cdk/aws-apigateway/package.json index 3243e168f0919..727111aedea01 100644 --- a/packages/@aws-cdk/aws-apigateway/package.json +++ b/packages/@aws-cdk/aws-apigateway/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-apigatewayv2-authorizers/package.json b/packages/@aws-cdk/aws-apigatewayv2-authorizers/package.json index 0f103f65f0baa..dbe4d7caf5687 100644 --- a/packages/@aws-cdk/aws-apigatewayv2-authorizers/package.json +++ b/packages/@aws-cdk/aws-apigatewayv2-authorizers/package.json @@ -47,7 +47,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", @@ -83,7 +83,7 @@ "@aws-cdk/aws-apigatewayv2-integrations": "0.0.0", "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/aws-lambda": "^8.10.93", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-apigatewayv2-integrations/package.json b/packages/@aws-cdk/aws-apigatewayv2-integrations/package.json index 749d5fb08b479..5fc257787f250 100644 --- a/packages/@aws-cdk/aws-apigatewayv2-integrations/package.json +++ b/packages/@aws-cdk/aws-apigatewayv2-integrations/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", @@ -79,7 +79,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" }, diff --git a/packages/@aws-cdk/aws-apigatewayv2/package.json b/packages/@aws-cdk/aws-apigatewayv2/package.json index 088009ce5a483..0280d19f544c7 100644 --- a/packages/@aws-cdk/aws-apigatewayv2/package.json +++ b/packages/@aws-cdk/aws-apigatewayv2/package.json @@ -49,7 +49,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", @@ -86,7 +86,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-appconfig/package.json b/packages/@aws-cdk/aws-appconfig/package.json index 59a35b9f2f241..da7019ac3b3ed 100644 --- a/packages/@aws-cdk/aws-appconfig/package.json +++ b/packages/@aws-cdk/aws-appconfig/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-appflow/package.json b/packages/@aws-cdk/aws-appflow/package.json index e401c2c7c98de..a4b3837f703b4 100644 --- a/packages/@aws-cdk/aws-appflow/package.json +++ b/packages/@aws-cdk/aws-appflow/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-appintegrations/package.json b/packages/@aws-cdk/aws-appintegrations/package.json index d0615ae38682c..31a3aceb8349e 100644 --- a/packages/@aws-cdk/aws-appintegrations/package.json +++ b/packages/@aws-cdk/aws-appintegrations/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-applicationautoscaling/package.json b/packages/@aws-cdk/aws-applicationautoscaling/package.json index 2f389484affc8..ae332e80e0a21 100644 --- a/packages/@aws-cdk/aws-applicationautoscaling/package.json +++ b/packages/@aws-cdk/aws-applicationautoscaling/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-applicationinsights/package.json b/packages/@aws-cdk/aws-applicationinsights/package.json index 70ecad632f81f..45d3b9ee62e1b 100644 --- a/packages/@aws-cdk/aws-applicationinsights/package.json +++ b/packages/@aws-cdk/aws-applicationinsights/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-appmesh/package.json b/packages/@aws-cdk/aws-appmesh/package.json index 81b3eff008d13..ea289b0a5e4a3 100644 --- a/packages/@aws-cdk/aws-appmesh/package.json +++ b/packages/@aws-cdk/aws-appmesh/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", @@ -86,7 +86,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-apprunner/package.json b/packages/@aws-cdk/aws-apprunner/package.json index be5b3afe4c9cc..17f45e4fed62c 100644 --- a/packages/@aws-cdk/aws-apprunner/package.json +++ b/packages/@aws-cdk/aws-apprunner/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -85,7 +85,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-appstream/package.json b/packages/@aws-cdk/aws-appstream/package.json index 0069735f46906..7aa13ca79383a 100644 --- a/packages/@aws-cdk/aws-appstream/package.json +++ b/packages/@aws-cdk/aws-appstream/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "pkglint": "pkglint -f", diff --git a/packages/@aws-cdk/aws-appsync/package.json b/packages/@aws-cdk/aws-appsync/package.json index f69c2d957e031..df905bcf64877 100644 --- a/packages/@aws-cdk/aws-appsync/package.json +++ b/packages/@aws-cdk/aws-appsync/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -82,7 +82,7 @@ "@aws-cdk/assertions": "0.0.0", "@aws-cdk/aws-stepfunctions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-aps/package.json b/packages/@aws-cdk/aws-aps/package.json index 7fbef265f7a3b..dec987db00090 100644 --- a/packages/@aws-cdk/aws-aps/package.json +++ b/packages/@aws-cdk/aws-aps/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-athena/package.json b/packages/@aws-cdk/aws-athena/package.json index 134a9cdbe2bdf..a19b3186cd6dc 100644 --- a/packages/@aws-cdk/aws-athena/package.json +++ b/packages/@aws-cdk/aws-athena/package.json @@ -53,7 +53,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-auditmanager/package.json b/packages/@aws-cdk/aws-auditmanager/package.json index 16fe6cc71fd69..13f995d6a08a9 100644 --- a/packages/@aws-cdk/aws-auditmanager/package.json +++ b/packages/@aws-cdk/aws-auditmanager/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-autoscaling-common/package.json b/packages/@aws-cdk/aws-autoscaling-common/package.json index e8107108376f5..a2b30425d8a1c 100644 --- a/packages/@aws-cdk/aws-autoscaling-common/package.json +++ b/packages/@aws-cdk/aws-autoscaling-common/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -72,7 +72,7 @@ "license": "Apache-2.0", "devDependencies": { "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", "fast-check": "^2.23.2", diff --git a/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json b/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json index 164d2d933695c..edeeed55a537f 100644 --- a/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json +++ b/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -74,7 +74,7 @@ "@aws-cdk/assertions": "0.0.0", "@aws-cdk/aws-ec2": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-autoscaling/package.json b/packages/@aws-cdk/aws-autoscaling/package.json index 46b688d3ae6ec..20eb5ed6d346f 100644 --- a/packages/@aws-cdk/aws-autoscaling/package.json +++ b/packages/@aws-cdk/aws-autoscaling/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/cloud-assembly-schema": "0.0.0", "@aws-cdk/cx-api": "0.0.0", diff --git a/packages/@aws-cdk/aws-autoscalingplans/package.json b/packages/@aws-cdk/aws-autoscalingplans/package.json index 26c9be8cc368f..e491b41dcd4f0 100644 --- a/packages/@aws-cdk/aws-autoscalingplans/package.json +++ b/packages/@aws-cdk/aws-autoscalingplans/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-backup/package.json b/packages/@aws-cdk/aws-backup/package.json index 5462be05a3813..981c0c7a9e01c 100644 --- a/packages/@aws-cdk/aws-backup/package.json +++ b/packages/@aws-cdk/aws-backup/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", @@ -83,7 +83,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-batch/package.json b/packages/@aws-cdk/aws-batch/package.json index 0c405c1a720f5..65e6cd7589550 100644 --- a/packages/@aws-cdk/aws-batch/package.json +++ b/packages/@aws-cdk/aws-batch/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-billingconductor/package.json b/packages/@aws-cdk/aws-billingconductor/package.json index c3dafc9781d87..783fe54f49312 100644 --- a/packages/@aws-cdk/aws-billingconductor/package.json +++ b/packages/@aws-cdk/aws-billingconductor/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-budgets/package.json b/packages/@aws-cdk/aws-budgets/package.json index 3da84da4dcca0..bf54f646e39a3 100644 --- a/packages/@aws-cdk/aws-budgets/package.json +++ b/packages/@aws-cdk/aws-budgets/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-cassandra/package.json b/packages/@aws-cdk/aws-cassandra/package.json index 5325bf8bfe1bf..5320ece3520e3 100644 --- a/packages/@aws-cdk/aws-cassandra/package.json +++ b/packages/@aws-cdk/aws-cassandra/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-ce/package.json b/packages/@aws-cdk/aws-ce/package.json index ff751b12bb50d..c7734df1f6f75 100644 --- a/packages/@aws-cdk/aws-ce/package.json +++ b/packages/@aws-cdk/aws-ce/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-certificatemanager/package.json b/packages/@aws-cdk/aws-certificatemanager/package.json index b2dcdedca636d..7a0a17c0cc7bd 100644 --- a/packages/@aws-cdk/aws-certificatemanager/package.json +++ b/packages/@aws-cdk/aws-certificatemanager/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-chatbot/package.json b/packages/@aws-cdk/aws-chatbot/package.json index 259cf25fb4985..328f55250b1ea 100644 --- a/packages/@aws-cdk/aws-chatbot/package.json +++ b/packages/@aws-cdk/aws-chatbot/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -83,7 +83,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-cloud9/package.json b/packages/@aws-cdk/aws-cloud9/package.json index 2fd6aab3799e2..570dd589d0d9d 100644 --- a/packages/@aws-cdk/aws-cloud9/package.json +++ b/packages/@aws-cdk/aws-cloud9/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -82,7 +82,7 @@ "@aws-cdk/assertions": "0.0.0", "@aws-cdk/aws-codecommit": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-cloudformation/package.json b/packages/@aws-cdk/aws-cloudformation/package.json index 3f3b7106f9943..c3fbf4378ffbd 100644 --- a/packages/@aws-cdk/aws-cloudformation/package.json +++ b/packages/@aws-cdk/aws-cloudformation/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -83,7 +83,7 @@ "@aws-cdk/aws-sqs": "0.0.0", "@aws-cdk/aws-ssm": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/aws-lambda": "^8.10.93", diff --git a/packages/@aws-cdk/aws-cloudfront-origins/package.json b/packages/@aws-cdk/aws-cloudfront-origins/package.json index d7bea5cd1ecca..3af587193e346 100644 --- a/packages/@aws-cdk/aws-cloudfront-origins/package.json +++ b/packages/@aws-cdk/aws-cloudfront-origins/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -80,7 +80,7 @@ "@aws-cdk/assertions": "0.0.0", "@aws-cdk/aws-ec2": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", "aws-sdk": "^2.848.0" diff --git a/packages/@aws-cdk/aws-cloudfront/package.json b/packages/@aws-cdk/aws-cloudfront/package.json index 37ee6edb996a2..aabe53c75317d 100644 --- a/packages/@aws-cdk/aws-cloudfront/package.json +++ b/packages/@aws-cdk/aws-cloudfront/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-cloudtrail/package.json b/packages/@aws-cdk/aws-cloudtrail/package.json index d5b30cb2c16c8..b37672fe67bd4 100644 --- a/packages/@aws-cdk/aws-cloudtrail/package.json +++ b/packages/@aws-cdk/aws-cloudtrail/package.json @@ -51,7 +51,7 @@ "package": "cdk-package", "awslint": "cdk-awslint", "cfn2ts": "cfn2ts", - "integ": "cdk-integ", + "integ": "integ-runner", "build+test+package": "yarn build+test && yarn package", "build+test": "yarn build && yarn test", "compat": "cdk-compat", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-cloudwatch-actions/package.json b/packages/@aws-cdk/aws-cloudwatch-actions/package.json index a54a582f66548..4b5af7ab4790b 100644 --- a/packages/@aws-cdk/aws-cloudwatch-actions/package.json +++ b/packages/@aws-cdk/aws-cloudwatch-actions/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -74,7 +74,7 @@ "@aws-cdk/assertions": "0.0.0", "@aws-cdk/aws-ec2": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-cloudwatch/package.json b/packages/@aws-cdk/aws-cloudwatch/package.json index f263def7dfcd2..5d4642aea4e0c 100644 --- a/packages/@aws-cdk/aws-cloudwatch/package.json +++ b/packages/@aws-cdk/aws-cloudwatch/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-codeartifact/package.json b/packages/@aws-cdk/aws-codeartifact/package.json index 9303cee955029..f9ce40d1cfc22 100644 --- a/packages/@aws-cdk/aws-codeartifact/package.json +++ b/packages/@aws-cdk/aws-codeartifact/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-codebuild/package.json b/packages/@aws-cdk/aws-codebuild/package.json index 5f43a603aaa62..0f5352cc03182 100644 --- a/packages/@aws-cdk/aws-codebuild/package.json +++ b/packages/@aws-cdk/aws-codebuild/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -87,7 +87,7 @@ "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-codecommit/package.json b/packages/@aws-cdk/aws-codecommit/package.json index 108604988db31..661be4e714578 100644 --- a/packages/@aws-cdk/aws-codecommit/package.json +++ b/packages/@aws-cdk/aws-codecommit/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -87,7 +87,7 @@ "@aws-cdk/assertions": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/cloud-assembly-schema": "0.0.0", "@aws-cdk/pkglint": "0.0.0", diff --git a/packages/@aws-cdk/aws-codedeploy/package.json b/packages/@aws-cdk/aws-codedeploy/package.json index ff289e51bbe4c..d5cc959cce8e6 100644 --- a/packages/@aws-cdk/aws-codedeploy/package.json +++ b/packages/@aws-cdk/aws-codedeploy/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -84,7 +84,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-codeguruprofiler/package.json b/packages/@aws-cdk/aws-codeguruprofiler/package.json index 65ab5a7d206dc..e3afa9a91b4a9 100644 --- a/packages/@aws-cdk/aws-codeguruprofiler/package.json +++ b/packages/@aws-cdk/aws-codeguruprofiler/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -83,7 +83,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-codegurureviewer/package.json b/packages/@aws-cdk/aws-codegurureviewer/package.json index e0e2d1748e1ae..737dcabb18a76 100644 --- a/packages/@aws-cdk/aws-codegurureviewer/package.json +++ b/packages/@aws-cdk/aws-codegurureviewer/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-codepipeline-actions/package.json b/packages/@aws-cdk/aws-codepipeline-actions/package.json index b9d312c04ae38..3bf3d8df55f9f 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/package.json +++ b/packages/@aws-cdk/aws-codepipeline-actions/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -80,7 +80,7 @@ "@aws-cdk/aws-codestarnotifications": "0.0.0", "@aws-cdk/aws-s3-assets": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cx-api": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-codepipeline/package.json b/packages/@aws-cdk/aws-codepipeline/package.json index 8d3f6978b445a..6d53a66213e3b 100644 --- a/packages/@aws-cdk/aws-codepipeline/package.json +++ b/packages/@aws-cdk/aws-codepipeline/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -86,7 +86,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/cx-api": "0.0.0", "@aws-cdk/pkglint": "0.0.0", diff --git a/packages/@aws-cdk/aws-codestar/package.json b/packages/@aws-cdk/aws-codestar/package.json index 478f09bef3b9d..cf2c44da54b27 100644 --- a/packages/@aws-cdk/aws-codestar/package.json +++ b/packages/@aws-cdk/aws-codestar/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", @@ -83,7 +83,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-codestarconnections/package.json b/packages/@aws-cdk/aws-codestarconnections/package.json index 2e8cfc5deac99..90e5bb8986cfc 100644 --- a/packages/@aws-cdk/aws-codestarconnections/package.json +++ b/packages/@aws-cdk/aws-codestarconnections/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-codestarnotifications/package.json b/packages/@aws-cdk/aws-codestarnotifications/package.json index 5e181702720cf..606c671dbf187 100644 --- a/packages/@aws-cdk/aws-codestarnotifications/package.json +++ b/packages/@aws-cdk/aws-codestarnotifications/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", @@ -83,7 +83,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-cognito-identitypool/package.json b/packages/@aws-cdk/aws-cognito-identitypool/package.json index 19171391ad7be..7107f537808a4 100644 --- a/packages/@aws-cdk/aws-cognito-identitypool/package.json +++ b/packages/@aws-cdk/aws-cognito-identitypool/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -79,7 +79,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", "jest": "^27.5.1" diff --git a/packages/@aws-cdk/aws-cognito/package.json b/packages/@aws-cdk/aws-cognito/package.json index 7f38517f6abae..5eaba8463c93a 100644 --- a/packages/@aws-cdk/aws-cognito/package.json +++ b/packages/@aws-cdk/aws-cognito/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-config/package.json b/packages/@aws-cdk/aws-config/package.json index 8a121a8927bd4..d21097e54822b 100644 --- a/packages/@aws-cdk/aws-config/package.json +++ b/packages/@aws-cdk/aws-config/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -82,7 +82,7 @@ "@aws-cdk/assertions": "0.0.0", "@aws-cdk/aws-events-targets": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-connect/package.json b/packages/@aws-cdk/aws-connect/package.json index e9d851b1824a9..932ef3ebed422 100644 --- a/packages/@aws-cdk/aws-connect/package.json +++ b/packages/@aws-cdk/aws-connect/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-cur/package.json b/packages/@aws-cdk/aws-cur/package.json index 00adc1d4d1602..3f0f814089f13 100644 --- a/packages/@aws-cdk/aws-cur/package.json +++ b/packages/@aws-cdk/aws-cur/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-customerprofiles/package.json b/packages/@aws-cdk/aws-customerprofiles/package.json index d9a6f1632efab..16391ee038b4d 100644 --- a/packages/@aws-cdk/aws-customerprofiles/package.json +++ b/packages/@aws-cdk/aws-customerprofiles/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-databrew/package.json b/packages/@aws-cdk/aws-databrew/package.json index 749abf6bab9b7..16c9ba4996511 100644 --- a/packages/@aws-cdk/aws-databrew/package.json +++ b/packages/@aws-cdk/aws-databrew/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-datapipeline/package.json b/packages/@aws-cdk/aws-datapipeline/package.json index 24d3144f7c33d..68cb7f58ebf11 100644 --- a/packages/@aws-cdk/aws-datapipeline/package.json +++ b/packages/@aws-cdk/aws-datapipeline/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-datasync/package.json b/packages/@aws-cdk/aws-datasync/package.json index ff9c4cdd4699b..0c9a41aee659d 100644 --- a/packages/@aws-cdk/aws-datasync/package.json +++ b/packages/@aws-cdk/aws-datasync/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-dax/package.json b/packages/@aws-cdk/aws-dax/package.json index 2901f449cf06e..df2725584a8b9 100644 --- a/packages/@aws-cdk/aws-dax/package.json +++ b/packages/@aws-cdk/aws-dax/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-detective/package.json b/packages/@aws-cdk/aws-detective/package.json index cc061a9a00648..dd8180c100946 100644 --- a/packages/@aws-cdk/aws-detective/package.json +++ b/packages/@aws-cdk/aws-detective/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-devopsguru/package.json b/packages/@aws-cdk/aws-devopsguru/package.json index 9937e175014f4..a44df57c45e87 100644 --- a/packages/@aws-cdk/aws-devopsguru/package.json +++ b/packages/@aws-cdk/aws-devopsguru/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-directoryservice/package.json b/packages/@aws-cdk/aws-directoryservice/package.json index 4d37918cd7b3a..17e6136484970 100644 --- a/packages/@aws-cdk/aws-directoryservice/package.json +++ b/packages/@aws-cdk/aws-directoryservice/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-dlm/package.json b/packages/@aws-cdk/aws-dlm/package.json index f1601bd7cc135..d948205f0699a 100644 --- a/packages/@aws-cdk/aws-dlm/package.json +++ b/packages/@aws-cdk/aws-dlm/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "pkglint": "pkglint -f", diff --git a/packages/@aws-cdk/aws-dms/package.json b/packages/@aws-cdk/aws-dms/package.json index 3f20999bb1e0a..b921dfc556c09 100644 --- a/packages/@aws-cdk/aws-dms/package.json +++ b/packages/@aws-cdk/aws-dms/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-docdb/package.json b/packages/@aws-cdk/aws-docdb/package.json index 02721228f2097..dfb4ac2967848 100644 --- a/packages/@aws-cdk/aws-docdb/package.json +++ b/packages/@aws-cdk/aws-docdb/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "pkglint": "pkglint -f", @@ -83,7 +83,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-dynamodb-global/package.json b/packages/@aws-cdk/aws-dynamodb-global/package.json index 5618565bc6119..c7d79cff2c452 100644 --- a/packages/@aws-cdk/aws-dynamodb-global/package.json +++ b/packages/@aws-cdk/aws-dynamodb-global/package.json @@ -65,7 +65,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", "jest": "^27.5.1" @@ -82,7 +82,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-dynamodb/package.json b/packages/@aws-cdk/aws-dynamodb/package.json index 1b30eb1a07e6d..cb68215f1a183 100644 --- a/packages/@aws-cdk/aws-dynamodb/package.json +++ b/packages/@aws-cdk/aws-dynamodb/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/aws-lambda": "^8.10.93", diff --git a/packages/@aws-cdk/aws-ec2/package.json b/packages/@aws-cdk/aws-ec2/package.json index 3c523ea0fdd0a..d4eb79f90f699 100644 --- a/packages/@aws-cdk/aws-ec2/package.json +++ b/packages/@aws-cdk/aws-ec2/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/cloud-assembly-schema": "0.0.0", "@aws-cdk/cx-api": "0.0.0", diff --git a/packages/@aws-cdk/aws-ecr-assets/package.json b/packages/@aws-cdk/aws-ecr-assets/package.json index 75fb178adb95a..def8bfe65f867 100644 --- a/packages/@aws-cdk/aws-ecr-assets/package.json +++ b/packages/@aws-cdk/aws-ecr-assets/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -74,7 +74,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cloud-assembly-schema": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-ecr/package.json b/packages/@aws-cdk/aws-ecr/package.json index ae13302f8642e..9c458232da0c3 100644 --- a/packages/@aws-cdk/aws-ecr/package.json +++ b/packages/@aws-cdk/aws-ecr/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -85,7 +85,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-ecs-patterns/package.json b/packages/@aws-cdk/aws-ecs-patterns/package.json index 72d98e55f86d1..a7fe6f96f89a8 100644 --- a/packages/@aws-cdk/aws-ecs-patterns/package.json +++ b/packages/@aws-cdk/aws-ecs-patterns/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -74,7 +74,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-ecs/package.json b/packages/@aws-cdk/aws-ecs/package.json index e35bdd03298c7..1d3787c2d2af2 100644 --- a/packages/@aws-cdk/aws-ecs/package.json +++ b/packages/@aws-cdk/aws-ecs/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -83,7 +83,7 @@ "@aws-cdk/aws-s3-deployment": "0.0.0", "@aws-cdk/aws-efs": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/cx-api": "0.0.0", "@aws-cdk/pkglint": "0.0.0", diff --git a/packages/@aws-cdk/aws-ecs/test/fargate/fargate-with-efs.integ.snapshot/aws-ecs-fargate-efs.template.json b/packages/@aws-cdk/aws-ecs/test/fargate/fargate-with-efs.integ.snapshot/aws-ecs-fargate-efs.template.json new file mode 100644 index 0000000000000..4df1d3bbcce99 --- /dev/null +++ b/packages/@aws-cdk/aws-ecs/test/fargate/fargate-with-efs.integ.snapshot/aws-ecs-fargate-efs.template.json @@ -0,0 +1,512 @@ +{ + "Resources": { + "Vpc8378EB38": { + "Type": "AWS::EC2::VPC", + "Properties": { + "CidrBlock": "10.0.0.0/16", + "EnableDnsHostnames": true, + "EnableDnsSupport": true, + "InstanceTenancy": "default", + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-fargate-efs/Vpc" + } + ] + } + }, + "VpcPublicSubnet1Subnet5C2D37C4": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "Vpc8378EB38" + }, + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.0.0/18", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Public" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Public" + }, + { + "Key": "Name", + "Value": "aws-ecs-fargate-efs/Vpc/PublicSubnet1" + } + ] + } + }, + "VpcPublicSubnet1RouteTable6C95E38E": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "Vpc8378EB38" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-fargate-efs/Vpc/PublicSubnet1" + } + ] + } + }, + "VpcPublicSubnet1RouteTableAssociation97140677": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "VpcPublicSubnet1RouteTable6C95E38E" + }, + "SubnetId": { + "Ref": "VpcPublicSubnet1Subnet5C2D37C4" + } + } + }, + "VpcPublicSubnet1DefaultRoute3DA9E72A": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "VpcPublicSubnet1RouteTable6C95E38E" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "VpcIGWD7BA715C" + } + }, + "DependsOn": [ + "VpcVPCGWBF912B6E" + ] + }, + "VpcPublicSubnet1EIPD7E02669": { + "Type": "AWS::EC2::EIP", + "Properties": { + "Domain": "vpc", + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-fargate-efs/Vpc/PublicSubnet1" + } + ] + } + }, + "VpcPublicSubnet1NATGateway4D7517AA": { + "Type": "AWS::EC2::NatGateway", + "Properties": { + "SubnetId": { + "Ref": "VpcPublicSubnet1Subnet5C2D37C4" + }, + "AllocationId": { + "Fn::GetAtt": [ + "VpcPublicSubnet1EIPD7E02669", + "AllocationId" + ] + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-fargate-efs/Vpc/PublicSubnet1" + } + ] + } + }, + "VpcPublicSubnet2Subnet691E08A3": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "Vpc8378EB38" + }, + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.64.0/18", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Public" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Public" + }, + { + "Key": "Name", + "Value": "aws-ecs-fargate-efs/Vpc/PublicSubnet2" + } + ] + } + }, + "VpcPublicSubnet2RouteTable94F7E489": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "Vpc8378EB38" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-fargate-efs/Vpc/PublicSubnet2" + } + ] + } + }, + "VpcPublicSubnet2RouteTableAssociationDD5762D8": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "VpcPublicSubnet2RouteTable94F7E489" + }, + "SubnetId": { + "Ref": "VpcPublicSubnet2Subnet691E08A3" + } + } + }, + "VpcPublicSubnet2DefaultRoute97F91067": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "VpcPublicSubnet2RouteTable94F7E489" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "VpcIGWD7BA715C" + } + }, + "DependsOn": [ + "VpcVPCGWBF912B6E" + ] + }, + "VpcPublicSubnet2EIP3C605A87": { + "Type": "AWS::EC2::EIP", + "Properties": { + "Domain": "vpc", + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-fargate-efs/Vpc/PublicSubnet2" + } + ] + } + }, + "VpcPublicSubnet2NATGateway9182C01D": { + "Type": "AWS::EC2::NatGateway", + "Properties": { + "SubnetId": { + "Ref": "VpcPublicSubnet2Subnet691E08A3" + }, + "AllocationId": { + "Fn::GetAtt": [ + "VpcPublicSubnet2EIP3C605A87", + "AllocationId" + ] + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-fargate-efs/Vpc/PublicSubnet2" + } + ] + } + }, + "VpcPrivateSubnet1Subnet536B997A": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "Vpc8378EB38" + }, + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.128.0/18", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Private" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Private" + }, + { + "Key": "Name", + "Value": "aws-ecs-fargate-efs/Vpc/PrivateSubnet1" + } + ] + } + }, + "VpcPrivateSubnet1RouteTableB2C5B500": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "Vpc8378EB38" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-fargate-efs/Vpc/PrivateSubnet1" + } + ] + } + }, + "VpcPrivateSubnet1RouteTableAssociation70C59FA6": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "VpcPrivateSubnet1RouteTableB2C5B500" + }, + "SubnetId": { + "Ref": "VpcPrivateSubnet1Subnet536B997A" + } + } + }, + "VpcPrivateSubnet1DefaultRouteBE02A9ED": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "VpcPrivateSubnet1RouteTableB2C5B500" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "NatGatewayId": { + "Ref": "VpcPublicSubnet1NATGateway4D7517AA" + } + } + }, + "VpcPrivateSubnet2Subnet3788AAA1": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "Vpc8378EB38" + }, + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.192.0/18", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Private" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Private" + }, + { + "Key": "Name", + "Value": "aws-ecs-fargate-efs/Vpc/PrivateSubnet2" + } + ] + } + }, + "VpcPrivateSubnet2RouteTableA678073B": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "Vpc8378EB38" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-fargate-efs/Vpc/PrivateSubnet2" + } + ] + } + }, + "VpcPrivateSubnet2RouteTableAssociationA89CAD56": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "VpcPrivateSubnet2RouteTableA678073B" + }, + "SubnetId": { + "Ref": "VpcPrivateSubnet2Subnet3788AAA1" + } + } + }, + "VpcPrivateSubnet2DefaultRoute060D2087": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "VpcPrivateSubnet2RouteTableA678073B" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "NatGatewayId": { + "Ref": "VpcPublicSubnet2NATGateway9182C01D" + } + } + }, + "VpcIGWD7BA715C": { + "Type": "AWS::EC2::InternetGateway", + "Properties": { + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-fargate-efs/Vpc" + } + ] + } + }, + "VpcVPCGWBF912B6E": { + "Type": "AWS::EC2::VPCGatewayAttachment", + "Properties": { + "VpcId": { + "Ref": "Vpc8378EB38" + }, + "InternetGatewayId": { + "Ref": "VpcIGWD7BA715C" + } + } + }, + "etcdata80702D7D": { + "Type": "AWS::EFS::FileSystem", + "Properties": { + "FileSystemTags": [ + { + "Key": "Name", + "Value": "aws-ecs-fargate-efs/etcdata" + } + ] + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "etcdataEfsSecurityGroupB0A9B014": { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "aws-ecs-fargate-efs/etcdata/EfsSecurityGroup", + "SecurityGroupEgress": [ + { + "CidrIp": "0.0.0.0/0", + "Description": "Allow all outbound traffic by default", + "IpProtocol": "-1" + } + ], + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-fargate-efs/etcdata" + } + ], + "VpcId": { + "Ref": "Vpc8378EB38" + } + } + }, + "etcdataEfsMountTarget1A2665990": { + "Type": "AWS::EFS::MountTarget", + "Properties": { + "FileSystemId": { + "Ref": "etcdata80702D7D" + }, + "SecurityGroups": [ + { + "Fn::GetAtt": [ + "etcdataEfsSecurityGroupB0A9B014", + "GroupId" + ] + } + ], + "SubnetId": { + "Ref": "VpcPrivateSubnet1Subnet536B997A" + } + } + }, + "etcdataEfsMountTarget280CEA26C": { + "Type": "AWS::EFS::MountTarget", + "Properties": { + "FileSystemId": { + "Ref": "etcdata80702D7D" + }, + "SecurityGroups": [ + { + "Fn::GetAtt": [ + "etcdataEfsSecurityGroupB0A9B014", + "GroupId" + ] + } + ], + "SubnetId": { + "Ref": "VpcPrivateSubnet2Subnet3788AAA1" + } + } + }, + "TaskDefTaskRole1EDB4A67": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "TaskDef54694570": { + "Type": "AWS::ECS::TaskDefinition", + "Properties": { + "ContainerDefinitions": [ + { + "Essential": true, + "Image": "amazon/amazon-ecs-sample", + "Name": "web" + } + ], + "Cpu": "256", + "Family": "awsecsfargateefsTaskDefBFA2D408", + "Memory": "512", + "NetworkMode": "awsvpc", + "RequiresCompatibilities": [ + "FARGATE" + ], + "TaskRoleArn": { + "Fn::GetAtt": [ + "TaskDefTaskRole1EDB4A67", + "Arn" + ] + }, + "Volumes": [ + { + "EFSVolumeConfiguration": { + "FilesystemId": { + "Ref": "etcdata80702D7D" + } + }, + "Name": "somedata" + } + ] + } + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-ecs/test/fargate/fargate-with-efs.integ.snapshot/cdk.out b/packages/@aws-cdk/aws-ecs/test/fargate/fargate-with-efs.integ.snapshot/cdk.out new file mode 100644 index 0000000000000..90bef2e09ad39 --- /dev/null +++ b/packages/@aws-cdk/aws-ecs/test/fargate/fargate-with-efs.integ.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"17.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-ecs/test/fargate/fargate-with-efs.integ.snapshot/manifest.json b/packages/@aws-cdk/aws-ecs/test/fargate/fargate-with-efs.integ.snapshot/manifest.json new file mode 100644 index 0000000000000..29f5e43939ba5 --- /dev/null +++ b/packages/@aws-cdk/aws-ecs/test/fargate/fargate-with-efs.integ.snapshot/manifest.json @@ -0,0 +1,197 @@ +{ + "version": "17.0.0", + "artifacts": { + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + }, + "metadata": {} + }, + "aws-ecs-fargate-efs": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-ecs-fargate-efs.template.json", + "validateOnSynth": false + }, + "metadata": { + "/aws-ecs-fargate-efs/Vpc/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "Vpc8378EB38" + } + ], + "/aws-ecs-fargate-efs/Vpc/PublicSubnet1/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet1Subnet5C2D37C4" + } + ], + "/aws-ecs-fargate-efs/Vpc/PublicSubnet1/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet1RouteTable6C95E38E" + } + ], + "/aws-ecs-fargate-efs/Vpc/PublicSubnet1/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet1RouteTableAssociation97140677" + } + ], + "/aws-ecs-fargate-efs/Vpc/PublicSubnet1/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet1DefaultRoute3DA9E72A" + } + ], + "/aws-ecs-fargate-efs/Vpc/PublicSubnet1/EIP": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet1EIPD7E02669" + } + ], + "/aws-ecs-fargate-efs/Vpc/PublicSubnet1/NATGateway": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet1NATGateway4D7517AA" + } + ], + "/aws-ecs-fargate-efs/Vpc/PublicSubnet2/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet2Subnet691E08A3" + } + ], + "/aws-ecs-fargate-efs/Vpc/PublicSubnet2/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet2RouteTable94F7E489" + } + ], + "/aws-ecs-fargate-efs/Vpc/PublicSubnet2/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet2RouteTableAssociationDD5762D8" + } + ], + "/aws-ecs-fargate-efs/Vpc/PublicSubnet2/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet2DefaultRoute97F91067" + } + ], + "/aws-ecs-fargate-efs/Vpc/PublicSubnet2/EIP": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet2EIP3C605A87" + } + ], + "/aws-ecs-fargate-efs/Vpc/PublicSubnet2/NATGateway": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet2NATGateway9182C01D" + } + ], + "/aws-ecs-fargate-efs/Vpc/PrivateSubnet1/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPrivateSubnet1Subnet536B997A" + } + ], + "/aws-ecs-fargate-efs/Vpc/PrivateSubnet1/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPrivateSubnet1RouteTableB2C5B500" + } + ], + "/aws-ecs-fargate-efs/Vpc/PrivateSubnet1/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPrivateSubnet1RouteTableAssociation70C59FA6" + } + ], + "/aws-ecs-fargate-efs/Vpc/PrivateSubnet1/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPrivateSubnet1DefaultRouteBE02A9ED" + } + ], + "/aws-ecs-fargate-efs/Vpc/PrivateSubnet2/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPrivateSubnet2Subnet3788AAA1" + } + ], + "/aws-ecs-fargate-efs/Vpc/PrivateSubnet2/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPrivateSubnet2RouteTableA678073B" + } + ], + "/aws-ecs-fargate-efs/Vpc/PrivateSubnet2/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPrivateSubnet2RouteTableAssociationA89CAD56" + } + ], + "/aws-ecs-fargate-efs/Vpc/PrivateSubnet2/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPrivateSubnet2DefaultRoute060D2087" + } + ], + "/aws-ecs-fargate-efs/Vpc/IGW": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcIGWD7BA715C" + } + ], + "/aws-ecs-fargate-efs/Vpc/VPCGW": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcVPCGWBF912B6E" + } + ], + "/aws-ecs-fargate-efs/etcdata/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "etcdata80702D7D" + } + ], + "/aws-ecs-fargate-efs/etcdata/EfsSecurityGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "etcdataEfsSecurityGroupB0A9B014" + } + ], + "/aws-ecs-fargate-efs/etcdata/EfsMountTarget1": [ + { + "type": "aws:cdk:logicalId", + "data": "etcdataEfsMountTarget1A2665990" + } + ], + "/aws-ecs-fargate-efs/etcdata/EfsMountTarget2": [ + { + "type": "aws:cdk:logicalId", + "data": "etcdataEfsMountTarget280CEA26C" + } + ], + "/aws-ecs-fargate-efs/TaskDef/TaskRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "TaskDefTaskRole1EDB4A67" + } + ], + "/aws-ecs-fargate-efs/TaskDef/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "TaskDef54694570" + } + ] + }, + "displayName": "aws-ecs-fargate-efs" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-ecs/test/fargate/fargate-with-efs.integ.snapshot/tree.json b/packages/@aws-cdk/aws-ecs/test/fargate/fargate-with-efs.integ.snapshot/tree.json new file mode 100644 index 0000000000000..1afd06d86763c --- /dev/null +++ b/packages/@aws-cdk/aws-ecs/test/fargate/fargate-with-efs.integ.snapshot/tree.json @@ -0,0 +1,893 @@ +{ + "version": "tree-0.1", + "tree": { + "id": "App", + "path": "", + "children": { + "Tree": { + "id": "Tree", + "path": "Tree", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "aws-ecs-fargate-efs": { + "id": "aws-ecs-fargate-efs", + "path": "aws-ecs-fargate-efs", + "children": { + "Vpc": { + "id": "Vpc", + "path": "aws-ecs-fargate-efs/Vpc", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-fargate-efs/Vpc/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::VPC", + "aws:cdk:cloudformation:props": { + "cidrBlock": "10.0.0.0/16", + "enableDnsHostnames": true, + "enableDnsSupport": true, + "instanceTenancy": "default", + "tags": [ + { + "key": "Name", + "value": "aws-ecs-fargate-efs/Vpc" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.CfnVPC", + "version": "0.0.0" + } + }, + "PublicSubnet1": { + "id": "PublicSubnet1", + "path": "aws-ecs-fargate-efs/Vpc/PublicSubnet1", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-ecs-fargate-efs/Vpc/PublicSubnet1/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "Vpc8378EB38" + }, + "availabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.0.0/18", + "mapPublicIpOnLaunch": true, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Public" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Public" + }, + { + "key": "Name", + "value": "aws-ecs-fargate-efs/Vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.CfnSubnet", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-ecs-fargate-efs/Vpc/PublicSubnet1/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-ecs-fargate-efs/Vpc/PublicSubnet1/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "Vpc8378EB38" + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-fargate-efs/Vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.CfnRouteTable", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-ecs-fargate-efs/Vpc/PublicSubnet1/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "VpcPublicSubnet1RouteTable6C95E38E" + }, + "subnetId": { + "Ref": "VpcPublicSubnet1Subnet5C2D37C4" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.CfnSubnetRouteTableAssociation", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-ecs-fargate-efs/Vpc/PublicSubnet1/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "VpcPublicSubnet1RouteTable6C95E38E" + }, + "destinationCidrBlock": "0.0.0.0/0", + "gatewayId": { + "Ref": "VpcIGWD7BA715C" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.CfnRoute", + "version": "0.0.0" + } + }, + "EIP": { + "id": "EIP", + "path": "aws-ecs-fargate-efs/Vpc/PublicSubnet1/EIP", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::EIP", + "aws:cdk:cloudformation:props": { + "domain": "vpc", + "tags": [ + { + "key": "Name", + "value": "aws-ecs-fargate-efs/Vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.CfnEIP", + "version": "0.0.0" + } + }, + "NATGateway": { + "id": "NATGateway", + "path": "aws-ecs-fargate-efs/Vpc/PublicSubnet1/NATGateway", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::NatGateway", + "aws:cdk:cloudformation:props": { + "subnetId": { + "Ref": "VpcPublicSubnet1Subnet5C2D37C4" + }, + "allocationId": { + "Fn::GetAtt": [ + "VpcPublicSubnet1EIPD7E02669", + "AllocationId" + ] + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-fargate-efs/Vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.CfnNatGateway", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.PublicSubnet", + "version": "0.0.0" + } + }, + "PublicSubnet2": { + "id": "PublicSubnet2", + "path": "aws-ecs-fargate-efs/Vpc/PublicSubnet2", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-ecs-fargate-efs/Vpc/PublicSubnet2/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "Vpc8378EB38" + }, + "availabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.64.0/18", + "mapPublicIpOnLaunch": true, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Public" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Public" + }, + { + "key": "Name", + "value": "aws-ecs-fargate-efs/Vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.CfnSubnet", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-ecs-fargate-efs/Vpc/PublicSubnet2/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-ecs-fargate-efs/Vpc/PublicSubnet2/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "Vpc8378EB38" + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-fargate-efs/Vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.CfnRouteTable", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-ecs-fargate-efs/Vpc/PublicSubnet2/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "VpcPublicSubnet2RouteTable94F7E489" + }, + "subnetId": { + "Ref": "VpcPublicSubnet2Subnet691E08A3" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.CfnSubnetRouteTableAssociation", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-ecs-fargate-efs/Vpc/PublicSubnet2/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "VpcPublicSubnet2RouteTable94F7E489" + }, + "destinationCidrBlock": "0.0.0.0/0", + "gatewayId": { + "Ref": "VpcIGWD7BA715C" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.CfnRoute", + "version": "0.0.0" + } + }, + "EIP": { + "id": "EIP", + "path": "aws-ecs-fargate-efs/Vpc/PublicSubnet2/EIP", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::EIP", + "aws:cdk:cloudformation:props": { + "domain": "vpc", + "tags": [ + { + "key": "Name", + "value": "aws-ecs-fargate-efs/Vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.CfnEIP", + "version": "0.0.0" + } + }, + "NATGateway": { + "id": "NATGateway", + "path": "aws-ecs-fargate-efs/Vpc/PublicSubnet2/NATGateway", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::NatGateway", + "aws:cdk:cloudformation:props": { + "subnetId": { + "Ref": "VpcPublicSubnet2Subnet691E08A3" + }, + "allocationId": { + "Fn::GetAtt": [ + "VpcPublicSubnet2EIP3C605A87", + "AllocationId" + ] + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-fargate-efs/Vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.CfnNatGateway", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.PublicSubnet", + "version": "0.0.0" + } + }, + "PrivateSubnet1": { + "id": "PrivateSubnet1", + "path": "aws-ecs-fargate-efs/Vpc/PrivateSubnet1", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-ecs-fargate-efs/Vpc/PrivateSubnet1/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "Vpc8378EB38" + }, + "availabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.128.0/18", + "mapPublicIpOnLaunch": false, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Private" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Private" + }, + { + "key": "Name", + "value": "aws-ecs-fargate-efs/Vpc/PrivateSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.CfnSubnet", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-ecs-fargate-efs/Vpc/PrivateSubnet1/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-ecs-fargate-efs/Vpc/PrivateSubnet1/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "Vpc8378EB38" + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-fargate-efs/Vpc/PrivateSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.CfnRouteTable", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-ecs-fargate-efs/Vpc/PrivateSubnet1/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "VpcPrivateSubnet1RouteTableB2C5B500" + }, + "subnetId": { + "Ref": "VpcPrivateSubnet1Subnet536B997A" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.CfnSubnetRouteTableAssociation", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-ecs-fargate-efs/Vpc/PrivateSubnet1/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "VpcPrivateSubnet1RouteTableB2C5B500" + }, + "destinationCidrBlock": "0.0.0.0/0", + "natGatewayId": { + "Ref": "VpcPublicSubnet1NATGateway4D7517AA" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.CfnRoute", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.PrivateSubnet", + "version": "0.0.0" + } + }, + "PrivateSubnet2": { + "id": "PrivateSubnet2", + "path": "aws-ecs-fargate-efs/Vpc/PrivateSubnet2", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-ecs-fargate-efs/Vpc/PrivateSubnet2/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "Vpc8378EB38" + }, + "availabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.192.0/18", + "mapPublicIpOnLaunch": false, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Private" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Private" + }, + { + "key": "Name", + "value": "aws-ecs-fargate-efs/Vpc/PrivateSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.CfnSubnet", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-ecs-fargate-efs/Vpc/PrivateSubnet2/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-ecs-fargate-efs/Vpc/PrivateSubnet2/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "Vpc8378EB38" + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-fargate-efs/Vpc/PrivateSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.CfnRouteTable", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-ecs-fargate-efs/Vpc/PrivateSubnet2/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "VpcPrivateSubnet2RouteTableA678073B" + }, + "subnetId": { + "Ref": "VpcPrivateSubnet2Subnet3788AAA1" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.CfnSubnetRouteTableAssociation", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-ecs-fargate-efs/Vpc/PrivateSubnet2/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "VpcPrivateSubnet2RouteTableA678073B" + }, + "destinationCidrBlock": "0.0.0.0/0", + "natGatewayId": { + "Ref": "VpcPublicSubnet2NATGateway9182C01D" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.CfnRoute", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.PrivateSubnet", + "version": "0.0.0" + } + }, + "IGW": { + "id": "IGW", + "path": "aws-ecs-fargate-efs/Vpc/IGW", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::InternetGateway", + "aws:cdk:cloudformation:props": { + "tags": [ + { + "key": "Name", + "value": "aws-ecs-fargate-efs/Vpc" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.CfnInternetGateway", + "version": "0.0.0" + } + }, + "VPCGW": { + "id": "VPCGW", + "path": "aws-ecs-fargate-efs/Vpc/VPCGW", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::VPCGatewayAttachment", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "Vpc8378EB38" + }, + "internetGatewayId": { + "Ref": "VpcIGWD7BA715C" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.CfnVPCGatewayAttachment", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.Vpc", + "version": "0.0.0" + } + }, + "etcdata": { + "id": "etcdata", + "path": "aws-ecs-fargate-efs/etcdata", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-fargate-efs/etcdata/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EFS::FileSystem", + "aws:cdk:cloudformation:props": { + "fileSystemTags": [ + { + "key": "Name", + "value": "aws-ecs-fargate-efs/etcdata" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-efs.CfnFileSystem", + "version": "0.0.0" + } + }, + "EfsSecurityGroup": { + "id": "EfsSecurityGroup", + "path": "aws-ecs-fargate-efs/etcdata/EfsSecurityGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-fargate-efs/etcdata/EfsSecurityGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroup", + "aws:cdk:cloudformation:props": { + "groupDescription": "aws-ecs-fargate-efs/etcdata/EfsSecurityGroup", + "securityGroupEgress": [ + { + "cidrIp": "0.0.0.0/0", + "description": "Allow all outbound traffic by default", + "ipProtocol": "-1" + } + ], + "tags": [ + { + "key": "Name", + "value": "aws-ecs-fargate-efs/etcdata" + } + ], + "vpcId": { + "Ref": "Vpc8378EB38" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.CfnSecurityGroup", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ec2.SecurityGroup", + "version": "0.0.0" + } + }, + "EfsMountTarget1": { + "id": "EfsMountTarget1", + "path": "aws-ecs-fargate-efs/etcdata/EfsMountTarget1", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EFS::MountTarget", + "aws:cdk:cloudformation:props": { + "fileSystemId": { + "Ref": "etcdata80702D7D" + }, + "securityGroups": [ + { + "Fn::GetAtt": [ + "etcdataEfsSecurityGroupB0A9B014", + "GroupId" + ] + } + ], + "subnetId": { + "Ref": "VpcPrivateSubnet1Subnet536B997A" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-efs.CfnMountTarget", + "version": "0.0.0" + } + }, + "EfsMountTarget2": { + "id": "EfsMountTarget2", + "path": "aws-ecs-fargate-efs/etcdata/EfsMountTarget2", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EFS::MountTarget", + "aws:cdk:cloudformation:props": { + "fileSystemId": { + "Ref": "etcdata80702D7D" + }, + "securityGroups": [ + { + "Fn::GetAtt": [ + "etcdataEfsSecurityGroupB0A9B014", + "GroupId" + ] + } + ], + "subnetId": { + "Ref": "VpcPrivateSubnet2Subnet3788AAA1" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-efs.CfnMountTarget", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-efs.FileSystem", + "version": "0.0.0" + } + }, + "TaskDef": { + "id": "TaskDef", + "path": "aws-ecs-fargate-efs/TaskDef", + "children": { + "TaskRole": { + "id": "TaskRole", + "path": "aws-ecs-fargate-efs/TaskDef/TaskRole", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-fargate-efs/TaskDef/TaskRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-iam.CfnRole", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-iam.Role", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-ecs-fargate-efs/TaskDef/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::TaskDefinition", + "aws:cdk:cloudformation:props": { + "containerDefinitions": [ + { + "essential": true, + "image": "amazon/amazon-ecs-sample", + "name": "web" + } + ], + "cpu": "256", + "family": "awsecsfargateefsTaskDefBFA2D408", + "memory": "512", + "networkMode": "awsvpc", + "requiresCompatibilities": [ + "FARGATE" + ], + "taskRoleArn": { + "Fn::GetAtt": [ + "TaskDefTaskRole1EDB4A67", + "Arn" + ] + }, + "volumes": [ + { + "name": "somedata", + "efsVolumeConfiguration": { + "filesystemId": { + "Ref": "etcdata80702D7D" + } + } + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ecs.CfnTaskDefinition", + "version": "0.0.0" + } + }, + "web": { + "id": "web", + "path": "aws-ecs-fargate-efs/TaskDef/web", + "constructInfo": { + "fqn": "@aws-cdk/aws-ecs.ContainerDefinition", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-ecs.FargateTaskDefinition", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Stack", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.App", + "version": "0.0.0" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-efs/package.json b/packages/@aws-cdk/aws-efs/package.json index 73151d18d3aff..8339b3a25e5f7 100644 --- a/packages/@aws-cdk/aws-efs/package.json +++ b/packages/@aws-cdk/aws-efs/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-eks-legacy/package.json b/packages/@aws-cdk/aws-eks-legacy/package.json index ede28f6869cdf..248dea00fccca 100644 --- a/packages/@aws-cdk/aws-eks-legacy/package.json +++ b/packages/@aws-cdk/aws-eks-legacy/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -79,7 +79,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-eks/package.json b/packages/@aws-cdk/aws-eks/package.json index 6585171d0ea0c..fbf6230017ee6 100644 --- a/packages/@aws-cdk/aws-eks/package.json +++ b/packages/@aws-cdk/aws-eks/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/aws-lambda": "^8.10.93", diff --git a/packages/@aws-cdk/aws-eks/test/eks-helm-asset.integ.snapshot/aws-cdk-eks-helm-test.template.json b/packages/@aws-cdk/aws-eks/test/eks-helm-asset.integ.snapshot/aws-cdk-eks-helm-test.template.json index 8b8ca3e4799c8..3e37a7c76af3a 100644 --- a/packages/@aws-cdk/aws-eks/test/eks-helm-asset.integ.snapshot/aws-cdk-eks-helm-test.template.json +++ b/packages/@aws-cdk/aws-eks/test/eks-helm-asset.integ.snapshot/aws-cdk-eks-helm-test.template.json @@ -951,6 +951,37 @@ "UpdateReplacePolicy": "Delete", "DeletionPolicy": "Delete" }, + "Clustercharttestocichart9C188967": { + "Type": "Custom::AWSCDK-EKS-HelmChart", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "awscdkawseksKubectlProviderNestedStackawscdkawseksKubectlProviderNestedStackResourceA7AEBA6B", + "Outputs.awscdkekshelmtestawscdkawseksKubectlProviderframeworkonEvent9D93C644Arn" + ] + }, + "ClusterName": { + "Ref": "Cluster9EE0221C" + }, + "RoleArn": { + "Fn::GetAtt": [ + "ClusterCreationRole360249B6", + "Arn" + ] + }, + "Release": "s3-chart", + "Chart": "s3-chart", + "Version": "v0.0.19", + "Namespace": "ack-system", + "Repository": "oci://public.ecr.aws/aws-controllers-k8s/s3-chart", + "CreateNamespace": true + }, + "DependsOn": [ + "ClusterKubectlReadyBarrier200052AF" + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, "awscdkawseksClusterResourceProviderNestedStackawscdkawseksClusterResourceProviderNestedStackResource9827C454": { "Type": "AWS::CloudFormation::Stack", "Properties": { @@ -1047,7 +1078,7 @@ }, "/", { - "Ref": "AssetParametersa5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06cS3Bucket6FD55E1C" + "Ref": "AssetParameters52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820aS3Bucket1AEB1014" }, "/", { @@ -1057,7 +1088,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParametersa5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06cS3VersionKeyF7A8F3EE" + "Ref": "AssetParameters52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820aS3VersionKey333BF6FA" } ] } @@ -1070,7 +1101,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParametersa5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06cS3VersionKeyF7A8F3EE" + "Ref": "AssetParameters52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820aS3VersionKey333BF6FA" } ] } @@ -1095,11 +1126,11 @@ "referencetoawscdkekshelmtestAssetParametersd65fbdc11b108e0386ed8577c454d4544f6d4e7960f84a0d2e211478d6324dbfS3Bucket5EAB45FARef": { "Ref": "AssetParametersd65fbdc11b108e0386ed8577c454d4544f6d4e7960f84a0d2e211478d6324dbfS3BucketBFD29DFB" }, - "referencetoawscdkekshelmtestAssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3BucketC59436A3Ref": { - "Ref": "AssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3Bucket4CD5FFC3" + "referencetoawscdkekshelmtestAssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3BucketEC27A5F2Ref": { + "Ref": "AssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3Bucket9BDF5881" }, - "referencetoawscdkekshelmtestAssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3VersionKey5ECB4296Ref": { - "Ref": "AssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3VersionKeyE06BA291" + "referencetoawscdkekshelmtestAssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3VersionKey5772F015Ref": { + "Ref": "AssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3VersionKey63AC53A2" }, "referencetoawscdkekshelmtestVpcPrivateSubnet1Subnet3D2B5C0BRef": { "Ref": "VpcPrivateSubnet1Subnet536B997A" @@ -1119,11 +1150,11 @@ "referencetoawscdkekshelmtestAssetParameters92c405c4551a308bcdd55823f8b16268bd3c38fd2a011edaaf3ed72a80f557c4S3VersionKey149985B9Ref": { "Ref": "AssetParameters92c405c4551a308bcdd55823f8b16268bd3c38fd2a011edaaf3ed72a80f557c4S3VersionKeyEF78B2AD" }, - "referencetoawscdkekshelmtestAssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3Bucket355FB348Ref": { - "Ref": "AssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3BucketD3288998" + "referencetoawscdkekshelmtestAssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3Bucket8229D3A2Ref": { + "Ref": "AssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3Bucket83B8778F" }, - "referencetoawscdkekshelmtestAssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3VersionKeyA7F169F4Ref": { - "Ref": "AssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3VersionKeyB00C0565" + "referencetoawscdkekshelmtestAssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3VersionKey0C91EE3ERef": { + "Ref": "AssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3VersionKeyADF6A055" }, "referencetoawscdkekshelmtestAssetParameters8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9S3BucketAF49DDE8Ref": { "Ref": "AssetParameters8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9S3Bucket40DFAF90" @@ -1224,17 +1255,17 @@ "Type": "String", "Description": "Artifact hash for asset \"8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9\"" }, - "AssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3Bucket4CD5FFC3": { + "AssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3Bucket9BDF5881": { "Type": "String", - "Description": "S3 bucket for asset \"a70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8\"" + "Description": "S3 bucket for asset \"07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963\"" }, - "AssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3VersionKeyE06BA291": { + "AssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3VersionKey63AC53A2": { "Type": "String", - "Description": "S3 key for asset version \"a70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8\"" + "Description": "S3 key for asset version \"07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963\"" }, - "AssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8ArtifactHashA4AB6609": { + "AssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963ArtifactHash41646C3F": { "Type": "String", - "Description": "Artifact hash for asset \"a70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8\"" + "Description": "Artifact hash for asset \"07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963\"" }, "AssetParameters92c405c4551a308bcdd55823f8b16268bd3c38fd2a011edaaf3ed72a80f557c4S3BucketC479E94B": { "Type": "String", @@ -1248,17 +1279,17 @@ "Type": "String", "Description": "Artifact hash for asset \"92c405c4551a308bcdd55823f8b16268bd3c38fd2a011edaaf3ed72a80f557c4\"" }, - "AssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3BucketD3288998": { + "AssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3Bucket83B8778F": { "Type": "String", - "Description": "S3 bucket for asset \"ea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03e\"" + "Description": "S3 bucket for asset \"c6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffed\"" }, - "AssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3VersionKeyB00C0565": { + "AssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3VersionKeyADF6A055": { "Type": "String", - "Description": "S3 key for asset version \"ea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03e\"" + "Description": "S3 key for asset version \"c6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffed\"" }, - "AssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eArtifactHash4654D012": { + "AssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedArtifactHash2C972BAF": { "Type": "String", - "Description": "Artifact hash for asset \"ea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03e\"" + "Description": "Artifact hash for asset \"c6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffed\"" }, "AssetParametersd65fbdc11b108e0386ed8577c454d4544f6d4e7960f84a0d2e211478d6324dbfS3BucketBFD29DFB": { "Type": "String", @@ -1284,17 +1315,17 @@ "Type": "String", "Description": "Artifact hash for asset \"7d7713018f4039aec7dbac05e1b331f850d1c0985a1159bf0a0b5a38a850987c\"" }, - "AssetParametersa5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06cS3Bucket6FD55E1C": { + "AssetParameters52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820aS3Bucket1AEB1014": { "Type": "String", - "Description": "S3 bucket for asset \"a5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06c\"" + "Description": "S3 bucket for asset \"52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820a\"" }, - "AssetParametersa5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06cS3VersionKeyF7A8F3EE": { + "AssetParameters52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820aS3VersionKey333BF6FA": { "Type": "String", - "Description": "S3 key for asset version \"a5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06c\"" + "Description": "S3 key for asset version \"52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820a\"" }, - "AssetParametersa5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06cArtifactHash835B57D9": { + "AssetParameters52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820aArtifactHash742629B5": { "Type": "String", - "Description": "Artifact hash for asset \"a5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06c\"" + "Description": "Artifact hash for asset \"52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820a\"" } } } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-eks/test/eks-helm-asset.integ.snapshot/awscdkekshelmtestawscdkawseksKubectlProvider207F42E4.nested.template.json b/packages/@aws-cdk/aws-eks/test/eks-helm-asset.integ.snapshot/awscdkekshelmtestawscdkawseksKubectlProvider207F42E4.nested.template.json index 12b472749f4ad..dae84da77d906 100644 --- a/packages/@aws-cdk/aws-eks/test/eks-helm-asset.integ.snapshot/awscdkekshelmtestawscdkawseksKubectlProvider207F42E4.nested.template.json +++ b/packages/@aws-cdk/aws-eks/test/eks-helm-asset.integ.snapshot/awscdkekshelmtestawscdkawseksKubectlProvider207F42E4.nested.template.json @@ -131,7 +131,7 @@ "Properties": { "Code": { "S3Bucket": { - "Ref": "referencetoawscdkekshelmtestAssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3BucketC59436A3Ref" + "Ref": "referencetoawscdkekshelmtestAssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3BucketEC27A5F2Ref" }, "S3Key": { "Fn::Join": [ @@ -144,7 +144,7 @@ "Fn::Split": [ "||", { - "Ref": "referencetoawscdkekshelmtestAssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3VersionKey5ECB4296Ref" + "Ref": "referencetoawscdkekshelmtestAssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3VersionKey5772F015Ref" } ] } @@ -157,7 +157,7 @@ "Fn::Split": [ "||", { - "Ref": "referencetoawscdkekshelmtestAssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3VersionKey5ECB4296Ref" + "Ref": "referencetoawscdkekshelmtestAssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3VersionKey5772F015Ref" } ] } @@ -256,7 +256,7 @@ "Properties": { "Content": { "S3Bucket": { - "Ref": "referencetoawscdkekshelmtestAssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3Bucket355FB348Ref" + "Ref": "referencetoawscdkekshelmtestAssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3Bucket8229D3A2Ref" }, "S3Key": { "Fn::Join": [ @@ -269,7 +269,7 @@ "Fn::Split": [ "||", { - "Ref": "referencetoawscdkekshelmtestAssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3VersionKeyA7F169F4Ref" + "Ref": "referencetoawscdkekshelmtestAssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3VersionKey0C91EE3ERef" } ] } @@ -282,7 +282,7 @@ "Fn::Split": [ "||", { - "Ref": "referencetoawscdkekshelmtestAssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3VersionKeyA7F169F4Ref" + "Ref": "referencetoawscdkekshelmtestAssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3VersionKey0C91EE3ERef" } ] } @@ -483,10 +483,10 @@ "referencetoawscdkekshelmtestAssetParametersd65fbdc11b108e0386ed8577c454d4544f6d4e7960f84a0d2e211478d6324dbfS3Bucket5EAB45FARef": { "Type": "String" }, - "referencetoawscdkekshelmtestAssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3BucketC59436A3Ref": { + "referencetoawscdkekshelmtestAssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3BucketEC27A5F2Ref": { "Type": "String" }, - "referencetoawscdkekshelmtestAssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3VersionKey5ECB4296Ref": { + "referencetoawscdkekshelmtestAssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3VersionKey5772F015Ref": { "Type": "String" }, "referencetoawscdkekshelmtestVpcPrivateSubnet1Subnet3D2B5C0BRef": { @@ -504,10 +504,10 @@ "referencetoawscdkekshelmtestAssetParameters92c405c4551a308bcdd55823f8b16268bd3c38fd2a011edaaf3ed72a80f557c4S3VersionKey149985B9Ref": { "Type": "String" }, - "referencetoawscdkekshelmtestAssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3Bucket355FB348Ref": { + "referencetoawscdkekshelmtestAssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3Bucket8229D3A2Ref": { "Type": "String" }, - "referencetoawscdkekshelmtestAssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3VersionKeyA7F169F4Ref": { + "referencetoawscdkekshelmtestAssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3VersionKey0C91EE3ERef": { "Type": "String" }, "referencetoawscdkekshelmtestAssetParameters8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9S3BucketAF49DDE8Ref": { diff --git a/packages/@aws-cdk/aws-eks/test/eks-helm-asset.integ.snapshot/manifest.json b/packages/@aws-cdk/aws-eks/test/eks-helm-asset.integ.snapshot/manifest.json index c4c81b8c83a3b..095e31a48fc05 100644 --- a/packages/@aws-cdk/aws-eks/test/eks-helm-asset.integ.snapshot/manifest.json +++ b/packages/@aws-cdk/aws-eks/test/eks-helm-asset.integ.snapshot/manifest.json @@ -56,13 +56,13 @@ { "type": "aws:cdk:asset", "data": { - "path": "asset.a70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8", - "id": "a70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8", + "path": "asset.07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963", + "id": "07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963", "packaging": "zip", - "sourceHash": "a70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8", - "s3BucketParameter": "AssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3Bucket4CD5FFC3", - "s3KeyParameter": "AssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3VersionKeyE06BA291", - "artifactHashParameter": "AssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8ArtifactHashA4AB6609" + "sourceHash": "07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963", + "s3BucketParameter": "AssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3Bucket9BDF5881", + "s3KeyParameter": "AssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3VersionKey63AC53A2", + "artifactHashParameter": "AssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963ArtifactHash41646C3F" } }, { @@ -80,13 +80,13 @@ { "type": "aws:cdk:asset", "data": { - "path": "asset.ea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03e.zip", - "id": "ea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03e", + "path": "asset.c6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffed.zip", + "id": "c6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffed", "packaging": "file", - "sourceHash": "ea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03e", - "s3BucketParameter": "AssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3BucketD3288998", - "s3KeyParameter": "AssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3VersionKeyB00C0565", - "artifactHashParameter": "AssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eArtifactHash4654D012" + "sourceHash": "c6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffed", + "s3BucketParameter": "AssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3Bucket83B8778F", + "s3KeyParameter": "AssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3VersionKeyADF6A055", + "artifactHashParameter": "AssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedArtifactHash2C972BAF" } }, { @@ -117,12 +117,12 @@ "type": "aws:cdk:asset", "data": { "path": "awscdkekshelmtestawscdkawseksKubectlProvider207F42E4.nested.template.json", - "id": "a5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06c", + "id": "52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820a", "packaging": "file", - "sourceHash": "a5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06c", - "s3BucketParameter": "AssetParametersa5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06cS3Bucket6FD55E1C", - "s3KeyParameter": "AssetParametersa5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06cS3VersionKeyF7A8F3EE", - "artifactHashParameter": "AssetParametersa5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06cArtifactHash835B57D9" + "sourceHash": "52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820a", + "s3BucketParameter": "AssetParameters52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820aS3Bucket1AEB1014", + "s3KeyParameter": "AssetParameters52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820aS3VersionKey333BF6FA", + "artifactHashParameter": "AssetParameters52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820aArtifactHash742629B5" } } ], @@ -330,6 +330,12 @@ "data": "Clustercharttestchart9FD698EB" } ], + "/aws-cdk-eks-helm-test/Cluster/chart-test-oci-chart/Resource/Default": [ + { + "type": "aws:cdk:logicalId", + "data": "Clustercharttestocichart9C188967" + } + ], "/aws-cdk-eks-helm-test/@aws-cdk--aws-eks.ClusterResourceProvider/NodeProxyAgentLayer/Resource": [ { "type": "aws:cdk:logicalId", @@ -558,22 +564,22 @@ "data": "AssetParameters8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9ArtifactHash26B5BCAA" } ], - "/aws-cdk-eks-helm-test/AssetParameters/a70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8/S3Bucket": [ + "/aws-cdk-eks-helm-test/AssetParameters/07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963/S3Bucket": [ { "type": "aws:cdk:logicalId", - "data": "AssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3Bucket4CD5FFC3" + "data": "AssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3Bucket9BDF5881" } ], - "/aws-cdk-eks-helm-test/AssetParameters/a70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8/S3VersionKey": [ + "/aws-cdk-eks-helm-test/AssetParameters/07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963/S3VersionKey": [ { "type": "aws:cdk:logicalId", - "data": "AssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3VersionKeyE06BA291" + "data": "AssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3VersionKey63AC53A2" } ], - "/aws-cdk-eks-helm-test/AssetParameters/a70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8/ArtifactHash": [ + "/aws-cdk-eks-helm-test/AssetParameters/07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963/ArtifactHash": [ { "type": "aws:cdk:logicalId", - "data": "AssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8ArtifactHashA4AB6609" + "data": "AssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963ArtifactHash41646C3F" } ], "/aws-cdk-eks-helm-test/AssetParameters/92c405c4551a308bcdd55823f8b16268bd3c38fd2a011edaaf3ed72a80f557c4/S3Bucket": [ @@ -594,22 +600,22 @@ "data": "AssetParameters92c405c4551a308bcdd55823f8b16268bd3c38fd2a011edaaf3ed72a80f557c4ArtifactHash4190C3A3" } ], - "/aws-cdk-eks-helm-test/AssetParameters/ea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03e/S3Bucket": [ + "/aws-cdk-eks-helm-test/AssetParameters/c6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffed/S3Bucket": [ { "type": "aws:cdk:logicalId", - "data": "AssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3BucketD3288998" + "data": "AssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3Bucket83B8778F" } ], - "/aws-cdk-eks-helm-test/AssetParameters/ea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03e/S3VersionKey": [ + "/aws-cdk-eks-helm-test/AssetParameters/c6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffed/S3VersionKey": [ { "type": "aws:cdk:logicalId", - "data": "AssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3VersionKeyB00C0565" + "data": "AssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3VersionKeyADF6A055" } ], - "/aws-cdk-eks-helm-test/AssetParameters/ea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03e/ArtifactHash": [ + "/aws-cdk-eks-helm-test/AssetParameters/c6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffed/ArtifactHash": [ { "type": "aws:cdk:logicalId", - "data": "AssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eArtifactHash4654D012" + "data": "AssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedArtifactHash2C972BAF" } ], "/aws-cdk-eks-helm-test/AssetParameters/d65fbdc11b108e0386ed8577c454d4544f6d4e7960f84a0d2e211478d6324dbf/S3Bucket": [ @@ -648,22 +654,22 @@ "data": "AssetParameters7d7713018f4039aec7dbac05e1b331f850d1c0985a1159bf0a0b5a38a850987cArtifactHash663712D3" } ], - "/aws-cdk-eks-helm-test/AssetParameters/a5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06c/S3Bucket": [ + "/aws-cdk-eks-helm-test/AssetParameters/52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820a/S3Bucket": [ { "type": "aws:cdk:logicalId", - "data": "AssetParametersa5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06cS3Bucket6FD55E1C" + "data": "AssetParameters52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820aS3Bucket1AEB1014" } ], - "/aws-cdk-eks-helm-test/AssetParameters/a5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06c/S3VersionKey": [ + "/aws-cdk-eks-helm-test/AssetParameters/52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820a/S3VersionKey": [ { "type": "aws:cdk:logicalId", - "data": "AssetParametersa5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06cS3VersionKeyF7A8F3EE" + "data": "AssetParameters52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820aS3VersionKey333BF6FA" } ], - "/aws-cdk-eks-helm-test/AssetParameters/a5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06c/ArtifactHash": [ + "/aws-cdk-eks-helm-test/AssetParameters/52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820a/ArtifactHash": [ { "type": "aws:cdk:logicalId", - "data": "AssetParametersa5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06cArtifactHash835B57D9" + "data": "AssetParameters52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820aArtifactHash742629B5" } ], "/aws-cdk-eks-helm-test/@aws-cdk--aws-eks.KubectlProvider/Handler/ServiceRole/Resource": [ @@ -738,16 +744,16 @@ "data": "referencetoawscdkekshelmtestAssetParametersd65fbdc11b108e0386ed8577c454d4544f6d4e7960f84a0d2e211478d6324dbfS3Bucket5EAB45FARef" } ], - "/aws-cdk-eks-helm-test/@aws-cdk--aws-eks.KubectlProvider/reference-to-awscdkekshelmtestAssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3BucketC59436A3Ref": [ + "/aws-cdk-eks-helm-test/@aws-cdk--aws-eks.KubectlProvider/reference-to-awscdkekshelmtestAssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3BucketEC27A5F2Ref": [ { "type": "aws:cdk:logicalId", - "data": "referencetoawscdkekshelmtestAssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3BucketC59436A3Ref" + "data": "referencetoawscdkekshelmtestAssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3BucketEC27A5F2Ref" } ], - "/aws-cdk-eks-helm-test/@aws-cdk--aws-eks.KubectlProvider/reference-to-awscdkekshelmtestAssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3VersionKey5ECB4296Ref": [ + "/aws-cdk-eks-helm-test/@aws-cdk--aws-eks.KubectlProvider/reference-to-awscdkekshelmtestAssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3VersionKey5772F015Ref": [ { "type": "aws:cdk:logicalId", - "data": "referencetoawscdkekshelmtestAssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3VersionKey5ECB4296Ref" + "data": "referencetoawscdkekshelmtestAssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3VersionKey5772F015Ref" } ], "/aws-cdk-eks-helm-test/@aws-cdk--aws-eks.KubectlProvider/reference-to-awscdkekshelmtestVpcPrivateSubnet1Subnet3D2B5C0BRef": [ @@ -780,16 +786,16 @@ "data": "referencetoawscdkekshelmtestAssetParameters92c405c4551a308bcdd55823f8b16268bd3c38fd2a011edaaf3ed72a80f557c4S3VersionKey149985B9Ref" } ], - "/aws-cdk-eks-helm-test/@aws-cdk--aws-eks.KubectlProvider/reference-to-awscdkekshelmtestAssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3Bucket355FB348Ref": [ + "/aws-cdk-eks-helm-test/@aws-cdk--aws-eks.KubectlProvider/reference-to-awscdkekshelmtestAssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3Bucket8229D3A2Ref": [ { "type": "aws:cdk:logicalId", - "data": "referencetoawscdkekshelmtestAssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3Bucket355FB348Ref" + "data": "referencetoawscdkekshelmtestAssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3Bucket8229D3A2Ref" } ], - "/aws-cdk-eks-helm-test/@aws-cdk--aws-eks.KubectlProvider/reference-to-awscdkekshelmtestAssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3VersionKeyA7F169F4Ref": [ + "/aws-cdk-eks-helm-test/@aws-cdk--aws-eks.KubectlProvider/reference-to-awscdkekshelmtestAssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3VersionKey0C91EE3ERef": [ { "type": "aws:cdk:logicalId", - "data": "referencetoawscdkekshelmtestAssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3VersionKeyA7F169F4Ref" + "data": "referencetoawscdkekshelmtestAssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3VersionKey0C91EE3ERef" } ], "/aws-cdk-eks-helm-test/@aws-cdk--aws-eks.KubectlProvider/reference-to-awscdkekshelmtestAssetParameters8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9S3BucketAF49DDE8Ref": [ diff --git a/packages/@aws-cdk/aws-eks/test/eks-helm-asset.integ.snapshot/tree.json b/packages/@aws-cdk/aws-eks/test/eks-helm-asset.integ.snapshot/tree.json index 9ee3c2aef9ca7..43dc806ddf96e 100644 --- a/packages/@aws-cdk/aws-eks/test/eks-helm-asset.integ.snapshot/tree.json +++ b/packages/@aws-cdk/aws-eks/test/eks-helm-asset.integ.snapshot/tree.json @@ -1191,6 +1191,34 @@ "fqn": "@aws-cdk/aws-eks.HelmChart", "version": "0.0.0" } + }, + "chart-test-oci-chart": { + "id": "chart-test-oci-chart", + "path": "aws-cdk-eks-helm-test/Cluster/chart-test-oci-chart", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-cdk-eks-helm-test/Cluster/chart-test-oci-chart/Resource", + "children": { + "Default": { + "id": "Default", + "path": "aws-cdk-eks-helm-test/Cluster/chart-test-oci-chart/Resource/Default", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CustomResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-eks.HelmChart", + "version": "0.0.0" + } } }, "constructInfo": { @@ -2864,13 +2892,13 @@ "version": "0.0.0" } }, - "a70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8": { - "id": "a70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8", - "path": "aws-cdk-eks-helm-test/AssetParameters/a70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8", + "07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963": { + "id": "07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963", + "path": "aws-cdk-eks-helm-test/AssetParameters/07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963", "children": { "S3Bucket": { "id": "S3Bucket", - "path": "aws-cdk-eks-helm-test/AssetParameters/a70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8/S3Bucket", + "path": "aws-cdk-eks-helm-test/AssetParameters/07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963/S3Bucket", "constructInfo": { "fqn": "@aws-cdk/core.CfnParameter", "version": "0.0.0" @@ -2878,7 +2906,7 @@ }, "S3VersionKey": { "id": "S3VersionKey", - "path": "aws-cdk-eks-helm-test/AssetParameters/a70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8/S3VersionKey", + "path": "aws-cdk-eks-helm-test/AssetParameters/07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963/S3VersionKey", "constructInfo": { "fqn": "@aws-cdk/core.CfnParameter", "version": "0.0.0" @@ -2886,7 +2914,7 @@ }, "ArtifactHash": { "id": "ArtifactHash", - "path": "aws-cdk-eks-helm-test/AssetParameters/a70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8/ArtifactHash", + "path": "aws-cdk-eks-helm-test/AssetParameters/07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963/ArtifactHash", "constructInfo": { "fqn": "@aws-cdk/core.CfnParameter", "version": "0.0.0" @@ -2932,13 +2960,13 @@ "version": "0.0.0" } }, - "ea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03e": { - "id": "ea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03e", - "path": "aws-cdk-eks-helm-test/AssetParameters/ea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03e", + "c6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffed": { + "id": "c6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffed", + "path": "aws-cdk-eks-helm-test/AssetParameters/c6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffed", "children": { "S3Bucket": { "id": "S3Bucket", - "path": "aws-cdk-eks-helm-test/AssetParameters/ea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03e/S3Bucket", + "path": "aws-cdk-eks-helm-test/AssetParameters/c6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffed/S3Bucket", "constructInfo": { "fqn": "@aws-cdk/core.CfnParameter", "version": "0.0.0" @@ -2946,7 +2974,7 @@ }, "S3VersionKey": { "id": "S3VersionKey", - "path": "aws-cdk-eks-helm-test/AssetParameters/ea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03e/S3VersionKey", + "path": "aws-cdk-eks-helm-test/AssetParameters/c6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffed/S3VersionKey", "constructInfo": { "fqn": "@aws-cdk/core.CfnParameter", "version": "0.0.0" @@ -2954,7 +2982,7 @@ }, "ArtifactHash": { "id": "ArtifactHash", - "path": "aws-cdk-eks-helm-test/AssetParameters/ea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03e/ArtifactHash", + "path": "aws-cdk-eks-helm-test/AssetParameters/c6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffed/ArtifactHash", "constructInfo": { "fqn": "@aws-cdk/core.CfnParameter", "version": "0.0.0" @@ -3034,13 +3062,13 @@ "version": "0.0.0" } }, - "a5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06c": { - "id": "a5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06c", - "path": "aws-cdk-eks-helm-test/AssetParameters/a5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06c", + "52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820a": { + "id": "52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820a", + "path": "aws-cdk-eks-helm-test/AssetParameters/52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820a", "children": { "S3Bucket": { "id": "S3Bucket", - "path": "aws-cdk-eks-helm-test/AssetParameters/a5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06c/S3Bucket", + "path": "aws-cdk-eks-helm-test/AssetParameters/52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820a/S3Bucket", "constructInfo": { "fqn": "@aws-cdk/core.CfnParameter", "version": "0.0.0" @@ -3048,7 +3076,7 @@ }, "S3VersionKey": { "id": "S3VersionKey", - "path": "aws-cdk-eks-helm-test/AssetParameters/a5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06c/S3VersionKey", + "path": "aws-cdk-eks-helm-test/AssetParameters/52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820a/S3VersionKey", "constructInfo": { "fqn": "@aws-cdk/core.CfnParameter", "version": "0.0.0" @@ -3056,7 +3084,7 @@ }, "ArtifactHash": { "id": "ArtifactHash", - "path": "aws-cdk-eks-helm-test/AssetParameters/a5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06c/ArtifactHash", + "path": "aws-cdk-eks-helm-test/AssetParameters/52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820a/ArtifactHash", "constructInfo": { "fqn": "@aws-cdk/core.CfnParameter", "version": "0.0.0" @@ -3278,7 +3306,7 @@ "aws:cdk:cloudformation:props": { "code": { "s3Bucket": { - "Ref": "referencetoawscdkekshelmtestAssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3BucketC59436A3Ref" + "Ref": "referencetoawscdkekshelmtestAssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3BucketEC27A5F2Ref" }, "s3Key": { "Fn::Join": [ @@ -3291,7 +3319,7 @@ "Fn::Split": [ "||", { - "Ref": "referencetoawscdkekshelmtestAssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3VersionKey5ECB4296Ref" + "Ref": "referencetoawscdkekshelmtestAssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3VersionKey5772F015Ref" } ] } @@ -3304,7 +3332,7 @@ "Fn::Split": [ "||", { - "Ref": "referencetoawscdkekshelmtestAssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3VersionKey5ECB4296Ref" + "Ref": "referencetoawscdkekshelmtestAssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3VersionKey5772F015Ref" } ] } @@ -3487,7 +3515,7 @@ "aws:cdk:cloudformation:props": { "content": { "s3Bucket": { - "Ref": "referencetoawscdkekshelmtestAssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3Bucket355FB348Ref" + "Ref": "referencetoawscdkekshelmtestAssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3Bucket8229D3A2Ref" }, "s3Key": { "Fn::Join": [ @@ -3500,7 +3528,7 @@ "Fn::Split": [ "||", { - "Ref": "referencetoawscdkekshelmtestAssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3VersionKeyA7F169F4Ref" + "Ref": "referencetoawscdkekshelmtestAssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3VersionKey0C91EE3ERef" } ] } @@ -3513,7 +3541,7 @@ "Fn::Split": [ "||", { - "Ref": "referencetoawscdkekshelmtestAssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3VersionKeyA7F169F4Ref" + "Ref": "referencetoawscdkekshelmtestAssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3VersionKey0C91EE3ERef" } ] } @@ -3822,17 +3850,17 @@ "version": "0.0.0" } }, - "reference-to-awscdkekshelmtestAssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3BucketC59436A3Ref": { - "id": "reference-to-awscdkekshelmtestAssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3BucketC59436A3Ref", - "path": "aws-cdk-eks-helm-test/@aws-cdk--aws-eks.KubectlProvider/reference-to-awscdkekshelmtestAssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3BucketC59436A3Ref", + "reference-to-awscdkekshelmtestAssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3BucketEC27A5F2Ref": { + "id": "reference-to-awscdkekshelmtestAssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3BucketEC27A5F2Ref", + "path": "aws-cdk-eks-helm-test/@aws-cdk--aws-eks.KubectlProvider/reference-to-awscdkekshelmtestAssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3BucketEC27A5F2Ref", "constructInfo": { "fqn": "@aws-cdk/core.CfnParameter", "version": "0.0.0" } }, - "reference-to-awscdkekshelmtestAssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3VersionKey5ECB4296Ref": { - "id": "reference-to-awscdkekshelmtestAssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3VersionKey5ECB4296Ref", - "path": "aws-cdk-eks-helm-test/@aws-cdk--aws-eks.KubectlProvider/reference-to-awscdkekshelmtestAssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3VersionKey5ECB4296Ref", + "reference-to-awscdkekshelmtestAssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3VersionKey5772F015Ref": { + "id": "reference-to-awscdkekshelmtestAssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3VersionKey5772F015Ref", + "path": "aws-cdk-eks-helm-test/@aws-cdk--aws-eks.KubectlProvider/reference-to-awscdkekshelmtestAssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3VersionKey5772F015Ref", "constructInfo": { "fqn": "@aws-cdk/core.CfnParameter", "version": "0.0.0" @@ -3878,17 +3906,17 @@ "version": "0.0.0" } }, - "reference-to-awscdkekshelmtestAssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3Bucket355FB348Ref": { - "id": "reference-to-awscdkekshelmtestAssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3Bucket355FB348Ref", - "path": "aws-cdk-eks-helm-test/@aws-cdk--aws-eks.KubectlProvider/reference-to-awscdkekshelmtestAssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3Bucket355FB348Ref", + "reference-to-awscdkekshelmtestAssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3Bucket8229D3A2Ref": { + "id": "reference-to-awscdkekshelmtestAssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3Bucket8229D3A2Ref", + "path": "aws-cdk-eks-helm-test/@aws-cdk--aws-eks.KubectlProvider/reference-to-awscdkekshelmtestAssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3Bucket8229D3A2Ref", "constructInfo": { "fqn": "@aws-cdk/core.CfnParameter", "version": "0.0.0" } }, - "reference-to-awscdkekshelmtestAssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3VersionKeyA7F169F4Ref": { - "id": "reference-to-awscdkekshelmtestAssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3VersionKeyA7F169F4Ref", - "path": "aws-cdk-eks-helm-test/@aws-cdk--aws-eks.KubectlProvider/reference-to-awscdkekshelmtestAssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3VersionKeyA7F169F4Ref", + "reference-to-awscdkekshelmtestAssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3VersionKey0C91EE3ERef": { + "id": "reference-to-awscdkekshelmtestAssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3VersionKey0C91EE3ERef", + "path": "aws-cdk-eks-helm-test/@aws-cdk--aws-eks.KubectlProvider/reference-to-awscdkekshelmtestAssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3VersionKey0C91EE3ERef", "constructInfo": { "fqn": "@aws-cdk/core.CfnParameter", "version": "0.0.0" @@ -3940,7 +3968,7 @@ }, "/", { - "Ref": "AssetParametersa5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06cS3Bucket6FD55E1C" + "Ref": "AssetParameters52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820aS3Bucket1AEB1014" }, "/", { @@ -3950,7 +3978,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParametersa5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06cS3VersionKeyF7A8F3EE" + "Ref": "AssetParameters52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820aS3VersionKey333BF6FA" } ] } @@ -3963,7 +3991,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParametersa5d60d1529154e4d0639b3fe5d8a36b6d90337aef74c85b83e7800866093a06cS3VersionKeyF7A8F3EE" + "Ref": "AssetParameters52864f95f8d008449eb268ec864f3cf6ac7feaaf9647368191fb35ca265a820aS3VersionKey333BF6FA" } ] } @@ -3988,11 +4016,11 @@ "referencetoawscdkekshelmtestAssetParametersd65fbdc11b108e0386ed8577c454d4544f6d4e7960f84a0d2e211478d6324dbfS3Bucket5EAB45FARef": { "Ref": "AssetParametersd65fbdc11b108e0386ed8577c454d4544f6d4e7960f84a0d2e211478d6324dbfS3BucketBFD29DFB" }, - "referencetoawscdkekshelmtestAssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3BucketC59436A3Ref": { - "Ref": "AssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3Bucket4CD5FFC3" + "referencetoawscdkekshelmtestAssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3BucketEC27A5F2Ref": { + "Ref": "AssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3Bucket9BDF5881" }, - "referencetoawscdkekshelmtestAssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3VersionKey5ECB4296Ref": { - "Ref": "AssetParametersa70c48e7047fb793b2378668accb1dc2d92f2d7b1fff80c9c718f4964dc69cb8S3VersionKeyE06BA291" + "referencetoawscdkekshelmtestAssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3VersionKey5772F015Ref": { + "Ref": "AssetParameters07a1c6a504be72dba3e9bc5b12cc2b5b0e83ea5c6ba10a4128da5c2180f3f963S3VersionKey63AC53A2" }, "referencetoawscdkekshelmtestVpcPrivateSubnet1Subnet3D2B5C0BRef": { "Ref": "VpcPrivateSubnet1Subnet536B997A" @@ -4012,11 +4040,11 @@ "referencetoawscdkekshelmtestAssetParameters92c405c4551a308bcdd55823f8b16268bd3c38fd2a011edaaf3ed72a80f557c4S3VersionKey149985B9Ref": { "Ref": "AssetParameters92c405c4551a308bcdd55823f8b16268bd3c38fd2a011edaaf3ed72a80f557c4S3VersionKeyEF78B2AD" }, - "referencetoawscdkekshelmtestAssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3Bucket355FB348Ref": { - "Ref": "AssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3BucketD3288998" + "referencetoawscdkekshelmtestAssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3Bucket8229D3A2Ref": { + "Ref": "AssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3Bucket83B8778F" }, - "referencetoawscdkekshelmtestAssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3VersionKeyA7F169F4Ref": { - "Ref": "AssetParametersea17febe6d04c66048f3e8e060c71685c0cb53122abceff44842d27bc0d4a03eS3VersionKeyB00C0565" + "referencetoawscdkekshelmtestAssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3VersionKey0C91EE3ERef": { + "Ref": "AssetParametersc6964dbf0c556ec82ce09622e99ad6f6d4e488cdaac0ef9e8492e078ec61ffedS3VersionKeyADF6A055" }, "referencetoawscdkekshelmtestAssetParameters8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9S3BucketAF49DDE8Ref": { "Ref": "AssetParameters8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9S3Bucket40DFAF90" diff --git a/packages/@aws-cdk/aws-elasticache/package.json b/packages/@aws-cdk/aws-elasticache/package.json index 50e6f1e715664..9295ca484ff64 100644 --- a/packages/@aws-cdk/aws-elasticache/package.json +++ b/packages/@aws-cdk/aws-elasticache/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-elasticbeanstalk/package.json b/packages/@aws-cdk/aws-elasticbeanstalk/package.json index c3813016c4e6a..588b52127070e 100644 --- a/packages/@aws-cdk/aws-elasticbeanstalk/package.json +++ b/packages/@aws-cdk/aws-elasticbeanstalk/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-elasticloadbalancing/package.json b/packages/@aws-cdk/aws-elasticloadbalancing/package.json index be344c056d66e..f5205b5f3f1e7 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancing/package.json +++ b/packages/@aws-cdk/aws-elasticloadbalancing/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json b/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json index bc600f17e2974..7b0bbeb5be51d 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -74,7 +74,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", "jest": "^27.5.1" diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json b/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json index b00b793851348..41fb5f142b038 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -74,7 +74,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", "jest": "^27.5.1", diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/package.json b/packages/@aws-cdk/aws-elasticloadbalancingv2/package.json index 1668c5ffc511f..06d80fb7ff4ba 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/package.json +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-elasticsearch/package.json b/packages/@aws-cdk/aws-elasticsearch/package.json index 6bc9107a0abf5..5938a08f9bd23 100644 --- a/packages/@aws-cdk/aws-elasticsearch/package.json +++ b/packages/@aws-cdk/aws-elasticsearch/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-emr/package.json b/packages/@aws-cdk/aws-emr/package.json index d8638f3174f7a..3c0a471c513dc 100644 --- a/packages/@aws-cdk/aws-emr/package.json +++ b/packages/@aws-cdk/aws-emr/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-emrcontainers/package.json b/packages/@aws-cdk/aws-emrcontainers/package.json index 72b6f669f603a..8970cc9a1b196 100644 --- a/packages/@aws-cdk/aws-emrcontainers/package.json +++ b/packages/@aws-cdk/aws-emrcontainers/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-events-targets/package.json b/packages/@aws-cdk/aws-events-targets/package.json index 650961f9757ef..5589ff8f3271c 100644 --- a/packages/@aws-cdk/aws-events-targets/package.json +++ b/packages/@aws-cdk/aws-events-targets/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -84,7 +84,7 @@ "@aws-cdk/aws-codecommit": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", "aws-sdk": "^2.848.0", diff --git a/packages/@aws-cdk/aws-events/package.json b/packages/@aws-cdk/aws-events/package.json index 377a1c8ac9df9..e8b62d7500693 100644 --- a/packages/@aws-cdk/aws-events/package.json +++ b/packages/@aws-cdk/aws-events/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-eventschemas/package.json b/packages/@aws-cdk/aws-eventschemas/package.json index 42b0c59bdf000..fe29cd6cf713c 100644 --- a/packages/@aws-cdk/aws-eventschemas/package.json +++ b/packages/@aws-cdk/aws-eventschemas/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-evidently/package.json b/packages/@aws-cdk/aws-evidently/package.json index cd466e968cb7d..2bfdac882d0a7 100644 --- a/packages/@aws-cdk/aws-evidently/package.json +++ b/packages/@aws-cdk/aws-evidently/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-finspace/package.json b/packages/@aws-cdk/aws-finspace/package.json index cdbf1478941c4..e32ef7cd08443 100644 --- a/packages/@aws-cdk/aws-finspace/package.json +++ b/packages/@aws-cdk/aws-finspace/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-fis/package.json b/packages/@aws-cdk/aws-fis/package.json index ca2716b5c2b54..c94d088c5b44b 100644 --- a/packages/@aws-cdk/aws-fis/package.json +++ b/packages/@aws-cdk/aws-fis/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-fms/package.json b/packages/@aws-cdk/aws-fms/package.json index 5ab1866fdca94..a8073382c923e 100644 --- a/packages/@aws-cdk/aws-fms/package.json +++ b/packages/@aws-cdk/aws-fms/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-forecast/package.json b/packages/@aws-cdk/aws-forecast/package.json index f73f6e685b3f3..3c809cfbbf5f2 100644 --- a/packages/@aws-cdk/aws-forecast/package.json +++ b/packages/@aws-cdk/aws-forecast/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-frauddetector/package.json b/packages/@aws-cdk/aws-frauddetector/package.json index de77f2a097f9f..e75674830ae92 100644 --- a/packages/@aws-cdk/aws-frauddetector/package.json +++ b/packages/@aws-cdk/aws-frauddetector/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-fsx/package.json b/packages/@aws-cdk/aws-fsx/package.json index 0d1a669039c85..157b248343edb 100644 --- a/packages/@aws-cdk/aws-fsx/package.json +++ b/packages/@aws-cdk/aws-fsx/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", @@ -83,7 +83,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-gamelift/package.json b/packages/@aws-cdk/aws-gamelift/package.json index 401b1c4375cd7..ea9dc817e6791 100644 --- a/packages/@aws-cdk/aws-gamelift/package.json +++ b/packages/@aws-cdk/aws-gamelift/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-globalaccelerator-endpoints/package.json b/packages/@aws-cdk/aws-globalaccelerator-endpoints/package.json index ff31bbcb08cee..30d17d7971b77 100644 --- a/packages/@aws-cdk/aws-globalaccelerator-endpoints/package.json +++ b/packages/@aws-cdk/aws-globalaccelerator-endpoints/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -78,7 +78,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", "aws-sdk": "^2.848.0", diff --git a/packages/@aws-cdk/aws-globalaccelerator/package.json b/packages/@aws-cdk/aws-globalaccelerator/package.json index 10223d0d40b55..ddc8b000fa0f0 100644 --- a/packages/@aws-cdk/aws-globalaccelerator/package.json +++ b/packages/@aws-cdk/aws-globalaccelerator/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -84,7 +84,7 @@ "@aws-cdk/assertions": "0.0.0", "@aws-cdk/aws-elasticloadbalancingv2": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-glue/package.json b/packages/@aws-cdk/aws-glue/package.json index 29c190ddeca63..27495aa3dbb70 100644 --- a/packages/@aws-cdk/aws-glue/package.json +++ b/packages/@aws-cdk/aws-glue/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/cx-api": "0.0.0", "@aws-cdk/pkglint": "0.0.0", diff --git a/packages/@aws-cdk/aws-greengrass/package.json b/packages/@aws-cdk/aws-greengrass/package.json index 8677a50cafc70..c0986baf5d284 100644 --- a/packages/@aws-cdk/aws-greengrass/package.json +++ b/packages/@aws-cdk/aws-greengrass/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-greengrassv2/package.json b/packages/@aws-cdk/aws-greengrassv2/package.json index 4456cac21c5ff..0814f77a44c19 100644 --- a/packages/@aws-cdk/aws-greengrassv2/package.json +++ b/packages/@aws-cdk/aws-greengrassv2/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-groundstation/package.json b/packages/@aws-cdk/aws-groundstation/package.json index a6850e0bcd71a..b16af86b73ab2 100644 --- a/packages/@aws-cdk/aws-groundstation/package.json +++ b/packages/@aws-cdk/aws-groundstation/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-guardduty/package.json b/packages/@aws-cdk/aws-guardduty/package.json index fd8c3f540cdd6..ef51f2f65c722 100644 --- a/packages/@aws-cdk/aws-guardduty/package.json +++ b/packages/@aws-cdk/aws-guardduty/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-healthlake/package.json b/packages/@aws-cdk/aws-healthlake/package.json index 3c6e25ae6d523..f40702a0dc899 100644 --- a/packages/@aws-cdk/aws-healthlake/package.json +++ b/packages/@aws-cdk/aws-healthlake/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-iam/package.json b/packages/@aws-cdk/aws-iam/package.json index 93d43238f4624..93533c5d77482 100644 --- a/packages/@aws-cdk/aws-iam/package.json +++ b/packages/@aws-cdk/aws-iam/package.json @@ -48,7 +48,7 @@ "lint": "cdk-lint", "test": "cdk-test", "pkglint": "pkglint -f", - "integ": "cdk-integ", + "integ": "integ-runner", "package": "cdk-package", "awslint": "cdk-awslint", "cfn2ts": "cfn2ts", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/aws-lambda": "^8.10.93", diff --git a/packages/@aws-cdk/aws-imagebuilder/package.json b/packages/@aws-cdk/aws-imagebuilder/package.json index 6d7581afc8a3f..db33edc2a714c 100644 --- a/packages/@aws-cdk/aws-imagebuilder/package.json +++ b/packages/@aws-cdk/aws-imagebuilder/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-inspector/package.json b/packages/@aws-cdk/aws-inspector/package.json index 446b49eec052b..0aba0cdccea1b 100644 --- a/packages/@aws-cdk/aws-inspector/package.json +++ b/packages/@aws-cdk/aws-inspector/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-inspectorv2/package.json b/packages/@aws-cdk/aws-inspectorv2/package.json index 6d3ec7b525446..00a4fef961451 100644 --- a/packages/@aws-cdk/aws-inspectorv2/package.json +++ b/packages/@aws-cdk/aws-inspectorv2/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-iot-actions/package.json b/packages/@aws-cdk/aws-iot-actions/package.json index a2db6d0529f63..5b0cbe2f08344 100644 --- a/packages/@aws-cdk/aws-iot-actions/package.json +++ b/packages/@aws-cdk/aws-iot-actions/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -80,7 +80,7 @@ "@aws-cdk/assertions": "0.0.0", "@aws-cdk/aws-kinesisfirehose-destinations": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", "constructs": "^3.3.69", diff --git a/packages/@aws-cdk/aws-iot/package.json b/packages/@aws-cdk/aws-iot/package.json index e83a310c74109..0a8b618c4b02e 100644 --- a/packages/@aws-cdk/aws-iot/package.json +++ b/packages/@aws-cdk/aws-iot/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-iot1click/package.json b/packages/@aws-cdk/aws-iot1click/package.json index d0550686c0a7f..25174861f22df 100644 --- a/packages/@aws-cdk/aws-iot1click/package.json +++ b/packages/@aws-cdk/aws-iot1click/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "pkglint": "pkglint -f", diff --git a/packages/@aws-cdk/aws-iotanalytics/package.json b/packages/@aws-cdk/aws-iotanalytics/package.json index 081930aad26ad..e47e92df528ff 100644 --- a/packages/@aws-cdk/aws-iotanalytics/package.json +++ b/packages/@aws-cdk/aws-iotanalytics/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "pkglint": "pkglint -f", diff --git a/packages/@aws-cdk/aws-iotcoredeviceadvisor/package.json b/packages/@aws-cdk/aws-iotcoredeviceadvisor/package.json index 15acc04b2e0f6..9b4d75c8a38ef 100644 --- a/packages/@aws-cdk/aws-iotcoredeviceadvisor/package.json +++ b/packages/@aws-cdk/aws-iotcoredeviceadvisor/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-iotevents-actions/package.json b/packages/@aws-cdk/aws-iotevents-actions/package.json index 90a925459abc9..618218030d7be 100644 --- a/packages/@aws-cdk/aws-iotevents-actions/package.json +++ b/packages/@aws-cdk/aws-iotevents-actions/package.json @@ -40,7 +40,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -72,7 +72,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", "jest": "^27.5.1" diff --git a/packages/@aws-cdk/aws-iotevents/package.json b/packages/@aws-cdk/aws-iotevents/package.json index 3b3b352afe429..d67ad557067cc 100644 --- a/packages/@aws-cdk/aws-iotevents/package.json +++ b/packages/@aws-cdk/aws-iotevents/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", @@ -83,7 +83,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-iotfleethub/package.json b/packages/@aws-cdk/aws-iotfleethub/package.json index 1908aae1aa512..182d01457bc3b 100644 --- a/packages/@aws-cdk/aws-iotfleethub/package.json +++ b/packages/@aws-cdk/aws-iotfleethub/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-iotsitewise/package.json b/packages/@aws-cdk/aws-iotsitewise/package.json index fabfefa58f1e9..c4115c7618ec2 100644 --- a/packages/@aws-cdk/aws-iotsitewise/package.json +++ b/packages/@aws-cdk/aws-iotsitewise/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-iotthingsgraph/package.json b/packages/@aws-cdk/aws-iotthingsgraph/package.json index 62af6298210fa..f57caaaae2d1c 100644 --- a/packages/@aws-cdk/aws-iotthingsgraph/package.json +++ b/packages/@aws-cdk/aws-iotthingsgraph/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-iotwireless/package.json b/packages/@aws-cdk/aws-iotwireless/package.json index 684d07c5bd136..6960c9fefd2ff 100644 --- a/packages/@aws-cdk/aws-iotwireless/package.json +++ b/packages/@aws-cdk/aws-iotwireless/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-ivs/package.json b/packages/@aws-cdk/aws-ivs/package.json index 4f8235a849a03..de63ef9160c49 100644 --- a/packages/@aws-cdk/aws-ivs/package.json +++ b/packages/@aws-cdk/aws-ivs/package.json @@ -57,7 +57,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -93,7 +93,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-kafkaconnect/package.json b/packages/@aws-cdk/aws-kafkaconnect/package.json index ec3eb36faaa42..cf9205369d16b 100644 --- a/packages/@aws-cdk/aws-kafkaconnect/package.json +++ b/packages/@aws-cdk/aws-kafkaconnect/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-kendra/package.json b/packages/@aws-cdk/aws-kendra/package.json index 805b53e719899..6467667cd38f4 100644 --- a/packages/@aws-cdk/aws-kendra/package.json +++ b/packages/@aws-cdk/aws-kendra/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-kinesis/package.json b/packages/@aws-cdk/aws-kinesis/package.json index 6cc0092590712..568bb436e36c6 100644 --- a/packages/@aws-cdk/aws-kinesis/package.json +++ b/packages/@aws-cdk/aws-kinesis/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/cx-api": "0.0.0", "@aws-cdk/pkglint": "0.0.0", diff --git a/packages/@aws-cdk/aws-kinesisanalytics-flink/package.json b/packages/@aws-cdk/aws-kinesisanalytics-flink/package.json index fff56a1f9b93c..077263e2cd1f0 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics-flink/package.json +++ b/packages/@aws-cdk/aws-kinesisanalytics-flink/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -75,7 +75,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", "jest": "^27.5.1" diff --git a/packages/@aws-cdk/aws-kinesisanalytics/package.json b/packages/@aws-cdk/aws-kinesisanalytics/package.json index bbdb446edb571..8d100b0171236 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics/package.json +++ b/packages/@aws-cdk/aws-kinesisanalytics/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-kinesisanalyticsv2/package.json b/packages/@aws-cdk/aws-kinesisanalyticsv2/package.json index 5e618783474d5..0601782fd8e01 100644 --- a/packages/@aws-cdk/aws-kinesisanalyticsv2/package.json +++ b/packages/@aws-cdk/aws-kinesisanalyticsv2/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-kinesisfirehose-destinations/package.json b/packages/@aws-cdk/aws-kinesisfirehose-destinations/package.json index ad74666cd287a..8a09f777902b0 100644 --- a/packages/@aws-cdk/aws-kinesisfirehose-destinations/package.json +++ b/packages/@aws-cdk/aws-kinesisfirehose-destinations/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -75,7 +75,7 @@ "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/aws-lambda-nodejs": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-kinesisfirehose/package.json b/packages/@aws-cdk/aws-kinesisfirehose/package.json index 066bfe78a218c..bad753b81bef0 100644 --- a/packages/@aws-cdk/aws-kinesisfirehose/package.json +++ b/packages/@aws-cdk/aws-kinesisfirehose/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -82,7 +82,7 @@ "@aws-cdk/assertions": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-kinesisvideo/package.json b/packages/@aws-cdk/aws-kinesisvideo/package.json index 40faddbc9de2f..b30d73477767c 100644 --- a/packages/@aws-cdk/aws-kinesisvideo/package.json +++ b/packages/@aws-cdk/aws-kinesisvideo/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-kms/package.json b/packages/@aws-cdk/aws-kms/package.json index 333bedc7b8a93..ecd4ba7b082b9 100644 --- a/packages/@aws-cdk/aws-kms/package.json +++ b/packages/@aws-cdk/aws-kms/package.json @@ -48,7 +48,7 @@ "lint": "cdk-lint", "test": "cdk-test", "pkglint": "pkglint -f", - "integ": "cdk-integ", + "integ": "integ-runner", "package": "cdk-package", "awslint": "cdk-awslint", "cfn2ts": "cfn2ts", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/cloud-assembly-schema": "0.0.0", "@aws-cdk/pkglint": "0.0.0", diff --git a/packages/@aws-cdk/aws-lakeformation/package.json b/packages/@aws-cdk/aws-lakeformation/package.json index c7ceef39cb56d..3a5db01b2d1dd 100644 --- a/packages/@aws-cdk/aws-lakeformation/package.json +++ b/packages/@aws-cdk/aws-lakeformation/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-lambda-destinations/package.json b/packages/@aws-cdk/aws-lambda-destinations/package.json index 8feb76b2523f3..de7196e7e46bb 100644 --- a/packages/@aws-cdk/aws-lambda-destinations/package.json +++ b/packages/@aws-cdk/aws-lambda-destinations/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -73,7 +73,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-lambda-event-sources/package.json b/packages/@aws-cdk/aws-lambda-event-sources/package.json index c7253423991e4..eb0f5d4bb92e5 100644 --- a/packages/@aws-cdk/aws-lambda-event-sources/package.json +++ b/packages/@aws-cdk/aws-lambda-event-sources/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -73,7 +73,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", "jest": "^27.5.1" diff --git a/packages/@aws-cdk/aws-lambda-go/package.json b/packages/@aws-cdk/aws-lambda-go/package.json index 0383c7c0bbdd2..d6bb4018614b2 100644 --- a/packages/@aws-cdk/aws-lambda-go/package.json +++ b/packages/@aws-cdk/aws-lambda-go/package.json @@ -49,7 +49,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -76,7 +76,7 @@ "@aws-cdk/assertions": "0.0.0", "@aws-cdk/aws-ec2": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" }, diff --git a/packages/@aws-cdk/aws-lambda-nodejs/package.json b/packages/@aws-cdk/aws-lambda-nodejs/package.json index f838c991dbcea..91419868a617a 100644 --- a/packages/@aws-cdk/aws-lambda-nodejs/package.json +++ b/packages/@aws-cdk/aws-lambda-nodejs/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -74,7 +74,7 @@ "@aws-cdk/assertions": "0.0.0", "@aws-cdk/aws-ec2": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", "delay": "5.0.0", diff --git a/packages/@aws-cdk/aws-lambda-python/package.json b/packages/@aws-cdk/aws-lambda-python/package.json index 74a9d8a8ffc0c..7643a65569aed 100644 --- a/packages/@aws-cdk/aws-lambda-python/package.json +++ b/packages/@aws-cdk/aws-lambda-python/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -73,7 +73,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" }, diff --git a/packages/@aws-cdk/aws-lambda/package.json b/packages/@aws-cdk/aws-lambda/package.json index 3476070c68ac2..79d572fb27960 100644 --- a/packages/@aws-cdk/aws-lambda/package.json +++ b/packages/@aws-cdk/aws-lambda/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -85,7 +85,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/cfnspec": "0.0.0", "@aws-cdk/pkglint": "0.0.0", diff --git a/packages/@aws-cdk/aws-lex/package.json b/packages/@aws-cdk/aws-lex/package.json index b69c7bde4d4a3..0a158821abdfe 100644 --- a/packages/@aws-cdk/aws-lex/package.json +++ b/packages/@aws-cdk/aws-lex/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-licensemanager/package.json b/packages/@aws-cdk/aws-licensemanager/package.json index 7a41e125ce49d..79ea402ed177b 100644 --- a/packages/@aws-cdk/aws-licensemanager/package.json +++ b/packages/@aws-cdk/aws-licensemanager/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-lightsail/package.json b/packages/@aws-cdk/aws-lightsail/package.json index 8f71c3ebd1192..e89237e329ad6 100644 --- a/packages/@aws-cdk/aws-lightsail/package.json +++ b/packages/@aws-cdk/aws-lightsail/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-location/package.json b/packages/@aws-cdk/aws-location/package.json index e686e64f27c41..d9d58ed8f3148 100644 --- a/packages/@aws-cdk/aws-location/package.json +++ b/packages/@aws-cdk/aws-location/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-logs-destinations/package.json b/packages/@aws-cdk/aws-logs-destinations/package.json index 07e783848cb15..6b6191736dce8 100644 --- a/packages/@aws-cdk/aws-logs-destinations/package.json +++ b/packages/@aws-cdk/aws-logs-destinations/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -73,7 +73,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-logs/package.json b/packages/@aws-cdk/aws-logs/package.json index 37f646b394b9e..9349539784f06 100644 --- a/packages/@aws-cdk/aws-logs/package.json +++ b/packages/@aws-cdk/aws-logs/package.json @@ -47,7 +47,7 @@ "lint": "cdk-lint", "watch": "cdk-watch", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/aws-lambda": "^8.10.93", diff --git a/packages/@aws-cdk/aws-lookoutequipment/package.json b/packages/@aws-cdk/aws-lookoutequipment/package.json index 7218c3f7fd95f..545ebc1fafbb0 100644 --- a/packages/@aws-cdk/aws-lookoutequipment/package.json +++ b/packages/@aws-cdk/aws-lookoutequipment/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-lookoutmetrics/package.json b/packages/@aws-cdk/aws-lookoutmetrics/package.json index bce07b4f9fed7..f1e75dbb34ac3 100644 --- a/packages/@aws-cdk/aws-lookoutmetrics/package.json +++ b/packages/@aws-cdk/aws-lookoutmetrics/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-lookoutvision/package.json b/packages/@aws-cdk/aws-lookoutvision/package.json index f24b9b3a26db1..12ff0e25b2ee8 100644 --- a/packages/@aws-cdk/aws-lookoutvision/package.json +++ b/packages/@aws-cdk/aws-lookoutvision/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-macie/package.json b/packages/@aws-cdk/aws-macie/package.json index c24dd63ebd1ba..d68f9b0d8c414 100644 --- a/packages/@aws-cdk/aws-macie/package.json +++ b/packages/@aws-cdk/aws-macie/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-managedblockchain/package.json b/packages/@aws-cdk/aws-managedblockchain/package.json index 9190b3c3b9955..2eea111dfa82f 100644 --- a/packages/@aws-cdk/aws-managedblockchain/package.json +++ b/packages/@aws-cdk/aws-managedblockchain/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-mediaconnect/package.json b/packages/@aws-cdk/aws-mediaconnect/package.json index 5a67e0a1c0942..b1ebb5f681419 100644 --- a/packages/@aws-cdk/aws-mediaconnect/package.json +++ b/packages/@aws-cdk/aws-mediaconnect/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-mediaconvert/package.json b/packages/@aws-cdk/aws-mediaconvert/package.json index 637617e65843e..5271fa4a79a04 100644 --- a/packages/@aws-cdk/aws-mediaconvert/package.json +++ b/packages/@aws-cdk/aws-mediaconvert/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-medialive/package.json b/packages/@aws-cdk/aws-medialive/package.json index dbe092b4b0dfb..b81931f32ca13 100644 --- a/packages/@aws-cdk/aws-medialive/package.json +++ b/packages/@aws-cdk/aws-medialive/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-mediapackage/package.json b/packages/@aws-cdk/aws-mediapackage/package.json index 23f112ba5ae80..7f4af6a50ba9b 100644 --- a/packages/@aws-cdk/aws-mediapackage/package.json +++ b/packages/@aws-cdk/aws-mediapackage/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-mediastore/package.json b/packages/@aws-cdk/aws-mediastore/package.json index 73dc4e62f8961..419474f230186 100644 --- a/packages/@aws-cdk/aws-mediastore/package.json +++ b/packages/@aws-cdk/aws-mediastore/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-mediatailor/package.json b/packages/@aws-cdk/aws-mediatailor/package.json index e88da3ff06a77..51f91c08b6c29 100644 --- a/packages/@aws-cdk/aws-mediatailor/package.json +++ b/packages/@aws-cdk/aws-mediatailor/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-memorydb/package.json b/packages/@aws-cdk/aws-memorydb/package.json index 5db59ada0d550..93fe468853053 100644 --- a/packages/@aws-cdk/aws-memorydb/package.json +++ b/packages/@aws-cdk/aws-memorydb/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-msk/package.json b/packages/@aws-cdk/aws-msk/package.json index e175174ae9da6..52daf96cd283d 100644 --- a/packages/@aws-cdk/aws-msk/package.json +++ b/packages/@aws-cdk/aws-msk/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", @@ -83,7 +83,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-mwaa/package.json b/packages/@aws-cdk/aws-mwaa/package.json index ab2d6061c871b..331f5df25c953 100644 --- a/packages/@aws-cdk/aws-mwaa/package.json +++ b/packages/@aws-cdk/aws-mwaa/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-neptune/package.json b/packages/@aws-cdk/aws-neptune/package.json index 73b0ac6867a50..28c44e5848c1f 100644 --- a/packages/@aws-cdk/aws-neptune/package.json +++ b/packages/@aws-cdk/aws-neptune/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "pkglint": "pkglint -f", @@ -82,7 +82,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-networkfirewall/package.json b/packages/@aws-cdk/aws-networkfirewall/package.json index 937d63aa53730..13c3ac5291df9 100644 --- a/packages/@aws-cdk/aws-networkfirewall/package.json +++ b/packages/@aws-cdk/aws-networkfirewall/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-networkmanager/package.json b/packages/@aws-cdk/aws-networkmanager/package.json index c34d778bac829..f7ae1981a4331 100644 --- a/packages/@aws-cdk/aws-networkmanager/package.json +++ b/packages/@aws-cdk/aws-networkmanager/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-nimblestudio/package.json b/packages/@aws-cdk/aws-nimblestudio/package.json index 52ab33b43c1ca..b75a79d93c8dc 100644 --- a/packages/@aws-cdk/aws-nimblestudio/package.json +++ b/packages/@aws-cdk/aws-nimblestudio/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-opensearchservice/package.json b/packages/@aws-cdk/aws-opensearchservice/package.json index 1bece17b44f7a..77350b8d4c34a 100644 --- a/packages/@aws-cdk/aws-opensearchservice/package.json +++ b/packages/@aws-cdk/aws-opensearchservice/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -86,7 +86,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-opsworks/package.json b/packages/@aws-cdk/aws-opsworks/package.json index 011fa1d4d0790..a406f43e530d4 100644 --- a/packages/@aws-cdk/aws-opsworks/package.json +++ b/packages/@aws-cdk/aws-opsworks/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-opsworkscm/package.json b/packages/@aws-cdk/aws-opsworkscm/package.json index f429f37979df0..3812d92b33a78 100644 --- a/packages/@aws-cdk/aws-opsworkscm/package.json +++ b/packages/@aws-cdk/aws-opsworkscm/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "pkglint": "pkglint -f", diff --git a/packages/@aws-cdk/aws-panorama/package.json b/packages/@aws-cdk/aws-panorama/package.json index f766e427bbffd..e97e4698ce527 100644 --- a/packages/@aws-cdk/aws-panorama/package.json +++ b/packages/@aws-cdk/aws-panorama/package.json @@ -57,7 +57,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-personalize/package.json b/packages/@aws-cdk/aws-personalize/package.json index 8448bece3402f..88825bfbc30e2 100644 --- a/packages/@aws-cdk/aws-personalize/package.json +++ b/packages/@aws-cdk/aws-personalize/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-pinpoint/package.json b/packages/@aws-cdk/aws-pinpoint/package.json index b4f9c8565e526..d52b08c85a1d2 100644 --- a/packages/@aws-cdk/aws-pinpoint/package.json +++ b/packages/@aws-cdk/aws-pinpoint/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-pinpointemail/package.json b/packages/@aws-cdk/aws-pinpointemail/package.json index 3c51a3c74abd1..7990f520b06f8 100644 --- a/packages/@aws-cdk/aws-pinpointemail/package.json +++ b/packages/@aws-cdk/aws-pinpointemail/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-qldb/package.json b/packages/@aws-cdk/aws-qldb/package.json index 9e4e6e0c90ac0..d3bdcc8bc8271 100644 --- a/packages/@aws-cdk/aws-qldb/package.json +++ b/packages/@aws-cdk/aws-qldb/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-quicksight/package.json b/packages/@aws-cdk/aws-quicksight/package.json index 79d41343ab08b..69b5af5e1ae10 100644 --- a/packages/@aws-cdk/aws-quicksight/package.json +++ b/packages/@aws-cdk/aws-quicksight/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-ram/package.json b/packages/@aws-cdk/aws-ram/package.json index ddf8049356491..49f9cc05699e9 100644 --- a/packages/@aws-cdk/aws-ram/package.json +++ b/packages/@aws-cdk/aws-ram/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-rds/package.json b/packages/@aws-cdk/aws-rds/package.json index 3110738220ab1..19f1a497a34c5 100644 --- a/packages/@aws-cdk/aws-rds/package.json +++ b/packages/@aws-cdk/aws-rds/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -83,7 +83,7 @@ "@aws-cdk/aws-events-targets": "0.0.0", "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/cx-api": "0.0.0", "@aws-cdk/pkglint": "0.0.0", diff --git a/packages/@aws-cdk/aws-redshift/package.json b/packages/@aws-cdk/aws-redshift/package.json index d6841a31195d5..06502708a03de 100644 --- a/packages/@aws-cdk/aws-redshift/package.json +++ b/packages/@aws-cdk/aws-redshift/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-refactorspaces/package.json b/packages/@aws-cdk/aws-refactorspaces/package.json index 5d763b245e130..dcaa326081ffb 100644 --- a/packages/@aws-cdk/aws-refactorspaces/package.json +++ b/packages/@aws-cdk/aws-refactorspaces/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-rekognition/package.json b/packages/@aws-cdk/aws-rekognition/package.json index 1c92e782a9e64..5c4b0e5e4ea60 100644 --- a/packages/@aws-cdk/aws-rekognition/package.json +++ b/packages/@aws-cdk/aws-rekognition/package.json @@ -57,7 +57,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-resiliencehub/package.json b/packages/@aws-cdk/aws-resiliencehub/package.json index 293e3f621d094..f7ce0c5e0491f 100644 --- a/packages/@aws-cdk/aws-resiliencehub/package.json +++ b/packages/@aws-cdk/aws-resiliencehub/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-resourcegroups/package.json b/packages/@aws-cdk/aws-resourcegroups/package.json index a17a9aa169e15..ea0acafa0a249 100644 --- a/packages/@aws-cdk/aws-resourcegroups/package.json +++ b/packages/@aws-cdk/aws-resourcegroups/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-robomaker/package.json b/packages/@aws-cdk/aws-robomaker/package.json index b96c0b59e92b4..0abc9dfaeb5ec 100644 --- a/packages/@aws-cdk/aws-robomaker/package.json +++ b/packages/@aws-cdk/aws-robomaker/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-route53-patterns/package.json b/packages/@aws-cdk/aws-route53-patterns/package.json index 2d4e248234582..3b274bdfa5763 100644 --- a/packages/@aws-cdk/aws-route53-patterns/package.json +++ b/packages/@aws-cdk/aws-route53-patterns/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -74,7 +74,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-route53-targets/package.json b/packages/@aws-cdk/aws-route53-targets/package.json index 7aca456bffc24..b884f8ad8c3b2 100644 --- a/packages/@aws-cdk/aws-route53-targets/package.json +++ b/packages/@aws-cdk/aws-route53-targets/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -76,7 +76,7 @@ "@aws-cdk/aws-certificatemanager": "0.0.0", "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-route53/package.json b/packages/@aws-cdk/aws-route53/package.json index 64206dd84854b..94eed3ec94762 100644 --- a/packages/@aws-cdk/aws-route53/package.json +++ b/packages/@aws-cdk/aws-route53/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/aws-lambda": "^8.10.93", diff --git a/packages/@aws-cdk/aws-route53recoverycontrol/package.json b/packages/@aws-cdk/aws-route53recoverycontrol/package.json index cde17f02ec86e..9a82cb8423e9a 100644 --- a/packages/@aws-cdk/aws-route53recoverycontrol/package.json +++ b/packages/@aws-cdk/aws-route53recoverycontrol/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-route53recoveryreadiness/package.json b/packages/@aws-cdk/aws-route53recoveryreadiness/package.json index 8feeeca412adb..443dadb6ed211 100644 --- a/packages/@aws-cdk/aws-route53recoveryreadiness/package.json +++ b/packages/@aws-cdk/aws-route53recoveryreadiness/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-route53resolver/package.json b/packages/@aws-cdk/aws-route53resolver/package.json index be0c3e79cea04..e8fb7b47ced7f 100644 --- a/packages/@aws-cdk/aws-route53resolver/package.json +++ b/packages/@aws-cdk/aws-route53resolver/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "pkglint": "pkglint -f", @@ -82,7 +82,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-rum/package.json b/packages/@aws-cdk/aws-rum/package.json index 4f93ab1f69fed..33e57bbb69051 100644 --- a/packages/@aws-cdk/aws-rum/package.json +++ b/packages/@aws-cdk/aws-rum/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-s3-assets/package.json b/packages/@aws-cdk/aws-s3-assets/package.json index 5291ae6cb726e..b52fdd29c8575 100644 --- a/packages/@aws-cdk/aws-s3-assets/package.json +++ b/packages/@aws-cdk/aws-s3-assets/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -79,7 +79,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cloud-assembly-schema": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-s3-deployment/package.json b/packages/@aws-cdk/aws-s3-deployment/package.json index 104ff0bc223d2..bf16af67039c3 100644 --- a/packages/@aws-cdk/aws-s3-deployment/package.json +++ b/packages/@aws-cdk/aws-s3-deployment/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -87,7 +87,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cx-api": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-s3-notifications/package.json b/packages/@aws-cdk/aws-s3-notifications/package.json index 32738cd1b0d93..345169af57ee9 100644 --- a/packages/@aws-cdk/aws-s3-notifications/package.json +++ b/packages/@aws-cdk/aws-s3-notifications/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -73,7 +73,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", "jest": "^27.5.1" diff --git a/packages/@aws-cdk/aws-s3/package.json b/packages/@aws-cdk/aws-s3/package.json index adff6efa3f93e..79118f0df0579 100644 --- a/packages/@aws-cdk/aws-s3/package.json +++ b/packages/@aws-cdk/aws-s3/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/aws-lambda": "^8.10.93", diff --git a/packages/@aws-cdk/aws-s3objectlambda/package.json b/packages/@aws-cdk/aws-s3objectlambda/package.json index 97ccfc93dfff9..c2494249da1a6 100644 --- a/packages/@aws-cdk/aws-s3objectlambda/package.json +++ b/packages/@aws-cdk/aws-s3objectlambda/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -85,7 +85,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", @@ -121,4 +121,4 @@ "attribute-tag:@aws-cdk/aws-s3objectlambda.AccessPoint.accessPointName" ] } -} \ No newline at end of file +} diff --git a/packages/@aws-cdk/aws-s3outposts/package.json b/packages/@aws-cdk/aws-s3outposts/package.json index 0ad8877061133..3cdcc52f9d114 100644 --- a/packages/@aws-cdk/aws-s3outposts/package.json +++ b/packages/@aws-cdk/aws-s3outposts/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-sagemaker/package.json b/packages/@aws-cdk/aws-sagemaker/package.json index cb5332a56fc47..9304662220002 100644 --- a/packages/@aws-cdk/aws-sagemaker/package.json +++ b/packages/@aws-cdk/aws-sagemaker/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "pkglint": "pkglint -f", diff --git a/packages/@aws-cdk/aws-sam/package.json b/packages/@aws-cdk/aws-sam/package.json index d8295d5f1aef8..16ef19283416e 100644 --- a/packages/@aws-cdk/aws-sam/package.json +++ b/packages/@aws-cdk/aws-sam/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "pkglint": "pkglint -f", diff --git a/packages/@aws-cdk/aws-sdb/package.json b/packages/@aws-cdk/aws-sdb/package.json index a4072de0aa01c..c5d83f56aab96 100644 --- a/packages/@aws-cdk/aws-sdb/package.json +++ b/packages/@aws-cdk/aws-sdb/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-secretsmanager/package.json b/packages/@aws-cdk/aws-secretsmanager/package.json index abf808fed6a01..ea852af2cc8d3 100644 --- a/packages/@aws-cdk/aws-secretsmanager/package.json +++ b/packages/@aws-cdk/aws-secretsmanager/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "pkglint": "pkglint -f", @@ -82,7 +82,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-securityhub/package.json b/packages/@aws-cdk/aws-securityhub/package.json index 2be17327b22a1..f11f80b9d4800 100644 --- a/packages/@aws-cdk/aws-securityhub/package.json +++ b/packages/@aws-cdk/aws-securityhub/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-servicecatalog/package.json b/packages/@aws-cdk/aws-servicecatalog/package.json index 57c961ef8f68d..dc7c532e4aaa1 100644 --- a/packages/@aws-cdk/aws-servicecatalog/package.json +++ b/packages/@aws-cdk/aws-servicecatalog/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-servicecatalogappregistry/package.json b/packages/@aws-cdk/aws-servicecatalogappregistry/package.json index 96e9d4dd7967c..b4fe710d6fe99 100644 --- a/packages/@aws-cdk/aws-servicecatalogappregistry/package.json +++ b/packages/@aws-cdk/aws-servicecatalogappregistry/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -85,7 +85,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-servicediscovery/package.json b/packages/@aws-cdk/aws-servicediscovery/package.json index 98567a421aa13..3204460e42475 100644 --- a/packages/@aws-cdk/aws-servicediscovery/package.json +++ b/packages/@aws-cdk/aws-servicediscovery/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -84,7 +84,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-ses-actions/package.json b/packages/@aws-cdk/aws-ses-actions/package.json index 92c00efabcbcb..01a8c59095ea1 100644 --- a/packages/@aws-cdk/aws-ses-actions/package.json +++ b/packages/@aws-cdk/aws-ses-actions/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -74,7 +74,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-ses/package.json b/packages/@aws-cdk/aws-ses/package.json index 133d6cf10ccf3..c4263cb2a1348 100644 --- a/packages/@aws-cdk/aws-ses/package.json +++ b/packages/@aws-cdk/aws-ses/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/aws-lambda": "^8.10.93", diff --git a/packages/@aws-cdk/aws-signer/package.json b/packages/@aws-cdk/aws-signer/package.json index 0bc0f4f9d9522..2d0ad89e271ec 100644 --- a/packages/@aws-cdk/aws-signer/package.json +++ b/packages/@aws-cdk/aws-signer/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-sns-subscriptions/package.json b/packages/@aws-cdk/aws-sns-subscriptions/package.json index f295805a8b389..6d86845feaf08 100644 --- a/packages/@aws-cdk/aws-sns-subscriptions/package.json +++ b/packages/@aws-cdk/aws-sns-subscriptions/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -73,7 +73,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-sns-subscriptions/test/sns-lambda-cross-region.integ.snapshot/FunctionStack.template.json b/packages/@aws-cdk/aws-sns-subscriptions/test/sns-lambda-cross-region.integ.snapshot/FunctionStack.template.json index 2b8eba1a2b4f9..794fa4c325010 100644 --- a/packages/@aws-cdk/aws-sns-subscriptions/test/sns-lambda-cross-region.integ.snapshot/FunctionStack.template.json +++ b/packages/@aws-cdk/aws-sns-subscriptions/test/sns-lambda-cross-region.integ.snapshot/FunctionStack.template.json @@ -44,7 +44,7 @@ ] }, "Handler": "index.handler", - "Runtime": "nodejs12.x" + "Runtime": "nodejs14.x" }, "DependsOn": [ "EchoServiceRoleBE28060B" diff --git a/packages/@aws-cdk/aws-sns-subscriptions/test/sns-lambda-cross-region.integ.snapshot/tree.json b/packages/@aws-cdk/aws-sns-subscriptions/test/sns-lambda-cross-region.integ.snapshot/tree.json index 466f7702c2d8f..8f0d735151808 100644 --- a/packages/@aws-cdk/aws-sns-subscriptions/test/sns-lambda-cross-region.integ.snapshot/tree.json +++ b/packages/@aws-cdk/aws-sns-subscriptions/test/sns-lambda-cross-region.integ.snapshot/tree.json @@ -119,7 +119,7 @@ ] }, "handler": "index.handler", - "runtime": "nodejs12.x" + "runtime": "nodejs14.x" } }, "constructInfo": { diff --git a/packages/@aws-cdk/aws-sns/package.json b/packages/@aws-cdk/aws-sns/package.json index b1664ed712223..d6bf3760225f9 100644 --- a/packages/@aws-cdk/aws-sns/package.json +++ b/packages/@aws-cdk/aws-sns/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -85,7 +85,7 @@ "@aws-cdk/assertions": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-sqs/package.json b/packages/@aws-cdk/aws-sqs/package.json index a6b12eaf10285..892ecb09bd6b8 100644 --- a/packages/@aws-cdk/aws-sqs/package.json +++ b/packages/@aws-cdk/aws-sqs/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -82,7 +82,7 @@ "@aws-cdk/assertions": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-ssm/package.json b/packages/@aws-cdk/aws-ssm/package.json index 65caf4f4c5873..b9691e1a45fcc 100644 --- a/packages/@aws-cdk/aws-ssm/package.json +++ b/packages/@aws-cdk/aws-ssm/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/aws-ssmcontacts/package.json b/packages/@aws-cdk/aws-ssmcontacts/package.json index bfce82c5f9d0a..94c3d89b58f96 100644 --- a/packages/@aws-cdk/aws-ssmcontacts/package.json +++ b/packages/@aws-cdk/aws-ssmcontacts/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-ssmincidents/package.json b/packages/@aws-cdk/aws-ssmincidents/package.json index f014c6fc4ef38..a05fb4cc42614 100644 --- a/packages/@aws-cdk/aws-ssmincidents/package.json +++ b/packages/@aws-cdk/aws-ssmincidents/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-sso/package.json b/packages/@aws-cdk/aws-sso/package.json index 349b3f7ef235a..9c7b7abd9ccea 100644 --- a/packages/@aws-cdk/aws-sso/package.json +++ b/packages/@aws-cdk/aws-sso/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/package.json b/packages/@aws-cdk/aws-stepfunctions-tasks/package.json index 0bbda5a9263c7..94e63879e0032 100644 --- a/packages/@aws-cdk/aws-stepfunctions-tasks/package.json +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -88,7 +88,7 @@ "@aws-cdk/aws-s3-assets": "0.0.0", "@aws-cdk/aws-sns-subscriptions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", "jest": "^27.5.1" diff --git a/packages/@aws-cdk/aws-stepfunctions/package.json b/packages/@aws-cdk/aws-stepfunctions/package.json index c901ae4980ad4..0888a27e4743a 100644 --- a/packages/@aws-cdk/aws-stepfunctions/package.json +++ b/packages/@aws-cdk/aws-stepfunctions/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -81,7 +81,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-synthetics/package.json b/packages/@aws-cdk/aws-synthetics/package.json index ac5406e1117eb..1983bb3492db3 100644 --- a/packages/@aws-cdk/aws-synthetics/package.json +++ b/packages/@aws-cdk/aws-synthetics/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -83,7 +83,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1" diff --git a/packages/@aws-cdk/aws-timestream/package.json b/packages/@aws-cdk/aws-timestream/package.json index d630d3f2f818f..287d8538c03f5 100644 --- a/packages/@aws-cdk/aws-timestream/package.json +++ b/packages/@aws-cdk/aws-timestream/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-transfer/package.json b/packages/@aws-cdk/aws-transfer/package.json index efeddaba3fff8..c0b5f89aa3739 100644 --- a/packages/@aws-cdk/aws-transfer/package.json +++ b/packages/@aws-cdk/aws-transfer/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-waf/package.json b/packages/@aws-cdk/aws-waf/package.json index 20c6e3c1a8896..b704630880d41 100644 --- a/packages/@aws-cdk/aws-waf/package.json +++ b/packages/@aws-cdk/aws-waf/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-wafregional/package.json b/packages/@aws-cdk/aws-wafregional/package.json index aa4997b25435f..8ecc07208b63d 100644 --- a/packages/@aws-cdk/aws-wafregional/package.json +++ b/packages/@aws-cdk/aws-wafregional/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-wafv2/package.json b/packages/@aws-cdk/aws-wafv2/package.json index 3f6fa8ac9d3ff..8985ee7308b67 100644 --- a/packages/@aws-cdk/aws-wafv2/package.json +++ b/packages/@aws-cdk/aws-wafv2/package.json @@ -45,7 +45,7 @@ "homepage": "https://github.com/aws/aws-cdk", "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-wisdom/package.json b/packages/@aws-cdk/aws-wisdom/package.json index f641345d8e7ea..e44022186150a 100644 --- a/packages/@aws-cdk/aws-wisdom/package.json +++ b/packages/@aws-cdk/aws-wisdom/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-workspaces/package.json b/packages/@aws-cdk/aws-workspaces/package.json index 8f0da7bbbfc03..c31a26fc093a8 100644 --- a/packages/@aws-cdk/aws-workspaces/package.json +++ b/packages/@aws-cdk/aws-workspaces/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/aws-xray/package.json b/packages/@aws-cdk/aws-xray/package.json index 83f4d9e17dfed..9e66cbe73fea7 100644 --- a/packages/@aws-cdk/aws-xray/package.json +++ b/packages/@aws-cdk/aws-xray/package.json @@ -50,7 +50,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/@aws-cdk/cloudformation-include/package.json b/packages/@aws-cdk/cloudformation-include/package.json index c71a525a94c12..493433fd1dfbd 100644 --- a/packages/@aws-cdk/cloudformation-include/package.json +++ b/packages/@aws-cdk/cloudformation-include/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -458,7 +458,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", "jest": "^27.5.1", diff --git a/packages/@aws-cdk/custom-resources/package.json b/packages/@aws-cdk/custom-resources/package.json index 4a1359916223c..f8ef33b6481de 100644 --- a/packages/@aws-cdk/custom-resources/package.json +++ b/packages/@aws-cdk/custom-resources/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -84,7 +84,7 @@ "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/aws-ssm": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/aws-lambda": "^8.10.93", diff --git a/packages/@aws-cdk/example-construct-library/package.json b/packages/@aws-cdk/example-construct-library/package.json index afc6831a83f5f..5f24a0582464c 100644 --- a/packages/@aws-cdk/example-construct-library/package.json +++ b/packages/@aws-cdk/example-construct-library/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -75,7 +75,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", "jest": "^27.5.1" diff --git a/packages/@aws-cdk/integ-runner/README.md b/packages/@aws-cdk/integ-runner/README.md index e67a64282a42b..9fd2b667346ae 100644 --- a/packages/@aws-cdk/integ-runner/README.md +++ b/packages/@aws-cdk/integ-runner/README.md @@ -28,10 +28,10 @@ integ-runner [ARGS] [TEST...] ``` -This will look for all files that match the naming convention of `/integ.*.ts$/`. Each of these files will be expected +This will look for all files that match the naming convention of `/integ.*.js$/`. Each of these files will be expected to be a self contained CDK app. The runner will execute the following for each file (app): -1. Check if a snapshot file exists (i.e. `/integ.*.expected.snapshot$/`) +1. Check if a snapshot file exists (i.e. `/*.integ.snapshot$/`) 2. If the snapshot does not exist 2a. Synth the integ app which will produce the `integ.json` file 3. Read the `integ.json` file which contains instructions on what the runner should do. @@ -39,15 +39,15 @@ to be a self contained CDK app. The runner will execute the following for each f ### Options -- `--update-on-failed` (default=false) +- `--update-on-failed` (default=`false`) Rerun integration tests if snapshot fails - `--clean` (default=`true`) Destroy stacks after deploy (use `--no-clean` for debugging) - `--verbose` (default=`false`) verbose logging -- `--parallel` (default=`false`) +- `--parallel` (default=`true`) Run tests in parallel across default regions -- `--parallel-regions` +- `--parallel-regions` (default=`us-east-1`,`us-east-2`, `us-west-2`) List of regions to run tests in. If this is provided then all tests will be run in parallel across these regions - `--directory` (default=`test`) @@ -65,6 +65,88 @@ integ-runner --update --parallel --parallel-regions us-east-1 --parallel-regions This will search for integration tests recursively from the current directory and then execute them in parallel across `us-east-1`, `us-east-2`, & `us-west-2`. +### Common Workflow + +A common workflow to use when running integration tests is to first run the integration tests to see if there are any snapshot differences. + +```bash +integ-runner +``` + +If there are any differences you might see an output like the output below. + +```bash +integ-runner + +Verifying integration test snapshots... + + eks-cluster-private-endpoint No Change! + eks-inference No Change! + alb-controller No Change! + eks-oidc-provider No Change! + eks-bottlerocket-ng No Change! + eks-cluster No Change! + fargate-cluster No Change! + eks-cluster-handlers-vpc No Change! + eks-helm-asset - Snapshot changed! +Resources +[+] Custom::AWSCDK-EKS-HelmChart Clustercharttestocichart9C188967 + + + +Snapshot Results: + +Tests: 1 failed, 9 total +Error: Some snapshot tests failed! +To re-run failed tests run: yarn integ-runner --update-on-failed + at main (packages/@aws-cdk/integ-runner/lib/cli.js:90:15) +error Command failed with exit code 1. +``` + +To re-run the integration test for the failed tests you would then run: + +```bash +integ-runner --update-on-failed +``` + +This will run the snapshot tests and collect all the failed tests. It will then re-execute the +integration test for the failed tests and if successful, save the new snapshot. + +```bash +integ-runner --update-on-failed + +Verifying integration test snapshots... + + eks-cluster-private-endpoint No Change! + eks-inference No Change! + alb-controller No Change! + eks-oidc-provider No Change! + eks-bottlerocket-ng No Change! + eks-cluster No Change! + fargate-cluster No Change! + eks-cluster-handlers-vpc No Change! + eks-helm-asset - Snapshot changed! +Resources +[+] Custom::AWSCDK-EKS-HelmChart Clustercharttestocichart9C188967 + + + +Snapshot Results: + +Tests: 1 failed, 9 total + +Running integration tests for failed tests... + +Running in parallel across: us-east-1, us-east-2, us-west-2 +Running test test/integ.eks-helm-asset.js in us-east-1 + eks-helm-asset Test Succeeded! + +Test Results: + +Tests: 1 passed, 1 total +``` + + ### integ.json schema See [@aws-cdk/cloud-assembly-schema/lib/integ-tests/schema.ts](../cloud-assembly-schema/lib/integ-tests/schema.ts) diff --git a/packages/@aws-cdk/lambda-layer-awscli/package.json b/packages/@aws-cdk/lambda-layer-awscli/package.json index 7daf454a10df1..eda5e4ca1f65e 100644 --- a/packages/@aws-cdk/lambda-layer-awscli/package.json +++ b/packages/@aws-cdk/lambda-layer-awscli/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -76,7 +76,7 @@ "@aws-cdk/assertions": "0.0.0", "@aws-cdk/custom-resources": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", "jest": "^27.5.1" diff --git a/packages/@aws-cdk/lambda-layer-kubectl/package.json b/packages/@aws-cdk/lambda-layer-kubectl/package.json index 2a2223166c3ee..f1c08091a1f1a 100644 --- a/packages/@aws-cdk/lambda-layer-kubectl/package.json +++ b/packages/@aws-cdk/lambda-layer-kubectl/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -75,7 +75,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", "jest": "^27.5.1" diff --git a/packages/@aws-cdk/lambda-layer-node-proxy-agent/package.json b/packages/@aws-cdk/lambda-layer-node-proxy-agent/package.json index 8f0dfffef911b..31146b0b33abf 100644 --- a/packages/@aws-cdk/lambda-layer-node-proxy-agent/package.json +++ b/packages/@aws-cdk/lambda-layer-node-proxy-agent/package.json @@ -48,7 +48,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -75,7 +75,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", "jest": "^27.5.1" diff --git a/packages/@aws-cdk/pipelines/package.json b/packages/@aws-cdk/pipelines/package.json index 53fd337d2df98..cc0baba97ad1e 100644 --- a/packages/@aws-cdk/pipelines/package.json +++ b/packages/@aws-cdk/pipelines/package.json @@ -15,7 +15,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -45,7 +45,7 @@ "@aws-cdk/aws-sns-subscriptions": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/cfn2ts": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^27.4.1", diff --git a/packages/@aws-cdk/triggers/package.json b/packages/@aws-cdk/triggers/package.json index 762ea94a0220b..9c304c851ffe9 100644 --- a/packages/@aws-cdk/triggers/package.json +++ b/packages/@aws-cdk/triggers/package.json @@ -47,7 +47,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", @@ -75,7 +75,7 @@ "devDependencies": { "@aws-cdk/assertions": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", - "@aws-cdk/cdk-integ-tools": "0.0.0", + "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "aws-sdk": "^2.848.0", "@aws-cdk/pkglint": "0.0.0", diff --git a/packages/cdk-assets/package.json b/packages/cdk-assets/package.json index 475066b249b4d..34f73f9cca9ab 100644 --- a/packages/cdk-assets/package.json +++ b/packages/cdk-assets/package.json @@ -10,7 +10,7 @@ }, "scripts": { "build": "cdk-build", - "integ": "cdk-integ", + "integ": "integ-runner", "lint": "cdk-lint", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/packages/cdk-cli-wrapper/package.json b/packages/cdk-cli-wrapper/package.json index 4a213298bf2e5..fd706544d805d 100644 --- a/packages/cdk-cli-wrapper/package.json +++ b/packages/cdk-cli-wrapper/package.json @@ -10,7 +10,7 @@ "watch": "cdk-watch", "lint": "cdk-lint", "test": "cdk-test", - "integ": "cdk-integ", + "integ": "integ-runner", "pkglint": "pkglint -f", "package": "cdk-package", "awslint": "cdk-awslint", diff --git a/tools/@aws-cdk/cdk-build-tools/bin/cdk-test.ts b/tools/@aws-cdk/cdk-build-tools/bin/cdk-test.ts index af35264465e38..09d0cf359e309 100644 --- a/tools/@aws-cdk/cdk-build-tools/bin/cdk-test.ts +++ b/tools/@aws-cdk/cdk-build-tools/bin/cdk-test.ts @@ -52,7 +52,7 @@ async function main() { // Run integration test if the package has integ test files if (await hasIntegTests()) { - await shell(['cdk-integ-assert'], defaultShellOptions); + await shell(['integ-runner'], defaultShellOptions); } } From f5450b2c544f8dbe87c331d924fb5f4746d73e0c Mon Sep 17 00:00:00 2001 From: corymhall <43035978+corymhall@users.noreply.github.com> Date: Fri, 8 Apr 2022 12:57:23 +0000 Subject: [PATCH 2/6] update pr template --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 639add0db8a3a..dff48e6f94b22 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -12,6 +12,6 @@ ### New Features * [ ] Have you added the new feature to an [integration test](https://github.com/aws/aws-cdk/blob/master/INTEGRATION_TESTS.md)? - * [ ] Did you use `cdk-integ` to deploy the infrastructure and generate the snapshot (i.e. `cdk-integ` without `--dry-run`)? + * [ ] Did you use `yarn integ` to deploy the infrastructure and generate the snapshot (i.e. `yarn integ` without `--dry-run`)? *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* From 5878dd56f2af663296585e639b41def7209d474d Mon Sep 17 00:00:00 2001 From: corymhall <43035978+corymhall@users.noreply.github.com> Date: Fri, 8 Apr 2022 13:09:50 +0000 Subject: [PATCH 3/6] update pkglint --- tools/@aws-cdk/pkglint/lib/rules.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/@aws-cdk/pkglint/lib/rules.ts b/tools/@aws-cdk/pkglint/lib/rules.ts index 1a3df33fb4fa1..8b102a851a98b 100644 --- a/tools/@aws-cdk/pkglint/lib/rules.ts +++ b/tools/@aws-cdk/pkglint/lib/rules.ts @@ -1262,14 +1262,14 @@ export class MustHaveIntegCommand extends ValidationRule { public validate(pkg: PackageJson): void { if (!hasIntegTests(pkg)) { return; } - expectJSON(this.name, pkg, 'scripts.integ', 'cdk-integ'); + expectJSON(this.name, pkg, 'scripts.integ', 'integ-runner'); // We can't ACTUALLY require cdk-build-tools/package.json here, // because WE don't depend on cdk-build-tools and we don't know if // the package does. expectDevDependency(this.name, pkg, - '@aws-cdk/cdk-integ-tools', + '@aws-cdk/integ-runner', `${PKGLINT_VERSION}`); // eslint-disable-line @typescript-eslint/no-require-imports } } From 1466846b61278e0b2a13da7697b1f09507515679 Mon Sep 17 00:00:00 2001 From: corymhall <43035978+corymhall@users.noreply.github.com> Date: Fri, 8 Apr 2022 13:56:38 +0000 Subject: [PATCH 4/6] adding ecs-service-extensions snapshots --- .../aws-ecs-integ.template.json | 3383 +++++++++++ .../all-service-addons.integ.snapshot/cdk.out | 1 + .../manifest.json | 645 +++ .../tree.json | 5017 +++++++++++++++++ .../.style.yapf | 6 + .../Pipfile | 14 + .../Pipfile.lock | 138 + .../index.py | 34 + .../lib/__init__.py | 0 .../lib/cleanup_resource_handler.py | 51 + .../lib/events.py | 15 + .../lib/queue_handler.py | 117 + .../lib/records.py | 185 + .../lib/records_table.py | 215 + .../lib/route53.py | 167 + .../lib/running_task_collector.py | 57 + .../run_test.py | 5 + .../test/__init__.py | 1 + .../test/fixtures/ddb-record.json | 43 + .../test/fixtures/eni_description.json | 49 + .../test/fixtures/task_description.json | 77 + .../test/test_cleanup_resource_handler.py | 46 + .../test/test_events.py | 21 + .../test/test_queue_handler.py | 29 + .../test/test_records.py | 46 + .../test/test_records_table.py | 188 + .../test/test_route53.py | 281 + .../test/test_tasks.py | 55 + .../opensearch-2021-01-01.paginators.json | 64 + .../opensearch-2021-01-01.service.json | 4080 ++++++++++++++ .../aws-ecs-integ.template.json | 1263 +++++ .../assign-public-ip.integ.snapshot/cdk.out | 1 + .../manifest.json | 361 ++ .../assign-public-ip.integ.snapshot/tree.json | 2036 +++++++ .../aws-ecs-integ.template.json | 570 ++ .../cdk.out | 1 + .../manifest.json | 203 + .../tree.json | 1026 ++++ .../cdk.out | 1 + .../imported-environment-integ.template.json | 366 ++ ...ntegResourcesAB23EBEF.nested.template.json | 422 ++ .../manifest.json | 331 ++ .../tree.json | 1398 +++++ .../aws-ecs-integ.template.json | 1996 +++++++ .../cdk.out | 1 + .../manifest.json | 503 ++ .../tree.json | 3081 ++++++++++ .../index.py | 15 + .../queue_backlog_calculator.py | 71 + .../aws-ecs-integ.template.json | 1205 ++++ .../publish-subscribe.integ.snapshot/cdk.out | 1 + .../manifest.json | 367 ++ .../tree.json | 2110 +++++++ 53 files changed, 32359 insertions(+) create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/all-service-addons.integ.snapshot/aws-ecs-integ.template.json create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/all-service-addons.integ.snapshot/cdk.out create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/all-service-addons.integ.snapshot/manifest.json create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/all-service-addons.integ.snapshot/tree.json create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/.style.yapf create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/Pipfile create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/Pipfile.lock create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/index.py create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/__init__.py create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/cleanup_resource_handler.py create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/events.py create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/queue_handler.py create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/records.py create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/records_table.py create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/route53.py create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/running_task_collector.py create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/run_test.py create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/__init__.py create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/fixtures/ddb-record.json create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/fixtures/eni_description.json create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/fixtures/task_description.json create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_cleanup_resource_handler.py create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_events.py create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_queue_handler.py create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_records.py create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_records_table.py create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_route53.py create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_tasks.py create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.dad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981/aws-sdk-patch/opensearch-2021-01-01.paginators.json create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.dad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981/aws-sdk-patch/opensearch-2021-01-01.service.json create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/aws-ecs-integ.template.json create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/cdk.out create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/manifest.json create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/tree.json create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/custom-service-extension.integ.snapshot/aws-ecs-integ.template.json create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/custom-service-extension.integ.snapshot/cdk.out create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/custom-service-extension.integ.snapshot/manifest.json create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/custom-service-extension.integ.snapshot/tree.json create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/imported-environment.integ.snapshot/cdk.out create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/imported-environment.integ.snapshot/imported-environment-integ.template.json create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/imported-environment.integ.snapshot/importedenvironmentintegResourcesAB23EBEF.nested.template.json create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/imported-environment.integ.snapshot/manifest.json create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/imported-environment.integ.snapshot/tree.json create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/multiple-environments.integ.snapshot/aws-ecs-integ.template.json create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/multiple-environments.integ.snapshot/cdk.out create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/multiple-environments.integ.snapshot/manifest.json create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/multiple-environments.integ.snapshot/tree.json create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/publish-subscribe.integ.snapshot/asset.a820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91/index.py create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/publish-subscribe.integ.snapshot/asset.a820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91/queue_backlog_calculator.py create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/publish-subscribe.integ.snapshot/aws-ecs-integ.template.json create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/publish-subscribe.integ.snapshot/cdk.out create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/publish-subscribe.integ.snapshot/manifest.json create mode 100644 packages/@aws-cdk-containers/ecs-service-extensions/test/publish-subscribe.integ.snapshot/tree.json diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/all-service-addons.integ.snapshot/aws-ecs-integ.template.json b/packages/@aws-cdk-containers/ecs-service-extensions/test/all-service-addons.integ.snapshot/aws-ecs-integ.template.json new file mode 100644 index 0000000000000..c840505a5012d --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/all-service-addons.integ.snapshot/aws-ecs-integ.template.json @@ -0,0 +1,3383 @@ +{ + "Resources": { + "mymeshEA67EDEF": { + "Type": "AWS::AppMesh::Mesh", + "Properties": { + "MeshName": "awsecsintegmymeshFCC0D554", + "Spec": {} + } + }, + "productionenvironmentvpcAEB47DF7": { + "Type": "AWS::EC2::VPC", + "Properties": { + "CidrBlock": "10.0.0.0/16", + "EnableDnsHostnames": true, + "EnableDnsSupport": true, + "InstanceTenancy": "default", + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet1Subnet8D92C089": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.0.0/18", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Public" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Public" + }, + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet1RouteTable6E9ABC21": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet1RouteTableAssociationA8117374": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPublicSubnet1RouteTable6E9ABC21" + }, + "SubnetId": { + "Ref": "productionenvironmentvpcPublicSubnet1Subnet8D92C089" + } + } + }, + "productionenvironmentvpcPublicSubnet1DefaultRoute524C894D": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPublicSubnet1RouteTable6E9ABC21" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "productionenvironmentvpcIGWE7C39890" + } + }, + "DependsOn": [ + "productionenvironmentvpcVPCGW1B428D07" + ] + }, + "productionenvironmentvpcPublicSubnet1EIP54BA88DB": { + "Type": "AWS::EC2::EIP", + "Properties": { + "Domain": "vpc", + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet1NATGateway6075E4CA": { + "Type": "AWS::EC2::NatGateway", + "Properties": { + "SubnetId": { + "Ref": "productionenvironmentvpcPublicSubnet1Subnet8D92C089" + }, + "AllocationId": { + "Fn::GetAtt": [ + "productionenvironmentvpcPublicSubnet1EIP54BA88DB", + "AllocationId" + ] + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet2Subnet298E6C31": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.64.0/18", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Public" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Public" + }, + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet2RouteTable842A68D7": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet2RouteTableAssociation0A7549F3": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPublicSubnet2RouteTable842A68D7" + }, + "SubnetId": { + "Ref": "productionenvironmentvpcPublicSubnet2Subnet298E6C31" + } + } + }, + "productionenvironmentvpcPublicSubnet2DefaultRoute92CD697D": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPublicSubnet2RouteTable842A68D7" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "productionenvironmentvpcIGWE7C39890" + } + }, + "DependsOn": [ + "productionenvironmentvpcVPCGW1B428D07" + ] + }, + "productionenvironmentvpcPublicSubnet2EIP14CA46AA": { + "Type": "AWS::EC2::EIP", + "Properties": { + "Domain": "vpc", + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet2NATGatewayE1850FCC": { + "Type": "AWS::EC2::NatGateway", + "Properties": { + "SubnetId": { + "Ref": "productionenvironmentvpcPublicSubnet2Subnet298E6C31" + }, + "AllocationId": { + "Fn::GetAtt": [ + "productionenvironmentvpcPublicSubnet2EIP14CA46AA", + "AllocationId" + ] + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "productionenvironmentvpcPrivateSubnet1Subnet53F632E6": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.128.0/18", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Private" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Private" + }, + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1" + } + ] + } + }, + "productionenvironmentvpcPrivateSubnet1RouteTable2C6DFF0C": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1" + } + ] + } + }, + "productionenvironmentvpcPrivateSubnet1RouteTableAssociation8BA32463": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet1RouteTable2C6DFF0C" + }, + "SubnetId": { + "Ref": "productionenvironmentvpcPrivateSubnet1Subnet53F632E6" + } + } + }, + "productionenvironmentvpcPrivateSubnet1DefaultRouteFBB3DE6C": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet1RouteTable2C6DFF0C" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "NatGatewayId": { + "Ref": "productionenvironmentvpcPublicSubnet1NATGateway6075E4CA" + } + } + }, + "productionenvironmentvpcPrivateSubnet2Subnet756FB93C": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.192.0/18", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Private" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Private" + }, + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2" + } + ] + } + }, + "productionenvironmentvpcPrivateSubnet2RouteTable2F77D0D2": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2" + } + ] + } + }, + "productionenvironmentvpcPrivateSubnet2RouteTableAssociation09188261": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet2RouteTable2F77D0D2" + }, + "SubnetId": { + "Ref": "productionenvironmentvpcPrivateSubnet2Subnet756FB93C" + } + } + }, + "productionenvironmentvpcPrivateSubnet2DefaultRoute5F9AB6C1": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet2RouteTable2F77D0D2" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "NatGatewayId": { + "Ref": "productionenvironmentvpcPublicSubnet2NATGatewayE1850FCC" + } + } + }, + "productionenvironmentvpcIGWE7C39890": { + "Type": "AWS::EC2::InternetGateway", + "Properties": { + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc" + } + ] + } + }, + "productionenvironmentvpcVPCGW1B428D07": { + "Type": "AWS::EC2::VPCGatewayAttachment", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "InternetGatewayId": { + "Ref": "productionenvironmentvpcIGWE7C39890" + } + } + }, + "productionenvironmentclusterC6599D2D": { + "Type": "AWS::ECS::Cluster" + }, + "productionenvironmentclusterDefaultServiceDiscoveryNamespaceBE74D64D": { + "Type": "AWS::ServiceDiscovery::PrivateDnsNamespace", + "Properties": { + "Name": "production", + "Vpc": { + "Ref": "productionenvironmentvpcAEB47DF7" + } + } + }, + "namelogsF4B17D31": { + "Type": "AWS::Logs::LogGroup", + "Properties": { + "LogGroupName": "name-logs", + "RetentionInDays": 7 + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "nametaskdefinitionTaskRole50FE844E": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/AWSXRayDaemonWriteAccess" + ] + ] + } + ] + } + }, + "nametaskdefinitionTaskRoleDefaultPolicyE66EDC68": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:DescribeLogStreams", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": "*" + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "nametaskdefinitionTaskRoleDefaultPolicyE66EDC68", + "Roles": [ + { + "Ref": "nametaskdefinitionTaskRole50FE844E" + } + ] + } + }, + "nametaskdefinition690762BB": { + "Type": "AWS::ECS::TaskDefinition", + "Properties": { + "ContainerDefinitions": [ + { + "Cpu": 1024, + "DependsOn": [ + { + "Condition": "START", + "ContainerName": "firelens" + }, + { + "Condition": "HEALTHY", + "ContainerName": "envoy" + }, + { + "Condition": "START", + "ContainerName": "cloudwatch-agent" + }, + { + "Condition": "HEALTHY", + "ContainerName": "xray" + } + ], + "Environment": [ + { + "Name": "PORT", + "Value": "80" + } + ], + "Essential": true, + "Image": "nathanpeck/name", + "LogConfiguration": { + "LogDriver": "awsfirelens", + "Options": { + "Name": "cloudwatch", + "region": { + "Ref": "AWS::Region" + }, + "log_group_name": { + "Ref": "namelogsF4B17D31" + }, + "log_stream_prefix": "name/" + } + }, + "Memory": 2048, + "Name": "app", + "PortMappings": [ + { + "ContainerPort": 80, + "Protocol": "tcp" + } + ], + "Ulimits": [ + { + "HardLimit": 1024000, + "Name": "nofile", + "SoftLimit": 1024000 + } + ] + }, + { + "Environment": [ + { + "Name": "APPMESH_VIRTUAL_NODE_NAME", + "Value": { + "Fn::Join": [ + "", + [ + "mesh/", + { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "/virtualNode/name" + ] + ] + } + }, + { + "Name": "AWS_REGION", + "Value": { + "Ref": "AWS::Region" + } + }, + { + "Name": "ENABLE_ENVOY_STATS_TAGS", + "Value": "1" + }, + { + "Name": "ENABLE_ENVOY_DOG_STATSD", + "Value": "1" + } + ], + "Essential": true, + "HealthCheck": { + "Command": [ + "CMD-SHELL", + "curl -s http://localhost:9901/server_info | grep state | grep -q LIVE" + ], + "Interval": 5, + "Retries": 3, + "StartPeriod": 10, + "Timeout": 2 + }, + "Image": { + "Fn::Join": [ + "", + [ + { + "Fn::FindInMap": [ + "nameenvoyimageaccountmapping", + { + "Ref": "AWS::Region" + }, + "ecrRepo" + ] + }, + ".dkr.ecr.", + { + "Ref": "AWS::Region" + }, + ".", + { + "Ref": "AWS::URLSuffix" + }, + "/aws-appmesh-envoy:v1.15.1.0-prod" + ] + ] + }, + "LogConfiguration": { + "LogDriver": "awslogs", + "Options": { + "awslogs-group": { + "Ref": "nametaskdefinitionenvoyLogGroup258B673B" + }, + "awslogs-stream-prefix": "envoy", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "MemoryReservation": 128, + "Name": "envoy", + "Ulimits": [ + { + "HardLimit": 1024000, + "Name": "nofile", + "SoftLimit": 1024000 + } + ], + "User": "1337" + }, + { + "DependsOn": [ + { + "Condition": "HEALTHY", + "ContainerName": "envoy" + } + ], + "Essential": true, + "FirelensConfiguration": { + "Type": "fluentbit" + }, + "Image": { + "Ref": "SsmParameterValueawsserviceawsforfluentbitlatestC96584B6F00A464EAD1953AFF4B05118Parameter" + }, + "LogConfiguration": { + "LogDriver": "awslogs", + "Options": { + "awslogs-group": { + "Ref": "nametaskdefinitionfirelensLogGroup80DDA60F" + }, + "awslogs-stream-prefix": "firelens", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "MemoryReservation": 50, + "Name": "firelens", + "User": "0:1338" + }, + { + "DependsOn": [ + { + "Condition": "HEALTHY", + "ContainerName": "envoy" + } + ], + "Environment": [ + { + "Name": "AWS_REGION", + "Value": { + "Ref": "AWS::Region" + } + } + ], + "Essential": true, + "HealthCheck": { + "Command": [ + "CMD-SHELL", + "curl -s http://localhost:2000" + ], + "Interval": 5, + "Retries": 3, + "StartPeriod": 10, + "Timeout": 2 + }, + "Image": "amazon/aws-xray-daemon:latest", + "LogConfiguration": { + "LogDriver": "awslogs", + "Options": { + "awslogs-group": { + "Ref": "nametaskdefinitionxrayLogGroup4AF4CA37" + }, + "awslogs-stream-prefix": "xray", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "MemoryReservation": 256, + "Name": "xray", + "User": "1337" + }, + { + "DependsOn": [ + { + "Condition": "HEALTHY", + "ContainerName": "envoy" + } + ], + "Environment": [ + { + "Name": "CW_CONFIG_CONTENT", + "Value": "{\"logs\":{\"metrics_collected\":{\"emf\":{}}},\"metrics\":{\"metrics_collected\":{\"statsd\":{}}}}" + } + ], + "Essential": true, + "Image": "amazon/cloudwatch-agent:latest", + "LogConfiguration": { + "LogDriver": "awslogs", + "Options": { + "awslogs-group": { + "Ref": "nametaskdefinitioncloudwatchagentLogGroup78DDC685" + }, + "awslogs-stream-prefix": "cloudwatch-agent", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "MemoryReservation": 50, + "Name": "cloudwatch-agent", + "User": "0:1338" + } + ], + "Cpu": "1024", + "ExecutionRoleArn": { + "Fn::GetAtt": [ + "nametaskdefinitionExecutionRole45AC5C9A", + "Arn" + ] + }, + "Family": "awsecsintegnametaskdefinition0EA6A1A0", + "Memory": "2048", + "NetworkMode": "awsvpc", + "ProxyConfiguration": { + "ContainerName": "envoy", + "ProxyConfigurationProperties": [ + { + "Name": "AppPorts", + "Value": "80" + }, + { + "Name": "ProxyEgressPort", + "Value": "15001" + }, + { + "Name": "ProxyIngressPort", + "Value": "15000" + }, + { + "Name": "IgnoredUID", + "Value": "1337" + }, + { + "Name": "IgnoredGID", + "Value": "1338" + }, + { + "Name": "EgressIgnoredIPs", + "Value": "169.254.170.2,169.254.169.254" + } + ], + "Type": "APPMESH" + }, + "RequiresCompatibilities": [ + "EC2", + "FARGATE" + ], + "TaskRoleArn": { + "Fn::GetAtt": [ + "nametaskdefinitionTaskRole50FE844E", + "Arn" + ] + } + } + }, + "nametaskdefinitionenvoyLogGroup258B673B": { + "Type": "AWS::Logs::LogGroup", + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "nametaskdefinitionExecutionRole45AC5C9A": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "nametaskdefinitionExecutionRoleDefaultPolicyF7942D20": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "ecr:BatchCheckLayerAvailability", + "ecr:GetDownloadUrlForLayer", + "ecr:BatchGetImage" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":ecr:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Fn::FindInMap": [ + "nameenvoyimageaccountmapping", + { + "Ref": "AWS::Region" + }, + "ecrRepo" + ] + }, + ":repository/aws-appmesh-envoy" + ] + ] + } + }, + { + "Action": "ecr:GetAuthorizationToken", + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "nametaskdefinitionenvoyLogGroup258B673B", + "Arn" + ] + } + }, + { + "Action": [ + "ecr:GetAuthorizationToken", + "ecr:BatchCheckLayerAvailability", + "ecr:GetDownloadUrlForLayer", + "ecr:BatchGetImage" + ], + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "nametaskdefinitionfirelensLogGroup80DDA60F", + "Arn" + ] + } + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "nametaskdefinitionxrayLogGroup4AF4CA37", + "Arn" + ] + } + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "nametaskdefinitioncloudwatchagentLogGroup78DDC685", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "nametaskdefinitionExecutionRoleDefaultPolicyF7942D20", + "Roles": [ + { + "Ref": "nametaskdefinitionExecutionRole45AC5C9A" + } + ] + } + }, + "nametaskdefinitionfirelensLogGroup80DDA60F": { + "Type": "AWS::Logs::LogGroup", + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "nametaskdefinitionxrayLogGroup4AF4CA37": { + "Type": "AWS::Logs::LogGroup", + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "nametaskdefinitioncloudwatchagentLogGroup78DDC685": { + "Type": "AWS::Logs::LogGroup", + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "nameenvoytoappmesh2767D3E6": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "appmesh:StreamAggregatedResources", + "Effect": "Allow", + "Resource": { + "Ref": "mymeshEA67EDEF" + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "nameenvoytoappmesh2767D3E6", + "Roles": [ + { + "Ref": "nametaskdefinitionTaskRole50FE844E" + } + ] + } + }, + "namepublishmetricsF329C7AE": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "cloudwatch:PutMetricData", + "Effect": "Allow", + "Resource": "*" + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "namepublishmetricsF329C7AE", + "Roles": [ + { + "Ref": "nametaskdefinitionTaskRole50FE844E" + } + ] + } + }, + "nameserviceService8015C8D6": { + "Type": "AWS::ECS::Service", + "Properties": { + "Cluster": { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "DeploymentConfiguration": { + "MaximumPercent": 150, + "MinimumHealthyPercent": 100 + }, + "DesiredCount": 2, + "EnableECSManagedTags": false, + "LaunchType": "FARGATE", + "NetworkConfiguration": { + "AwsvpcConfiguration": { + "AssignPublicIp": "DISABLED", + "SecurityGroups": [ + { + "Fn::GetAtt": [ + "nameserviceSecurityGroup33F4662C", + "GroupId" + ] + } + ], + "Subnets": [ + { + "Ref": "productionenvironmentvpcPrivateSubnet1Subnet53F632E6" + }, + { + "Ref": "productionenvironmentvpcPrivateSubnet2Subnet756FB93C" + } + ] + } + }, + "ServiceRegistries": [ + { + "RegistryArn": { + "Fn::GetAtt": [ + "nameserviceCloudmapService3D5B0548", + "Arn" + ] + } + } + ], + "TaskDefinition": { + "Ref": "nametaskdefinition690762BB" + } + } + }, + "nameserviceCloudmapService3D5B0548": { + "Type": "AWS::ServiceDiscovery::Service", + "Properties": { + "DnsConfig": { + "DnsRecords": [ + { + "TTL": 10, + "Type": "A" + } + ], + "NamespaceId": { + "Fn::GetAtt": [ + "productionenvironmentclusterDefaultServiceDiscoveryNamespaceBE74D64D", + "Id" + ] + }, + "RoutingPolicy": "MULTIVALUE" + }, + "HealthCheckCustomConfig": { + "FailureThreshold": 2 + }, + "Name": "name", + "NamespaceId": { + "Fn::GetAtt": [ + "productionenvironmentclusterDefaultServiceDiscoveryNamespaceBE74D64D", + "Id" + ] + } + } + }, + "nameserviceSecurityGroup33F4662C": { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "aws-ecs-integ/name-service/SecurityGroup", + "SecurityGroupEgress": [ + { + "CidrIp": "0.0.0.0/0", + "Description": "Allow all outbound traffic by default", + "IpProtocol": "-1" + } + ], + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + } + } + }, + "nameserviceSecurityGroupfromawsecsinteggreeterserviceSecurityGroup055DC23B8048057EFF": { + "Type": "AWS::EC2::SecurityGroupIngress", + "Properties": { + "IpProtocol": "tcp", + "Description": "Accept inbound traffic from greeter", + "FromPort": 80, + "GroupId": { + "Fn::GetAtt": [ + "nameserviceSecurityGroup33F4662C", + "GroupId" + ] + }, + "SourceSecurityGroupId": { + "Fn::GetAtt": [ + "greeterserviceSecurityGroupDB4AC3A9", + "GroupId" + ] + }, + "ToPort": 80 + } + }, + "nameserviceTaskCountTarget366C2B3A": { + "Type": "AWS::ApplicationAutoScaling::ScalableTarget", + "Properties": { + "MaxCapacity": 8, + "MinCapacity": 2, + "ResourceId": { + "Fn::Join": [ + "", + [ + "service/", + { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "/", + { + "Fn::GetAtt": [ + "nameserviceService8015C8D6", + "Name" + ] + } + ] + ] + }, + "RoleARN": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/aws-service-role/ecs.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ECSService" + ] + ] + }, + "ScalableDimension": "ecs:service:DesiredCount", + "ServiceNamespace": "ecs" + } + }, + "nameserviceTaskCountTargetnametargetcpuutilization5018B16243": { + "Type": "AWS::ApplicationAutoScaling::ScalingPolicy", + "Properties": { + "PolicyName": "awsecsintegnameserviceTaskCountTargetnametargetcpuutilization50CAB59E05", + "PolicyType": "TargetTrackingScaling", + "ScalingTargetId": { + "Ref": "nameserviceTaskCountTarget366C2B3A" + }, + "TargetTrackingScalingPolicyConfiguration": { + "PredefinedMetricSpecification": { + "PredefinedMetricType": "ECSServiceAverageCPUUtilization" + }, + "ScaleInCooldown": 60, + "ScaleOutCooldown": 60, + "TargetValue": 50 + } + } + }, + "namevirtualnode6C99CB14": { + "Type": "AWS::AppMesh::VirtualNode", + "Properties": { + "MeshName": { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "Spec": { + "Listeners": [ + { + "PortMapping": { + "Port": 80, + "Protocol": "http" + } + } + ], + "ServiceDiscovery": { + "AWSCloudMap": { + "NamespaceName": "production", + "ServiceName": { + "Fn::GetAtt": [ + "nameserviceCloudmapService3D5B0548", + "Name" + ] + } + } + } + }, + "VirtualNodeName": "name" + } + }, + "namevirtualrouterC00E1ACE": { + "Type": "AWS::AppMesh::VirtualRouter", + "Properties": { + "MeshName": { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "Spec": { + "Listeners": [ + { + "PortMapping": { + "Port": 80, + "Protocol": "http" + } + } + ] + }, + "VirtualRouterName": "name" + } + }, + "namevirtualrouternamerouteDCDF3715": { + "Type": "AWS::AppMesh::Route", + "Properties": { + "MeshName": { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "Spec": { + "HttpRoute": { + "Action": { + "WeightedTargets": [ + { + "VirtualNode": { + "Fn::GetAtt": [ + "namevirtualnode6C99CB14", + "VirtualNodeName" + ] + }, + "Weight": 1 + } + ] + }, + "Match": { + "Prefix": "/" + } + } + }, + "VirtualRouterName": { + "Fn::GetAtt": [ + "namevirtualrouterC00E1ACE", + "VirtualRouterName" + ] + }, + "RouteName": "name-route" + } + }, + "namevirtualservice3DDDDF1E": { + "Type": "AWS::AppMesh::VirtualService", + "Properties": { + "MeshName": { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "Spec": { + "Provider": { + "VirtualRouter": { + "VirtualRouterName": { + "Fn::GetAtt": [ + "namevirtualrouterC00E1ACE", + "VirtualRouterName" + ] + } + } + } + }, + "VirtualServiceName": "name.production" + } + }, + "greetinglogsCC360934": { + "Type": "AWS::Logs::LogGroup", + "Properties": { + "LogGroupName": "greeting-logs", + "RetentionInDays": 7 + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "greetingtaskdefinitionTaskRole9179DA4A": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/AWSXRayDaemonWriteAccess" + ] + ] + } + ] + } + }, + "greetingtaskdefinitionTaskRoleDefaultPolicy5DB4510A": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:DescribeLogStreams", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": "*" + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "greetingtaskdefinitionTaskRoleDefaultPolicy5DB4510A", + "Roles": [ + { + "Ref": "greetingtaskdefinitionTaskRole9179DA4A" + } + ] + } + }, + "greetingtaskdefinition31690093": { + "Type": "AWS::ECS::TaskDefinition", + "Properties": { + "ContainerDefinitions": [ + { + "Cpu": 1024, + "DependsOn": [ + { + "Condition": "START", + "ContainerName": "firelens" + }, + { + "Condition": "HEALTHY", + "ContainerName": "envoy" + }, + { + "Condition": "START", + "ContainerName": "cloudwatch-agent" + }, + { + "Condition": "HEALTHY", + "ContainerName": "xray" + } + ], + "Environment": [ + { + "Name": "PORT", + "Value": "80" + } + ], + "Essential": true, + "Image": "nathanpeck/greeting", + "LogConfiguration": { + "LogDriver": "awsfirelens", + "Options": { + "Name": "cloudwatch", + "region": { + "Ref": "AWS::Region" + }, + "log_group_name": { + "Ref": "greetinglogsCC360934" + }, + "log_stream_prefix": "greeting/" + } + }, + "Memory": 2048, + "Name": "app", + "PortMappings": [ + { + "ContainerPort": 80, + "Protocol": "tcp" + } + ], + "Ulimits": [ + { + "HardLimit": 1024000, + "Name": "nofile", + "SoftLimit": 1024000 + } + ] + }, + { + "Environment": [ + { + "Name": "APPMESH_VIRTUAL_NODE_NAME", + "Value": { + "Fn::Join": [ + "", + [ + "mesh/", + { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "/virtualNode/greeting" + ] + ] + } + }, + { + "Name": "AWS_REGION", + "Value": { + "Ref": "AWS::Region" + } + }, + { + "Name": "ENABLE_ENVOY_STATS_TAGS", + "Value": "1" + }, + { + "Name": "ENABLE_ENVOY_DOG_STATSD", + "Value": "1" + } + ], + "Essential": true, + "HealthCheck": { + "Command": [ + "CMD-SHELL", + "curl -s http://localhost:9901/server_info | grep state | grep -q LIVE" + ], + "Interval": 5, + "Retries": 3, + "StartPeriod": 10, + "Timeout": 2 + }, + "Image": { + "Fn::Join": [ + "", + [ + { + "Fn::FindInMap": [ + "greetingenvoyimageaccountmapping", + { + "Ref": "AWS::Region" + }, + "ecrRepo" + ] + }, + ".dkr.ecr.", + { + "Ref": "AWS::Region" + }, + ".", + { + "Ref": "AWS::URLSuffix" + }, + "/aws-appmesh-envoy:v1.15.1.0-prod" + ] + ] + }, + "LogConfiguration": { + "LogDriver": "awslogs", + "Options": { + "awslogs-group": { + "Ref": "greetingtaskdefinitionenvoyLogGroup6556AC35" + }, + "awslogs-stream-prefix": "envoy", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "MemoryReservation": 128, + "Name": "envoy", + "Ulimits": [ + { + "HardLimit": 1024000, + "Name": "nofile", + "SoftLimit": 1024000 + } + ], + "User": "1337" + }, + { + "DependsOn": [ + { + "Condition": "HEALTHY", + "ContainerName": "envoy" + } + ], + "Essential": true, + "FirelensConfiguration": { + "Type": "fluentbit" + }, + "Image": { + "Ref": "SsmParameterValueawsserviceawsforfluentbitlatestC96584B6F00A464EAD1953AFF4B05118Parameter" + }, + "LogConfiguration": { + "LogDriver": "awslogs", + "Options": { + "awslogs-group": { + "Ref": "greetingtaskdefinitionfirelensLogGroupD7A398A7" + }, + "awslogs-stream-prefix": "firelens", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "MemoryReservation": 50, + "Name": "firelens", + "User": "0:1338" + }, + { + "DependsOn": [ + { + "Condition": "HEALTHY", + "ContainerName": "envoy" + } + ], + "Environment": [ + { + "Name": "AWS_REGION", + "Value": { + "Ref": "AWS::Region" + } + } + ], + "Essential": true, + "HealthCheck": { + "Command": [ + "CMD-SHELL", + "curl -s http://localhost:2000" + ], + "Interval": 5, + "Retries": 3, + "StartPeriod": 10, + "Timeout": 2 + }, + "Image": "amazon/aws-xray-daemon:latest", + "LogConfiguration": { + "LogDriver": "awslogs", + "Options": { + "awslogs-group": { + "Ref": "greetingtaskdefinitionxrayLogGroupD25C072D" + }, + "awslogs-stream-prefix": "xray", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "MemoryReservation": 256, + "Name": "xray", + "User": "1337" + }, + { + "DependsOn": [ + { + "Condition": "HEALTHY", + "ContainerName": "envoy" + } + ], + "Environment": [ + { + "Name": "CW_CONFIG_CONTENT", + "Value": "{\"logs\":{\"metrics_collected\":{\"emf\":{}}},\"metrics\":{\"metrics_collected\":{\"statsd\":{}}}}" + } + ], + "Essential": true, + "Image": "amazon/cloudwatch-agent:latest", + "LogConfiguration": { + "LogDriver": "awslogs", + "Options": { + "awslogs-group": { + "Ref": "greetingtaskdefinitioncloudwatchagentLogGroupCEF72742" + }, + "awslogs-stream-prefix": "cloudwatch-agent", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "MemoryReservation": 50, + "Name": "cloudwatch-agent", + "User": "0:1338" + } + ], + "Cpu": "1024", + "ExecutionRoleArn": { + "Fn::GetAtt": [ + "greetingtaskdefinitionExecutionRole9E3A7CF3", + "Arn" + ] + }, + "Family": "awsecsinteggreetingtaskdefinitionA6E8A57B", + "Memory": "2048", + "NetworkMode": "awsvpc", + "ProxyConfiguration": { + "ContainerName": "envoy", + "ProxyConfigurationProperties": [ + { + "Name": "AppPorts", + "Value": "80" + }, + { + "Name": "ProxyEgressPort", + "Value": "15001" + }, + { + "Name": "ProxyIngressPort", + "Value": "15000" + }, + { + "Name": "IgnoredUID", + "Value": "1337" + }, + { + "Name": "IgnoredGID", + "Value": "1338" + }, + { + "Name": "EgressIgnoredIPs", + "Value": "169.254.170.2,169.254.169.254" + } + ], + "Type": "APPMESH" + }, + "RequiresCompatibilities": [ + "EC2", + "FARGATE" + ], + "TaskRoleArn": { + "Fn::GetAtt": [ + "greetingtaskdefinitionTaskRole9179DA4A", + "Arn" + ] + } + } + }, + "greetingtaskdefinitionenvoyLogGroup6556AC35": { + "Type": "AWS::Logs::LogGroup", + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "greetingtaskdefinitionExecutionRole9E3A7CF3": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "greetingtaskdefinitionExecutionRoleDefaultPolicy31B93022": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "ecr:BatchCheckLayerAvailability", + "ecr:GetDownloadUrlForLayer", + "ecr:BatchGetImage" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":ecr:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Fn::FindInMap": [ + "greetingenvoyimageaccountmapping", + { + "Ref": "AWS::Region" + }, + "ecrRepo" + ] + }, + ":repository/aws-appmesh-envoy" + ] + ] + } + }, + { + "Action": "ecr:GetAuthorizationToken", + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "greetingtaskdefinitionenvoyLogGroup6556AC35", + "Arn" + ] + } + }, + { + "Action": [ + "ecr:GetAuthorizationToken", + "ecr:BatchCheckLayerAvailability", + "ecr:GetDownloadUrlForLayer", + "ecr:BatchGetImage" + ], + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "greetingtaskdefinitionfirelensLogGroupD7A398A7", + "Arn" + ] + } + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "greetingtaskdefinitionxrayLogGroupD25C072D", + "Arn" + ] + } + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "greetingtaskdefinitioncloudwatchagentLogGroupCEF72742", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "greetingtaskdefinitionExecutionRoleDefaultPolicy31B93022", + "Roles": [ + { + "Ref": "greetingtaskdefinitionExecutionRole9E3A7CF3" + } + ] + } + }, + "greetingtaskdefinitionfirelensLogGroupD7A398A7": { + "Type": "AWS::Logs::LogGroup", + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "greetingtaskdefinitionxrayLogGroupD25C072D": { + "Type": "AWS::Logs::LogGroup", + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "greetingtaskdefinitioncloudwatchagentLogGroupCEF72742": { + "Type": "AWS::Logs::LogGroup", + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "greetingenvoytoappmesh97051B23": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "appmesh:StreamAggregatedResources", + "Effect": "Allow", + "Resource": { + "Ref": "mymeshEA67EDEF" + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "greetingenvoytoappmesh97051B23", + "Roles": [ + { + "Ref": "greetingtaskdefinitionTaskRole9179DA4A" + } + ] + } + }, + "greetingpublishmetricsF17124EF": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "cloudwatch:PutMetricData", + "Effect": "Allow", + "Resource": "*" + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "greetingpublishmetricsF17124EF", + "Roles": [ + { + "Ref": "greetingtaskdefinitionTaskRole9179DA4A" + } + ] + } + }, + "greetingserviceService8DA58640": { + "Type": "AWS::ECS::Service", + "Properties": { + "Cluster": { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "DeploymentConfiguration": { + "MaximumPercent": 150, + "MinimumHealthyPercent": 100 + }, + "DesiredCount": 2, + "EnableECSManagedTags": false, + "LaunchType": "FARGATE", + "NetworkConfiguration": { + "AwsvpcConfiguration": { + "AssignPublicIp": "DISABLED", + "SecurityGroups": [ + { + "Fn::GetAtt": [ + "greetingserviceSecurityGroupE9BE665B", + "GroupId" + ] + } + ], + "Subnets": [ + { + "Ref": "productionenvironmentvpcPrivateSubnet1Subnet53F632E6" + }, + { + "Ref": "productionenvironmentvpcPrivateSubnet2Subnet756FB93C" + } + ] + } + }, + "ServiceRegistries": [ + { + "RegistryArn": { + "Fn::GetAtt": [ + "greetingserviceCloudmapService0A2D7385", + "Arn" + ] + } + } + ], + "TaskDefinition": { + "Ref": "greetingtaskdefinition31690093" + } + } + }, + "greetingserviceCloudmapService0A2D7385": { + "Type": "AWS::ServiceDiscovery::Service", + "Properties": { + "DnsConfig": { + "DnsRecords": [ + { + "TTL": 10, + "Type": "A" + } + ], + "NamespaceId": { + "Fn::GetAtt": [ + "productionenvironmentclusterDefaultServiceDiscoveryNamespaceBE74D64D", + "Id" + ] + }, + "RoutingPolicy": "MULTIVALUE" + }, + "HealthCheckCustomConfig": { + "FailureThreshold": 2 + }, + "Name": "greeting", + "NamespaceId": { + "Fn::GetAtt": [ + "productionenvironmentclusterDefaultServiceDiscoveryNamespaceBE74D64D", + "Id" + ] + } + } + }, + "greetingserviceSecurityGroupE9BE665B": { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "aws-ecs-integ/greeting-service/SecurityGroup", + "SecurityGroupEgress": [ + { + "CidrIp": "0.0.0.0/0", + "Description": "Allow all outbound traffic by default", + "IpProtocol": "-1" + } + ], + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + } + } + }, + "greetingserviceSecurityGroupfromawsecsinteggreeterserviceSecurityGroup055DC23B807B9C4357": { + "Type": "AWS::EC2::SecurityGroupIngress", + "Properties": { + "IpProtocol": "tcp", + "Description": "Accept inbound traffic from greeter", + "FromPort": 80, + "GroupId": { + "Fn::GetAtt": [ + "greetingserviceSecurityGroupE9BE665B", + "GroupId" + ] + }, + "SourceSecurityGroupId": { + "Fn::GetAtt": [ + "greeterserviceSecurityGroupDB4AC3A9", + "GroupId" + ] + }, + "ToPort": 80 + } + }, + "greetingserviceTaskCountTargetA036048C": { + "Type": "AWS::ApplicationAutoScaling::ScalableTarget", + "Properties": { + "MaxCapacity": 8, + "MinCapacity": 2, + "ResourceId": { + "Fn::Join": [ + "", + [ + "service/", + { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "/", + { + "Fn::GetAtt": [ + "greetingserviceService8DA58640", + "Name" + ] + } + ] + ] + }, + "RoleARN": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/aws-service-role/ecs.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ECSService" + ] + ] + }, + "ScalableDimension": "ecs:service:DesiredCount", + "ServiceNamespace": "ecs" + } + }, + "greetingserviceTaskCountTargetgreetingtargetcpuutilization50FEAF6434": { + "Type": "AWS::ApplicationAutoScaling::ScalingPolicy", + "Properties": { + "PolicyName": "awsecsinteggreetingserviceTaskCountTargetgreetingtargetcpuutilization504C76B1F4", + "PolicyType": "TargetTrackingScaling", + "ScalingTargetId": { + "Ref": "greetingserviceTaskCountTargetA036048C" + }, + "TargetTrackingScalingPolicyConfiguration": { + "PredefinedMetricSpecification": { + "PredefinedMetricType": "ECSServiceAverageCPUUtilization" + }, + "ScaleInCooldown": 60, + "ScaleOutCooldown": 60, + "TargetValue": 50 + } + } + }, + "greetingvirtualnodeC4A2C517": { + "Type": "AWS::AppMesh::VirtualNode", + "Properties": { + "MeshName": { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "Spec": { + "Listeners": [ + { + "PortMapping": { + "Port": 80, + "Protocol": "http" + } + } + ], + "ServiceDiscovery": { + "AWSCloudMap": { + "NamespaceName": "production", + "ServiceName": { + "Fn::GetAtt": [ + "greetingserviceCloudmapService0A2D7385", + "Name" + ] + } + } + } + }, + "VirtualNodeName": "greeting" + } + }, + "greetingvirtualrouter0F898D1A": { + "Type": "AWS::AppMesh::VirtualRouter", + "Properties": { + "MeshName": { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "Spec": { + "Listeners": [ + { + "PortMapping": { + "Port": 80, + "Protocol": "http" + } + } + ] + }, + "VirtualRouterName": "greeting" + } + }, + "greetingvirtualroutergreetingroute46305F50": { + "Type": "AWS::AppMesh::Route", + "Properties": { + "MeshName": { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "Spec": { + "HttpRoute": { + "Action": { + "WeightedTargets": [ + { + "VirtualNode": { + "Fn::GetAtt": [ + "greetingvirtualnodeC4A2C517", + "VirtualNodeName" + ] + }, + "Weight": 1 + } + ] + }, + "Match": { + "Prefix": "/" + } + } + }, + "VirtualRouterName": { + "Fn::GetAtt": [ + "greetingvirtualrouter0F898D1A", + "VirtualRouterName" + ] + }, + "RouteName": "greeting-route" + } + }, + "greetingvirtualservice60AD3AD9": { + "Type": "AWS::AppMesh::VirtualService", + "Properties": { + "MeshName": { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "Spec": { + "Provider": { + "VirtualRouter": { + "VirtualRouterName": { + "Fn::GetAtt": [ + "greetingvirtualrouter0F898D1A", + "VirtualRouterName" + ] + } + } + } + }, + "VirtualServiceName": "greeting.production" + } + }, + "greeterlogsCCD2F8B2": { + "Type": "AWS::Logs::LogGroup", + "Properties": { + "LogGroupName": "greeter-logs", + "RetentionInDays": 7 + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "greeterloadbalancer85256741": { + "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", + "Properties": { + "LoadBalancerAttributes": [ + { + "Key": "deletion_protection.enabled", + "Value": "false" + } + ], + "Scheme": "internet-facing", + "SecurityGroups": [ + { + "Fn::GetAtt": [ + "greeterloadbalancerSecurityGroupEE1B20F3", + "GroupId" + ] + } + ], + "Subnets": [ + { + "Ref": "productionenvironmentvpcPublicSubnet1Subnet8D92C089" + }, + { + "Ref": "productionenvironmentvpcPublicSubnet2Subnet298E6C31" + } + ], + "Type": "application" + }, + "DependsOn": [ + "productionenvironmentvpcPublicSubnet1DefaultRoute524C894D", + "productionenvironmentvpcPublicSubnet2DefaultRoute92CD697D" + ] + }, + "greeterloadbalancerSecurityGroupEE1B20F3": { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Automatically created Security Group for ELB awsecsinteggreeterloadbalancer147D1D5C", + "SecurityGroupIngress": [ + { + "CidrIp": "0.0.0.0/0", + "Description": "Allow from anyone on port 80", + "FromPort": 80, + "IpProtocol": "tcp", + "ToPort": 80 + } + ], + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + } + } + }, + "greeterloadbalancerSecurityGrouptoawsecsinteggreeterserviceSecurityGroup055DC23B803EEF3320": { + "Type": "AWS::EC2::SecurityGroupEgress", + "Properties": { + "GroupId": { + "Fn::GetAtt": [ + "greeterloadbalancerSecurityGroupEE1B20F3", + "GroupId" + ] + }, + "IpProtocol": "tcp", + "Description": "Load balancer to target", + "DestinationSecurityGroupId": { + "Fn::GetAtt": [ + "greeterserviceSecurityGroupDB4AC3A9", + "GroupId" + ] + }, + "FromPort": 80, + "ToPort": 80 + } + }, + "greeterloadbalancergreeterlistener952E028B": { + "Type": "AWS::ElasticLoadBalancingV2::Listener", + "Properties": { + "DefaultActions": [ + { + "TargetGroupArn": { + "Ref": "greeterloadbalancergreeterlistenergreeterGroupFFBFF0C2" + }, + "Type": "forward" + } + ], + "LoadBalancerArn": { + "Ref": "greeterloadbalancer85256741" + }, + "Port": 80, + "Protocol": "HTTP" + } + }, + "greeterloadbalancergreeterlistenergreeterGroupFFBFF0C2": { + "Type": "AWS::ElasticLoadBalancingV2::TargetGroup", + "Properties": { + "Port": 80, + "Protocol": "HTTP", + "TargetGroupAttributes": [ + { + "Key": "deregistration_delay.timeout_seconds", + "Value": "10" + }, + { + "Key": "stickiness.enabled", + "Value": "false" + } + ], + "TargetType": "ip", + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + } + } + }, + "greetertaskdefinitionTaskRole2A098ACC": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/AWSXRayDaemonWriteAccess" + ] + ] + } + ] + } + }, + "greetertaskdefinitionTaskRoleDefaultPolicyD0F53B1C": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:DescribeLogStreams", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": "*" + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "greetertaskdefinitionTaskRoleDefaultPolicyD0F53B1C", + "Roles": [ + { + "Ref": "greetertaskdefinitionTaskRole2A098ACC" + } + ] + } + }, + "greetertaskdefinitionE956EEA2": { + "Type": "AWS::ECS::TaskDefinition", + "Properties": { + "ContainerDefinitions": [ + { + "Cpu": 1024, + "DependsOn": [ + { + "Condition": "START", + "ContainerName": "firelens" + }, + { + "Condition": "HEALTHY", + "ContainerName": "envoy" + }, + { + "Condition": "START", + "ContainerName": "cloudwatch-agent" + }, + { + "Condition": "HEALTHY", + "ContainerName": "xray" + } + ], + "Environment": [ + { + "Name": "PORT", + "Value": "80" + }, + { + "Name": "GREETING_URL", + "Value": "http://greeting.production" + }, + { + "Name": "NAME_URL", + "Value": "http://name.production" + } + ], + "Essential": true, + "Image": "nathanpeck/greeter", + "LogConfiguration": { + "LogDriver": "awsfirelens", + "Options": { + "Name": "cloudwatch", + "region": { + "Ref": "AWS::Region" + }, + "log_group_name": { + "Ref": "greeterlogsCCD2F8B2" + }, + "log_stream_prefix": "greeter/" + } + }, + "Memory": 2048, + "Name": "app", + "PortMappings": [ + { + "ContainerPort": 80, + "Protocol": "tcp" + } + ], + "Ulimits": [ + { + "HardLimit": 1024000, + "Name": "nofile", + "SoftLimit": 1024000 + } + ] + }, + { + "Environment": [ + { + "Name": "APPMESH_VIRTUAL_NODE_NAME", + "Value": { + "Fn::Join": [ + "", + [ + "mesh/", + { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "/virtualNode/greeter" + ] + ] + } + }, + { + "Name": "AWS_REGION", + "Value": { + "Ref": "AWS::Region" + } + }, + { + "Name": "ENABLE_ENVOY_STATS_TAGS", + "Value": "1" + }, + { + "Name": "ENABLE_ENVOY_DOG_STATSD", + "Value": "1" + } + ], + "Essential": true, + "HealthCheck": { + "Command": [ + "CMD-SHELL", + "curl -s http://localhost:9901/server_info | grep state | grep -q LIVE" + ], + "Interval": 5, + "Retries": 3, + "StartPeriod": 10, + "Timeout": 2 + }, + "Image": { + "Fn::Join": [ + "", + [ + { + "Fn::FindInMap": [ + "greeterenvoyimageaccountmapping", + { + "Ref": "AWS::Region" + }, + "ecrRepo" + ] + }, + ".dkr.ecr.", + { + "Ref": "AWS::Region" + }, + ".", + { + "Ref": "AWS::URLSuffix" + }, + "/aws-appmesh-envoy:v1.15.1.0-prod" + ] + ] + }, + "LogConfiguration": { + "LogDriver": "awslogs", + "Options": { + "awslogs-group": { + "Ref": "greetertaskdefinitionenvoyLogGroup6E10B93E" + }, + "awslogs-stream-prefix": "envoy", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "MemoryReservation": 128, + "Name": "envoy", + "Ulimits": [ + { + "HardLimit": 1024000, + "Name": "nofile", + "SoftLimit": 1024000 + } + ], + "User": "1337" + }, + { + "DependsOn": [ + { + "Condition": "HEALTHY", + "ContainerName": "envoy" + } + ], + "Essential": true, + "FirelensConfiguration": { + "Type": "fluentbit" + }, + "Image": { + "Ref": "SsmParameterValueawsserviceawsforfluentbitlatestC96584B6F00A464EAD1953AFF4B05118Parameter" + }, + "LogConfiguration": { + "LogDriver": "awslogs", + "Options": { + "awslogs-group": { + "Ref": "greetertaskdefinitionfirelensLogGroupD5BAAC35" + }, + "awslogs-stream-prefix": "firelens", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "MemoryReservation": 50, + "Name": "firelens", + "User": "0:1338" + }, + { + "DependsOn": [ + { + "Condition": "HEALTHY", + "ContainerName": "envoy" + } + ], + "Environment": [ + { + "Name": "AWS_REGION", + "Value": { + "Ref": "AWS::Region" + } + } + ], + "Essential": true, + "HealthCheck": { + "Command": [ + "CMD-SHELL", + "curl -s http://localhost:2000" + ], + "Interval": 5, + "Retries": 3, + "StartPeriod": 10, + "Timeout": 2 + }, + "Image": "amazon/aws-xray-daemon:latest", + "LogConfiguration": { + "LogDriver": "awslogs", + "Options": { + "awslogs-group": { + "Ref": "greetertaskdefinitionxrayLogGroupBC1558B6" + }, + "awslogs-stream-prefix": "xray", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "MemoryReservation": 256, + "Name": "xray", + "User": "1337" + }, + { + "DependsOn": [ + { + "Condition": "HEALTHY", + "ContainerName": "envoy" + } + ], + "Environment": [ + { + "Name": "CW_CONFIG_CONTENT", + "Value": "{\"logs\":{\"metrics_collected\":{\"emf\":{}}},\"metrics\":{\"metrics_collected\":{\"statsd\":{}}}}" + } + ], + "Essential": true, + "Image": "amazon/cloudwatch-agent:latest", + "LogConfiguration": { + "LogDriver": "awslogs", + "Options": { + "awslogs-group": { + "Ref": "greetertaskdefinitioncloudwatchagentLogGroupE7EAF327" + }, + "awslogs-stream-prefix": "cloudwatch-agent", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "MemoryReservation": 50, + "Name": "cloudwatch-agent", + "User": "0:1338" + } + ], + "Cpu": "1024", + "ExecutionRoleArn": { + "Fn::GetAtt": [ + "greetertaskdefinitionExecutionRoleAED0EC79", + "Arn" + ] + }, + "Family": "awsecsinteggreetertaskdefinitionB95239FB", + "Memory": "2048", + "NetworkMode": "awsvpc", + "ProxyConfiguration": { + "ContainerName": "envoy", + "ProxyConfigurationProperties": [ + { + "Name": "AppPorts", + "Value": "80" + }, + { + "Name": "ProxyEgressPort", + "Value": "15001" + }, + { + "Name": "ProxyIngressPort", + "Value": "15000" + }, + { + "Name": "IgnoredUID", + "Value": "1337" + }, + { + "Name": "IgnoredGID", + "Value": "1338" + }, + { + "Name": "EgressIgnoredIPs", + "Value": "169.254.170.2,169.254.169.254" + } + ], + "Type": "APPMESH" + }, + "RequiresCompatibilities": [ + "EC2", + "FARGATE" + ], + "TaskRoleArn": { + "Fn::GetAtt": [ + "greetertaskdefinitionTaskRole2A098ACC", + "Arn" + ] + } + } + }, + "greetertaskdefinitionenvoyLogGroup6E10B93E": { + "Type": "AWS::Logs::LogGroup", + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "greetertaskdefinitionExecutionRoleAED0EC79": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "greetertaskdefinitionExecutionRoleDefaultPolicy0D8E9106": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "ecr:BatchCheckLayerAvailability", + "ecr:GetDownloadUrlForLayer", + "ecr:BatchGetImage" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":ecr:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Fn::FindInMap": [ + "greeterenvoyimageaccountmapping", + { + "Ref": "AWS::Region" + }, + "ecrRepo" + ] + }, + ":repository/aws-appmesh-envoy" + ] + ] + } + }, + { + "Action": "ecr:GetAuthorizationToken", + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "greetertaskdefinitionenvoyLogGroup6E10B93E", + "Arn" + ] + } + }, + { + "Action": [ + "ecr:GetAuthorizationToken", + "ecr:BatchCheckLayerAvailability", + "ecr:GetDownloadUrlForLayer", + "ecr:BatchGetImage" + ], + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "greetertaskdefinitionfirelensLogGroupD5BAAC35", + "Arn" + ] + } + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "greetertaskdefinitionxrayLogGroupBC1558B6", + "Arn" + ] + } + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "greetertaskdefinitioncloudwatchagentLogGroupE7EAF327", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "greetertaskdefinitionExecutionRoleDefaultPolicy0D8E9106", + "Roles": [ + { + "Ref": "greetertaskdefinitionExecutionRoleAED0EC79" + } + ] + } + }, + "greetertaskdefinitionfirelensLogGroupD5BAAC35": { + "Type": "AWS::Logs::LogGroup", + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "greetertaskdefinitionxrayLogGroupBC1558B6": { + "Type": "AWS::Logs::LogGroup", + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "greetertaskdefinitioncloudwatchagentLogGroupE7EAF327": { + "Type": "AWS::Logs::LogGroup", + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "greeterenvoytoappmesh1A94938B": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "appmesh:StreamAggregatedResources", + "Effect": "Allow", + "Resource": { + "Ref": "mymeshEA67EDEF" + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "greeterenvoytoappmesh1A94938B", + "Roles": [ + { + "Ref": "greetertaskdefinitionTaskRole2A098ACC" + } + ] + } + }, + "greeterpublishmetrics0CCA359A": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "cloudwatch:PutMetricData", + "Effect": "Allow", + "Resource": "*" + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "greeterpublishmetrics0CCA359A", + "Roles": [ + { + "Ref": "greetertaskdefinitionTaskRole2A098ACC" + } + ] + } + }, + "greeterserviceService8EDD3244": { + "Type": "AWS::ECS::Service", + "Properties": { + "Cluster": { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "DeploymentConfiguration": { + "MaximumPercent": 150, + "MinimumHealthyPercent": 100 + }, + "DesiredCount": 2, + "EnableECSManagedTags": false, + "HealthCheckGracePeriodSeconds": 60, + "LaunchType": "FARGATE", + "LoadBalancers": [ + { + "ContainerName": "app", + "ContainerPort": 80, + "TargetGroupArn": { + "Ref": "greeterloadbalancergreeterlistenergreeterGroupFFBFF0C2" + } + } + ], + "NetworkConfiguration": { + "AwsvpcConfiguration": { + "AssignPublicIp": "DISABLED", + "SecurityGroups": [ + { + "Fn::GetAtt": [ + "greeterserviceSecurityGroupDB4AC3A9", + "GroupId" + ] + } + ], + "Subnets": [ + { + "Ref": "productionenvironmentvpcPrivateSubnet1Subnet53F632E6" + }, + { + "Ref": "productionenvironmentvpcPrivateSubnet2Subnet756FB93C" + } + ] + } + }, + "ServiceRegistries": [ + { + "RegistryArn": { + "Fn::GetAtt": [ + "greeterserviceCloudmapServiceEE292978", + "Arn" + ] + } + } + ], + "TaskDefinition": { + "Ref": "greetertaskdefinitionE956EEA2" + } + }, + "DependsOn": [ + "greeterloadbalancergreeterlistenergreeterGroupFFBFF0C2", + "greeterloadbalancergreeterlistener952E028B" + ] + }, + "greeterserviceCloudmapServiceEE292978": { + "Type": "AWS::ServiceDiscovery::Service", + "Properties": { + "DnsConfig": { + "DnsRecords": [ + { + "TTL": 10, + "Type": "A" + } + ], + "NamespaceId": { + "Fn::GetAtt": [ + "productionenvironmentclusterDefaultServiceDiscoveryNamespaceBE74D64D", + "Id" + ] + }, + "RoutingPolicy": "MULTIVALUE" + }, + "HealthCheckCustomConfig": { + "FailureThreshold": 2 + }, + "Name": "greeter", + "NamespaceId": { + "Fn::GetAtt": [ + "productionenvironmentclusterDefaultServiceDiscoveryNamespaceBE74D64D", + "Id" + ] + } + } + }, + "greeterserviceSecurityGroupDB4AC3A9": { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "aws-ecs-integ/greeter-service/SecurityGroup", + "SecurityGroupEgress": [ + { + "CidrIp": "0.0.0.0/0", + "Description": "Allow all outbound traffic by default", + "IpProtocol": "-1" + } + ], + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + } + } + }, + "greeterserviceSecurityGroupfromawsecsinteggreeterloadbalancerSecurityGroupF791FA838037FDF8F5": { + "Type": "AWS::EC2::SecurityGroupIngress", + "Properties": { + "IpProtocol": "tcp", + "Description": "Load balancer to target", + "FromPort": 80, + "GroupId": { + "Fn::GetAtt": [ + "greeterserviceSecurityGroupDB4AC3A9", + "GroupId" + ] + }, + "SourceSecurityGroupId": { + "Fn::GetAtt": [ + "greeterloadbalancerSecurityGroupEE1B20F3", + "GroupId" + ] + }, + "ToPort": 80 + } + }, + "greeterserviceTaskCountTargetAB95B3D0": { + "Type": "AWS::ApplicationAutoScaling::ScalableTarget", + "Properties": { + "MaxCapacity": 8, + "MinCapacity": 2, + "ResourceId": { + "Fn::Join": [ + "", + [ + "service/", + { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "/", + { + "Fn::GetAtt": [ + "greeterserviceService8EDD3244", + "Name" + ] + } + ] + ] + }, + "RoleARN": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/aws-service-role/ecs.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ECSService" + ] + ] + }, + "ScalableDimension": "ecs:service:DesiredCount", + "ServiceNamespace": "ecs" + } + }, + "greeterserviceTaskCountTargetgreetertargetcpuutilization50299508D1": { + "Type": "AWS::ApplicationAutoScaling::ScalingPolicy", + "Properties": { + "PolicyName": "awsecsinteggreeterserviceTaskCountTargetgreetertargetcpuutilization50A75D0C0D", + "PolicyType": "TargetTrackingScaling", + "ScalingTargetId": { + "Ref": "greeterserviceTaskCountTargetAB95B3D0" + }, + "TargetTrackingScalingPolicyConfiguration": { + "PredefinedMetricSpecification": { + "PredefinedMetricType": "ECSServiceAverageCPUUtilization" + }, + "ScaleInCooldown": 60, + "ScaleOutCooldown": 60, + "TargetValue": 50 + } + } + }, + "greetervirtualnode21EA7CC9": { + "Type": "AWS::AppMesh::VirtualNode", + "Properties": { + "MeshName": { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "Spec": { + "Backends": [ + { + "VirtualService": { + "VirtualServiceName": "name.production" + } + }, + { + "VirtualService": { + "VirtualServiceName": "greeting.production" + } + } + ], + "Listeners": [ + { + "PortMapping": { + "Port": 80, + "Protocol": "http" + } + } + ], + "ServiceDiscovery": { + "AWSCloudMap": { + "NamespaceName": "production", + "ServiceName": { + "Fn::GetAtt": [ + "greeterserviceCloudmapServiceEE292978", + "Name" + ] + } + } + } + }, + "VirtualNodeName": "greeter" + } + }, + "greetervirtualrouter193840BB": { + "Type": "AWS::AppMesh::VirtualRouter", + "Properties": { + "MeshName": { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "Spec": { + "Listeners": [ + { + "PortMapping": { + "Port": 80, + "Protocol": "http" + } + } + ] + }, + "VirtualRouterName": "greeter" + } + }, + "greetervirtualroutergreeterroute3EC6ACB0": { + "Type": "AWS::AppMesh::Route", + "Properties": { + "MeshName": { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "Spec": { + "HttpRoute": { + "Action": { + "WeightedTargets": [ + { + "VirtualNode": { + "Fn::GetAtt": [ + "greetervirtualnode21EA7CC9", + "VirtualNodeName" + ] + }, + "Weight": 1 + } + ] + }, + "Match": { + "Prefix": "/" + } + } + }, + "VirtualRouterName": { + "Fn::GetAtt": [ + "greetervirtualrouter193840BB", + "VirtualRouterName" + ] + }, + "RouteName": "greeter-route" + } + }, + "greetervirtualservice6559950C": { + "Type": "AWS::AppMesh::VirtualService", + "Properties": { + "MeshName": { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "Spec": { + "Provider": { + "VirtualRouter": { + "VirtualRouterName": { + "Fn::GetAtt": [ + "greetervirtualrouter193840BB", + "VirtualRouterName" + ] + } + } + } + }, + "VirtualServiceName": "greeter.production" + } + } + }, + "Mappings": { + "nameenvoyimageaccountmapping": { + "ap-northeast-1": { + "ecrRepo": "840364872350" + }, + "ap-northeast-2": { + "ecrRepo": "840364872350" + }, + "ap-south-1": { + "ecrRepo": "840364872350" + }, + "ap-southeast-1": { + "ecrRepo": "840364872350" + }, + "ap-southeast-2": { + "ecrRepo": "840364872350" + }, + "ca-central-1": { + "ecrRepo": "840364872350" + }, + "cn-north-1": { + "ecrRepo": "919366029133" + }, + "cn-northwest-1": { + "ecrRepo": "919830735681" + }, + "eu-central-1": { + "ecrRepo": "840364872350" + }, + "eu-north-1": { + "ecrRepo": "840364872350" + }, + "eu-south-1": { + "ecrRepo": "422531588944" + }, + "eu-west-1": { + "ecrRepo": "840364872350" + }, + "eu-west-2": { + "ecrRepo": "840364872350" + }, + "eu-west-3": { + "ecrRepo": "840364872350" + }, + "sa-east-1": { + "ecrRepo": "840364872350" + }, + "us-east-1": { + "ecrRepo": "840364872350" + }, + "us-east-2": { + "ecrRepo": "840364872350" + }, + "us-west-1": { + "ecrRepo": "840364872350" + }, + "us-west-2": { + "ecrRepo": "840364872350" + }, + "me-south-1": { + "ecrRepo": "772975370895" + }, + "ap-east-1": { + "ecrRepo": "856666278305" + }, + "af-south-1": { + "ecrRepo": "924023996002" + } + }, + "greetingenvoyimageaccountmapping": { + "ap-northeast-1": { + "ecrRepo": "840364872350" + }, + "ap-northeast-2": { + "ecrRepo": "840364872350" + }, + "ap-south-1": { + "ecrRepo": "840364872350" + }, + "ap-southeast-1": { + "ecrRepo": "840364872350" + }, + "ap-southeast-2": { + "ecrRepo": "840364872350" + }, + "ca-central-1": { + "ecrRepo": "840364872350" + }, + "cn-north-1": { + "ecrRepo": "919366029133" + }, + "cn-northwest-1": { + "ecrRepo": "919830735681" + }, + "eu-central-1": { + "ecrRepo": "840364872350" + }, + "eu-north-1": { + "ecrRepo": "840364872350" + }, + "eu-south-1": { + "ecrRepo": "422531588944" + }, + "eu-west-1": { + "ecrRepo": "840364872350" + }, + "eu-west-2": { + "ecrRepo": "840364872350" + }, + "eu-west-3": { + "ecrRepo": "840364872350" + }, + "sa-east-1": { + "ecrRepo": "840364872350" + }, + "us-east-1": { + "ecrRepo": "840364872350" + }, + "us-east-2": { + "ecrRepo": "840364872350" + }, + "us-west-1": { + "ecrRepo": "840364872350" + }, + "us-west-2": { + "ecrRepo": "840364872350" + }, + "me-south-1": { + "ecrRepo": "772975370895" + }, + "ap-east-1": { + "ecrRepo": "856666278305" + }, + "af-south-1": { + "ecrRepo": "924023996002" + } + }, + "greeterenvoyimageaccountmapping": { + "ap-northeast-1": { + "ecrRepo": "840364872350" + }, + "ap-northeast-2": { + "ecrRepo": "840364872350" + }, + "ap-south-1": { + "ecrRepo": "840364872350" + }, + "ap-southeast-1": { + "ecrRepo": "840364872350" + }, + "ap-southeast-2": { + "ecrRepo": "840364872350" + }, + "ca-central-1": { + "ecrRepo": "840364872350" + }, + "cn-north-1": { + "ecrRepo": "919366029133" + }, + "cn-northwest-1": { + "ecrRepo": "919830735681" + }, + "eu-central-1": { + "ecrRepo": "840364872350" + }, + "eu-north-1": { + "ecrRepo": "840364872350" + }, + "eu-south-1": { + "ecrRepo": "422531588944" + }, + "eu-west-1": { + "ecrRepo": "840364872350" + }, + "eu-west-2": { + "ecrRepo": "840364872350" + }, + "eu-west-3": { + "ecrRepo": "840364872350" + }, + "sa-east-1": { + "ecrRepo": "840364872350" + }, + "us-east-1": { + "ecrRepo": "840364872350" + }, + "us-east-2": { + "ecrRepo": "840364872350" + }, + "us-west-1": { + "ecrRepo": "840364872350" + }, + "us-west-2": { + "ecrRepo": "840364872350" + }, + "me-south-1": { + "ecrRepo": "772975370895" + }, + "ap-east-1": { + "ecrRepo": "856666278305" + }, + "af-south-1": { + "ecrRepo": "924023996002" + } + } + }, + "Parameters": { + "SsmParameterValueawsserviceawsforfluentbitlatestC96584B6F00A464EAD1953AFF4B05118Parameter": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/aws/service/aws-for-fluent-bit/latest" + } + }, + "Outputs": { + "greeterloadbalancerdnsoutput": { + "Value": { + "Fn::GetAtt": [ + "greeterloadbalancer85256741", + "DNSName" + ] + } + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/all-service-addons.integ.snapshot/cdk.out b/packages/@aws-cdk-containers/ecs-service-extensions/test/all-service-addons.integ.snapshot/cdk.out new file mode 100644 index 0000000000000..90bef2e09ad39 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/all-service-addons.integ.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"17.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/all-service-addons.integ.snapshot/manifest.json b/packages/@aws-cdk-containers/ecs-service-extensions/test/all-service-addons.integ.snapshot/manifest.json new file mode 100644 index 0000000000000..4b0fdd054a3a0 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/all-service-addons.integ.snapshot/manifest.json @@ -0,0 +1,645 @@ +{ + "version": "17.0.0", + "artifacts": { + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + }, + "metadata": {} + }, + "aws-ecs-integ": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-ecs-integ.template.json", + "validateOnSynth": false + }, + "metadata": { + "/aws-ecs-integ/my-mesh/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "mymeshEA67EDEF" + } + ], + "/aws-ecs-integ/production-environment-vpc/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcAEB47DF7" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet1/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet1Subnet8D92C089" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet1/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet1RouteTable6E9ABC21" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet1/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet1RouteTableAssociationA8117374" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet1/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet1DefaultRoute524C894D" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet1/EIP": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet1EIP54BA88DB" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet1/NATGateway": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet1NATGateway6075E4CA" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet2/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet2Subnet298E6C31" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet2/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet2RouteTable842A68D7" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet2/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet2RouteTableAssociation0A7549F3" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet2/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet2DefaultRoute92CD697D" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet2/EIP": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet2EIP14CA46AA" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet2/NATGateway": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet2NATGatewayE1850FCC" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet1/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet1Subnet53F632E6" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet1/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet1RouteTable2C6DFF0C" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet1/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet1RouteTableAssociation8BA32463" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet1/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet1DefaultRouteFBB3DE6C" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet2/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet2Subnet756FB93C" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet2/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet2RouteTable2F77D0D2" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet2/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet2RouteTableAssociation09188261" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet2/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet2DefaultRoute5F9AB6C1" + } + ], + "/aws-ecs-integ/production-environment-vpc/IGW": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcIGWE7C39890" + } + ], + "/aws-ecs-integ/production-environment-vpc/VPCGW": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcVPCGW1B428D07" + } + ], + "/aws-ecs-integ/production-environment-cluster/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentclusterC6599D2D" + } + ], + "/aws-ecs-integ/production-environment-cluster/DefaultServiceDiscoveryNamespace/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentclusterDefaultServiceDiscoveryNamespaceBE74D64D" + } + ], + "/aws-ecs-integ/name-logs/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "namelogsF4B17D31" + } + ], + "/aws-ecs-integ/name-task-definition/TaskRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nametaskdefinitionTaskRole50FE844E" + } + ], + "/aws-ecs-integ/name-task-definition/TaskRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nametaskdefinitionTaskRoleDefaultPolicyE66EDC68" + } + ], + "/aws-ecs-integ/name-task-definition/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nametaskdefinition690762BB" + } + ], + "/aws-ecs-integ/name-task-definition/envoy/LogGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nametaskdefinitionenvoyLogGroup258B673B" + } + ], + "/aws-ecs-integ/name-task-definition/ExecutionRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nametaskdefinitionExecutionRole45AC5C9A" + } + ], + "/aws-ecs-integ/name-task-definition/ExecutionRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nametaskdefinitionExecutionRoleDefaultPolicyF7942D20" + } + ], + "/aws-ecs-integ/name-task-definition/firelens/LogGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nametaskdefinitionfirelensLogGroup80DDA60F" + } + ], + "/aws-ecs-integ/name-task-definition/xray/LogGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nametaskdefinitionxrayLogGroup4AF4CA37" + } + ], + "/aws-ecs-integ/name-task-definition/cloudwatch-agent/LogGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nametaskdefinitioncloudwatchagentLogGroup78DDC685" + } + ], + "/aws-ecs-integ/name-envoy-image-account-mapping": [ + { + "type": "aws:cdk:logicalId", + "data": "nameenvoyimageaccountmapping" + } + ], + "/aws-ecs-integ/name-envoy-to-appmesh/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameenvoytoappmesh2767D3E6" + } + ], + "/aws-ecs-integ/SsmParameterValue:--aws--service--aws-for-fluent-bit--latest:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter": [ + { + "type": "aws:cdk:logicalId", + "data": "SsmParameterValueawsserviceawsforfluentbitlatestC96584B6F00A464EAD1953AFF4B05118Parameter" + } + ], + "/aws-ecs-integ/name-publish-metrics/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "namepublishmetricsF329C7AE" + } + ], + "/aws-ecs-integ/name-service/Service": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceService8015C8D6" + } + ], + "/aws-ecs-integ/name-service/CloudmapService/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceCloudmapService3D5B0548" + } + ], + "/aws-ecs-integ/name-service/SecurityGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceSecurityGroup33F4662C" + } + ], + "/aws-ecs-integ/name-service/SecurityGroup/from awsecsinteggreeterserviceSecurityGroup055DC23B:80": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceSecurityGroupfromawsecsinteggreeterserviceSecurityGroup055DC23B8048057EFF" + } + ], + "/aws-ecs-integ/name-service/TaskCount/Target/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceTaskCountTarget366C2B3A" + } + ], + "/aws-ecs-integ/name-service/TaskCount/Target/name-target-cpu-utilization-50/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceTaskCountTargetnametargetcpuutilization5018B16243" + } + ], + "/aws-ecs-integ/name-virtual-node/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "namevirtualnode6C99CB14" + } + ], + "/aws-ecs-integ/name-virtual-router/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "namevirtualrouterC00E1ACE" + } + ], + "/aws-ecs-integ/name-virtual-router/name-route/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "namevirtualrouternamerouteDCDF3715" + } + ], + "/aws-ecs-integ/name-virtual-service/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "namevirtualservice3DDDDF1E" + } + ], + "/aws-ecs-integ/greeting-logs/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetinglogsCC360934" + } + ], + "/aws-ecs-integ/greeting-task-definition/TaskRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetingtaskdefinitionTaskRole9179DA4A" + } + ], + "/aws-ecs-integ/greeting-task-definition/TaskRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetingtaskdefinitionTaskRoleDefaultPolicy5DB4510A" + } + ], + "/aws-ecs-integ/greeting-task-definition/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetingtaskdefinition31690093" + } + ], + "/aws-ecs-integ/greeting-task-definition/envoy/LogGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetingtaskdefinitionenvoyLogGroup6556AC35" + } + ], + "/aws-ecs-integ/greeting-task-definition/ExecutionRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetingtaskdefinitionExecutionRole9E3A7CF3" + } + ], + "/aws-ecs-integ/greeting-task-definition/ExecutionRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetingtaskdefinitionExecutionRoleDefaultPolicy31B93022" + } + ], + "/aws-ecs-integ/greeting-task-definition/firelens/LogGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetingtaskdefinitionfirelensLogGroupD7A398A7" + } + ], + "/aws-ecs-integ/greeting-task-definition/xray/LogGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetingtaskdefinitionxrayLogGroupD25C072D" + } + ], + "/aws-ecs-integ/greeting-task-definition/cloudwatch-agent/LogGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetingtaskdefinitioncloudwatchagentLogGroupCEF72742" + } + ], + "/aws-ecs-integ/greeting-envoy-image-account-mapping": [ + { + "type": "aws:cdk:logicalId", + "data": "greetingenvoyimageaccountmapping" + } + ], + "/aws-ecs-integ/greeting-envoy-to-appmesh/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetingenvoytoappmesh97051B23" + } + ], + "/aws-ecs-integ/greeting-publish-metrics/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetingpublishmetricsF17124EF" + } + ], + "/aws-ecs-integ/greeting-service/Service": [ + { + "type": "aws:cdk:logicalId", + "data": "greetingserviceService8DA58640" + } + ], + "/aws-ecs-integ/greeting-service/CloudmapService/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetingserviceCloudmapService0A2D7385" + } + ], + "/aws-ecs-integ/greeting-service/SecurityGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetingserviceSecurityGroupE9BE665B" + } + ], + "/aws-ecs-integ/greeting-service/SecurityGroup/from awsecsinteggreeterserviceSecurityGroup055DC23B:80": [ + { + "type": "aws:cdk:logicalId", + "data": "greetingserviceSecurityGroupfromawsecsinteggreeterserviceSecurityGroup055DC23B807B9C4357" + } + ], + "/aws-ecs-integ/greeting-service/TaskCount/Target/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetingserviceTaskCountTargetA036048C" + } + ], + "/aws-ecs-integ/greeting-service/TaskCount/Target/greeting-target-cpu-utilization-50/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetingserviceTaskCountTargetgreetingtargetcpuutilization50FEAF6434" + } + ], + "/aws-ecs-integ/greeting-virtual-node/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetingvirtualnodeC4A2C517" + } + ], + "/aws-ecs-integ/greeting-virtual-router/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetingvirtualrouter0F898D1A" + } + ], + "/aws-ecs-integ/greeting-virtual-router/greeting-route/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetingvirtualroutergreetingroute46305F50" + } + ], + "/aws-ecs-integ/greeting-virtual-service/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetingvirtualservice60AD3AD9" + } + ], + "/aws-ecs-integ/greeter-logs/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greeterlogsCCD2F8B2" + } + ], + "/aws-ecs-integ/greeter-load-balancer/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greeterloadbalancer85256741" + } + ], + "/aws-ecs-integ/greeter-load-balancer/SecurityGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greeterloadbalancerSecurityGroupEE1B20F3" + } + ], + "/aws-ecs-integ/greeter-load-balancer/SecurityGroup/to awsecsinteggreeterserviceSecurityGroup055DC23B:80": [ + { + "type": "aws:cdk:logicalId", + "data": "greeterloadbalancerSecurityGrouptoawsecsinteggreeterserviceSecurityGroup055DC23B803EEF3320" + } + ], + "/aws-ecs-integ/greeter-load-balancer/greeter-listener/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greeterloadbalancergreeterlistener952E028B" + } + ], + "/aws-ecs-integ/greeter-load-balancer/greeter-listener/greeterGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greeterloadbalancergreeterlistenergreeterGroupFFBFF0C2" + } + ], + "/aws-ecs-integ/greeter-load-balancer-dns-output": [ + { + "type": "aws:cdk:logicalId", + "data": "greeterloadbalancerdnsoutput" + } + ], + "/aws-ecs-integ/greeter-task-definition/TaskRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetertaskdefinitionTaskRole2A098ACC" + } + ], + "/aws-ecs-integ/greeter-task-definition/TaskRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetertaskdefinitionTaskRoleDefaultPolicyD0F53B1C" + } + ], + "/aws-ecs-integ/greeter-task-definition/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetertaskdefinitionE956EEA2" + } + ], + "/aws-ecs-integ/greeter-task-definition/envoy/LogGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetertaskdefinitionenvoyLogGroup6E10B93E" + } + ], + "/aws-ecs-integ/greeter-task-definition/ExecutionRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetertaskdefinitionExecutionRoleAED0EC79" + } + ], + "/aws-ecs-integ/greeter-task-definition/ExecutionRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetertaskdefinitionExecutionRoleDefaultPolicy0D8E9106" + } + ], + "/aws-ecs-integ/greeter-task-definition/firelens/LogGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetertaskdefinitionfirelensLogGroupD5BAAC35" + } + ], + "/aws-ecs-integ/greeter-task-definition/xray/LogGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetertaskdefinitionxrayLogGroupBC1558B6" + } + ], + "/aws-ecs-integ/greeter-task-definition/cloudwatch-agent/LogGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetertaskdefinitioncloudwatchagentLogGroupE7EAF327" + } + ], + "/aws-ecs-integ/greeter-envoy-image-account-mapping": [ + { + "type": "aws:cdk:logicalId", + "data": "greeterenvoyimageaccountmapping" + } + ], + "/aws-ecs-integ/greeter-envoy-to-appmesh/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greeterenvoytoappmesh1A94938B" + } + ], + "/aws-ecs-integ/greeter-publish-metrics/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greeterpublishmetrics0CCA359A" + } + ], + "/aws-ecs-integ/greeter-service/Service": [ + { + "type": "aws:cdk:logicalId", + "data": "greeterserviceService8EDD3244" + } + ], + "/aws-ecs-integ/greeter-service/CloudmapService/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greeterserviceCloudmapServiceEE292978" + } + ], + "/aws-ecs-integ/greeter-service/SecurityGroup": [ + { + "type": "aws:cdk:warning", + "data": "Ignoring Egress rule since 'allowAllOutbound' is set to true; To add customize rules, set allowAllOutbound=false on the SecurityGroup" + }, + { + "type": "aws:cdk:warning", + "data": "Ignoring Egress rule since 'allowAllOutbound' is set to true; To add customize rules, set allowAllOutbound=false on the SecurityGroup" + } + ], + "/aws-ecs-integ/greeter-service/SecurityGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greeterserviceSecurityGroupDB4AC3A9" + } + ], + "/aws-ecs-integ/greeter-service/SecurityGroup/from awsecsinteggreeterloadbalancerSecurityGroupF791FA83:80": [ + { + "type": "aws:cdk:logicalId", + "data": "greeterserviceSecurityGroupfromawsecsinteggreeterloadbalancerSecurityGroupF791FA838037FDF8F5" + } + ], + "/aws-ecs-integ/greeter-service/TaskCount/Target/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greeterserviceTaskCountTargetAB95B3D0" + } + ], + "/aws-ecs-integ/greeter-service/TaskCount/Target/greeter-target-cpu-utilization-50/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greeterserviceTaskCountTargetgreetertargetcpuutilization50299508D1" + } + ], + "/aws-ecs-integ/greeter-virtual-node/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetervirtualnode21EA7CC9" + } + ], + "/aws-ecs-integ/greeter-virtual-router/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetervirtualrouter193840BB" + } + ], + "/aws-ecs-integ/greeter-virtual-router/greeter-route/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetervirtualroutergreeterroute3EC6ACB0" + } + ], + "/aws-ecs-integ/greeter-virtual-service/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "greetervirtualservice6559950C" + } + ] + }, + "displayName": "aws-ecs-integ" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/all-service-addons.integ.snapshot/tree.json b/packages/@aws-cdk-containers/ecs-service-extensions/test/all-service-addons.integ.snapshot/tree.json new file mode 100644 index 0000000000000..22ae49ea9fe06 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/all-service-addons.integ.snapshot/tree.json @@ -0,0 +1,5017 @@ +{ + "version": "tree-0.1", + "tree": { + "id": "App", + "path": "", + "children": { + "Tree": { + "id": "Tree", + "path": "Tree", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "aws-ecs-integ": { + "id": "aws-ecs-integ", + "path": "aws-ecs-integ", + "children": { + "my-mesh": { + "id": "my-mesh", + "path": "aws-ecs-integ/my-mesh", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/my-mesh/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::AppMesh::Mesh", + "aws:cdk:cloudformation:props": { + "meshName": "awsecsintegmymeshFCC0D554", + "spec": {} + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "production": { + "id": "production", + "path": "aws-ecs-integ/production", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "production-environment-vpc": { + "id": "production-environment-vpc", + "path": "aws-ecs-integ/production-environment-vpc", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/production-environment-vpc/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::VPC", + "aws:cdk:cloudformation:props": { + "cidrBlock": "10.0.0.0/16", + "enableDnsHostnames": true, + "enableDnsSupport": true, + "instanceTenancy": "default", + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "PublicSubnet1": { + "id": "PublicSubnet1", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "availabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.0.0/18", + "mapPublicIpOnLaunch": true, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Public" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Public" + }, + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPublicSubnet1RouteTable6E9ABC21" + }, + "subnetId": { + "Ref": "productionenvironmentvpcPublicSubnet1Subnet8D92C089" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPublicSubnet1RouteTable6E9ABC21" + }, + "destinationCidrBlock": "0.0.0.0/0", + "gatewayId": { + "Ref": "productionenvironmentvpcIGWE7C39890" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "EIP": { + "id": "EIP", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/EIP", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::EIP", + "aws:cdk:cloudformation:props": { + "domain": "vpc", + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "NATGateway": { + "id": "NATGateway", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/NATGateway", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::NatGateway", + "aws:cdk:cloudformation:props": { + "subnetId": { + "Ref": "productionenvironmentvpcPublicSubnet1Subnet8D92C089" + }, + "allocationId": { + "Fn::GetAtt": [ + "productionenvironmentvpcPublicSubnet1EIP54BA88DB", + "AllocationId" + ] + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "PublicSubnet2": { + "id": "PublicSubnet2", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "availabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.64.0/18", + "mapPublicIpOnLaunch": true, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Public" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Public" + }, + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPublicSubnet2RouteTable842A68D7" + }, + "subnetId": { + "Ref": "productionenvironmentvpcPublicSubnet2Subnet298E6C31" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPublicSubnet2RouteTable842A68D7" + }, + "destinationCidrBlock": "0.0.0.0/0", + "gatewayId": { + "Ref": "productionenvironmentvpcIGWE7C39890" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "EIP": { + "id": "EIP", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/EIP", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::EIP", + "aws:cdk:cloudformation:props": { + "domain": "vpc", + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "NATGateway": { + "id": "NATGateway", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/NATGateway", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::NatGateway", + "aws:cdk:cloudformation:props": { + "subnetId": { + "Ref": "productionenvironmentvpcPublicSubnet2Subnet298E6C31" + }, + "allocationId": { + "Fn::GetAtt": [ + "productionenvironmentvpcPublicSubnet2EIP14CA46AA", + "AllocationId" + ] + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "PrivateSubnet1": { + "id": "PrivateSubnet1", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "availabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.128.0/18", + "mapPublicIpOnLaunch": false, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Private" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Private" + }, + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet1RouteTable2C6DFF0C" + }, + "subnetId": { + "Ref": "productionenvironmentvpcPrivateSubnet1Subnet53F632E6" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet1RouteTable2C6DFF0C" + }, + "destinationCidrBlock": "0.0.0.0/0", + "natGatewayId": { + "Ref": "productionenvironmentvpcPublicSubnet1NATGateway6075E4CA" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "PrivateSubnet2": { + "id": "PrivateSubnet2", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "availabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.192.0/18", + "mapPublicIpOnLaunch": false, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Private" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Private" + }, + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet2RouteTable2F77D0D2" + }, + "subnetId": { + "Ref": "productionenvironmentvpcPrivateSubnet2Subnet756FB93C" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet2RouteTable2F77D0D2" + }, + "destinationCidrBlock": "0.0.0.0/0", + "natGatewayId": { + "Ref": "productionenvironmentvpcPublicSubnet2NATGatewayE1850FCC" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "IGW": { + "id": "IGW", + "path": "aws-ecs-integ/production-environment-vpc/IGW", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::InternetGateway", + "aws:cdk:cloudformation:props": { + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "VPCGW": { + "id": "VPCGW", + "path": "aws-ecs-integ/production-environment-vpc/VPCGW", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::VPCGatewayAttachment", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "internetGatewayId": { + "Ref": "productionenvironmentvpcIGWE7C39890" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "production-environment-cluster": { + "id": "production-environment-cluster", + "path": "aws-ecs-integ/production-environment-cluster", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/production-environment-cluster/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::Cluster", + "aws:cdk:cloudformation:props": {} + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultServiceDiscoveryNamespace": { + "id": "DefaultServiceDiscoveryNamespace", + "path": "aws-ecs-integ/production-environment-cluster/DefaultServiceDiscoveryNamespace", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/production-environment-cluster/DefaultServiceDiscoveryNamespace/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ServiceDiscovery::PrivateDnsNamespace", + "aws:cdk:cloudformation:props": { + "name": "production", + "vpc": { + "Ref": "productionenvironmentvpcAEB47DF7" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "name": { + "id": "name", + "path": "aws-ecs-integ/name", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "name-logs": { + "id": "name-logs", + "path": "aws-ecs-integ/name-logs", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-logs/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Logs::LogGroup", + "aws:cdk:cloudformation:props": { + "logGroupName": "name-logs", + "retentionInDays": 7 + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "name-task-definition": { + "id": "name-task-definition", + "path": "aws-ecs-integ/name-task-definition", + "children": { + "TaskRole": { + "id": "TaskRole", + "path": "aws-ecs-integ/name-task-definition/TaskRole", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-task-definition/TaskRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "managedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/AWSXRayDaemonWriteAccess" + ] + ] + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultPolicy": { + "id": "DefaultPolicy", + "path": "aws-ecs-integ/name-task-definition/TaskRole/DefaultPolicy", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-task-definition/TaskRole/DefaultPolicy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:DescribeLogStreams", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": "*" + } + ], + "Version": "2012-10-17" + }, + "policyName": "nametaskdefinitionTaskRoleDefaultPolicyE66EDC68", + "roles": [ + { + "Ref": "nametaskdefinitionTaskRole50FE844E" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-task-definition/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::TaskDefinition", + "aws:cdk:cloudformation:props": { + "containerDefinitions": [ + { + "cpu": 1024, + "dependsOn": [ + { + "containerName": "firelens", + "condition": "START" + }, + { + "containerName": "envoy", + "condition": "HEALTHY" + }, + { + "containerName": "cloudwatch-agent", + "condition": "START" + }, + { + "containerName": "xray", + "condition": "HEALTHY" + } + ], + "essential": true, + "image": "nathanpeck/name", + "memory": 2048, + "name": "app", + "portMappings": [ + { + "containerPort": 80, + "protocol": "tcp" + } + ], + "ulimits": [ + { + "name": "nofile", + "softLimit": 1024000, + "hardLimit": 1024000 + } + ], + "logConfiguration": { + "logDriver": "awsfirelens", + "options": { + "Name": "cloudwatch", + "region": { + "Ref": "AWS::Region" + }, + "log_group_name": { + "Ref": "namelogsF4B17D31" + }, + "log_stream_prefix": "name/" + } + }, + "environment": [ + { + "name": "PORT", + "value": "80" + } + ] + }, + { + "essential": true, + "image": { + "Fn::Join": [ + "", + [ + { + "Fn::FindInMap": [ + "nameenvoyimageaccountmapping", + { + "Ref": "AWS::Region" + }, + "ecrRepo" + ] + }, + ".dkr.ecr.", + { + "Ref": "AWS::Region" + }, + ".", + { + "Ref": "AWS::URLSuffix" + }, + "/aws-appmesh-envoy:v1.15.1.0-prod" + ] + ] + }, + "memoryReservation": 128, + "name": "envoy", + "ulimits": [ + { + "name": "nofile", + "softLimit": 1024000, + "hardLimit": 1024000 + } + ], + "user": "1337", + "logConfiguration": { + "logDriver": "awslogs", + "options": { + "awslogs-group": { + "Ref": "nametaskdefinitionenvoyLogGroup258B673B" + }, + "awslogs-stream-prefix": "envoy", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "environment": [ + { + "name": "APPMESH_VIRTUAL_NODE_NAME", + "value": { + "Fn::Join": [ + "", + [ + "mesh/", + { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "/virtualNode/name" + ] + ] + } + }, + { + "name": "AWS_REGION", + "value": { + "Ref": "AWS::Region" + } + }, + { + "name": "ENABLE_ENVOY_STATS_TAGS", + "value": "1" + }, + { + "name": "ENABLE_ENVOY_DOG_STATSD", + "value": "1" + } + ], + "healthCheck": { + "command": [ + "CMD-SHELL", + "curl -s http://localhost:9901/server_info | grep state | grep -q LIVE" + ], + "interval": 5, + "retries": 3, + "startPeriod": 10, + "timeout": 2 + } + }, + { + "dependsOn": [ + { + "containerName": "envoy", + "condition": "HEALTHY" + } + ], + "essential": true, + "image": { + "Ref": "SsmParameterValueawsserviceawsforfluentbitlatestC96584B6F00A464EAD1953AFF4B05118Parameter" + }, + "memoryReservation": 50, + "name": "firelens", + "user": "0:1338", + "logConfiguration": { + "logDriver": "awslogs", + "options": { + "awslogs-group": { + "Ref": "nametaskdefinitionfirelensLogGroup80DDA60F" + }, + "awslogs-stream-prefix": "firelens", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "firelensConfiguration": { + "type": "fluentbit" + } + }, + { + "dependsOn": [ + { + "containerName": "envoy", + "condition": "HEALTHY" + } + ], + "essential": true, + "image": "amazon/aws-xray-daemon:latest", + "memoryReservation": 256, + "name": "xray", + "user": "1337", + "logConfiguration": { + "logDriver": "awslogs", + "options": { + "awslogs-group": { + "Ref": "nametaskdefinitionxrayLogGroup4AF4CA37" + }, + "awslogs-stream-prefix": "xray", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "environment": [ + { + "name": "AWS_REGION", + "value": { + "Ref": "AWS::Region" + } + } + ], + "healthCheck": { + "command": [ + "CMD-SHELL", + "curl -s http://localhost:2000" + ], + "interval": 5, + "retries": 3, + "startPeriod": 10, + "timeout": 2 + } + }, + { + "dependsOn": [ + { + "containerName": "envoy", + "condition": "HEALTHY" + } + ], + "essential": true, + "image": "amazon/cloudwatch-agent:latest", + "memoryReservation": 50, + "name": "cloudwatch-agent", + "user": "0:1338", + "logConfiguration": { + "logDriver": "awslogs", + "options": { + "awslogs-group": { + "Ref": "nametaskdefinitioncloudwatchagentLogGroup78DDC685" + }, + "awslogs-stream-prefix": "cloudwatch-agent", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "environment": [ + { + "name": "CW_CONFIG_CONTENT", + "value": "{\"logs\":{\"metrics_collected\":{\"emf\":{}}},\"metrics\":{\"metrics_collected\":{\"statsd\":{}}}}" + } + ] + } + ], + "cpu": "1024", + "executionRoleArn": { + "Fn::GetAtt": [ + "nametaskdefinitionExecutionRole45AC5C9A", + "Arn" + ] + }, + "family": "awsecsintegnametaskdefinition0EA6A1A0", + "memory": "2048", + "networkMode": "awsvpc", + "proxyConfiguration": { + "containerName": "envoy", + "proxyConfigurationProperties": [ + { + "name": "AppPorts", + "value": "80" + }, + { + "name": "ProxyEgressPort", + "value": "15001" + }, + { + "name": "ProxyIngressPort", + "value": "15000" + }, + { + "name": "IgnoredUID", + "value": "1337" + }, + { + "name": "IgnoredGID", + "value": "1338" + }, + { + "name": "EgressIgnoredIPs", + "value": "169.254.170.2,169.254.169.254" + } + ], + "type": "APPMESH" + }, + "requiresCompatibilities": [ + "EC2", + "FARGATE" + ], + "taskRoleArn": { + "Fn::GetAtt": [ + "nametaskdefinitionTaskRole50FE844E", + "Arn" + ] + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "app": { + "id": "app", + "path": "aws-ecs-integ/name-task-definition/app", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "envoy": { + "id": "envoy", + "path": "aws-ecs-integ/name-task-definition/envoy", + "children": { + "LogGroup": { + "id": "LogGroup", + "path": "aws-ecs-integ/name-task-definition/envoy/LogGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-task-definition/envoy/LogGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Logs::LogGroup", + "aws:cdk:cloudformation:props": {} + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "ExecutionRole": { + "id": "ExecutionRole", + "path": "aws-ecs-integ/name-task-definition/ExecutionRole", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-task-definition/ExecutionRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultPolicy": { + "id": "DefaultPolicy", + "path": "aws-ecs-integ/name-task-definition/ExecutionRole/DefaultPolicy", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-task-definition/ExecutionRole/DefaultPolicy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": [ + "ecr:BatchCheckLayerAvailability", + "ecr:GetDownloadUrlForLayer", + "ecr:BatchGetImage" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":ecr:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Fn::FindInMap": [ + "nameenvoyimageaccountmapping", + { + "Ref": "AWS::Region" + }, + "ecrRepo" + ] + }, + ":repository/aws-appmesh-envoy" + ] + ] + } + }, + { + "Action": "ecr:GetAuthorizationToken", + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "nametaskdefinitionenvoyLogGroup258B673B", + "Arn" + ] + } + }, + { + "Action": [ + "ecr:GetAuthorizationToken", + "ecr:BatchCheckLayerAvailability", + "ecr:GetDownloadUrlForLayer", + "ecr:BatchGetImage" + ], + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "nametaskdefinitionfirelensLogGroup80DDA60F", + "Arn" + ] + } + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "nametaskdefinitionxrayLogGroup4AF4CA37", + "Arn" + ] + } + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "nametaskdefinitioncloudwatchagentLogGroup78DDC685", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "policyName": "nametaskdefinitionExecutionRoleDefaultPolicyF7942D20", + "roles": [ + { + "Ref": "nametaskdefinitionExecutionRole45AC5C9A" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "firelens": { + "id": "firelens", + "path": "aws-ecs-integ/name-task-definition/firelens", + "children": { + "LogGroup": { + "id": "LogGroup", + "path": "aws-ecs-integ/name-task-definition/firelens/LogGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-task-definition/firelens/LogGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Logs::LogGroup", + "aws:cdk:cloudformation:props": {} + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "xray": { + "id": "xray", + "path": "aws-ecs-integ/name-task-definition/xray", + "children": { + "LogGroup": { + "id": "LogGroup", + "path": "aws-ecs-integ/name-task-definition/xray/LogGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-task-definition/xray/LogGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Logs::LogGroup", + "aws:cdk:cloudformation:props": {} + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "cloudwatch-agent": { + "id": "cloudwatch-agent", + "path": "aws-ecs-integ/name-task-definition/cloudwatch-agent", + "children": { + "LogGroup": { + "id": "LogGroup", + "path": "aws-ecs-integ/name-task-definition/cloudwatch-agent/LogGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-task-definition/cloudwatch-agent/LogGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Logs::LogGroup", + "aws:cdk:cloudformation:props": {} + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "name-envoy-image-account-mapping": { + "id": "name-envoy-image-account-mapping", + "path": "aws-ecs-integ/name-envoy-image-account-mapping", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnMapping", + "version": "0.0.0" + } + }, + "name-envoy-repo": { + "id": "name-envoy-repo", + "path": "aws-ecs-integ/name-envoy-repo", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "name-envoy-to-appmesh": { + "id": "name-envoy-to-appmesh", + "path": "aws-ecs-integ/name-envoy-to-appmesh", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-envoy-to-appmesh/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": "appmesh:StreamAggregatedResources", + "Effect": "Allow", + "Resource": { + "Ref": "mymeshEA67EDEF" + } + } + ], + "Version": "2012-10-17" + }, + "policyName": "nameenvoytoappmesh2767D3E6", + "roles": [ + { + "Ref": "nametaskdefinitionTaskRole50FE844E" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "SsmParameterValue:--aws--service--aws-for-fluent-bit--latest:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter": { + "id": "SsmParameterValue:--aws--service--aws-for-fluent-bit--latest:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter", + "path": "aws-ecs-integ/SsmParameterValue:--aws--service--aws-for-fluent-bit--latest:C96584B6-F00A-464E-AD19-53AFF4B05118.Parameter", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnParameter", + "version": "0.0.0" + } + }, + "SsmParameterValue:--aws--service--aws-for-fluent-bit--latest:C96584B6-F00A-464E-AD19-53AFF4B05118": { + "id": "SsmParameterValue:--aws--service--aws-for-fluent-bit--latest:C96584B6-F00A-464E-AD19-53AFF4B05118", + "path": "aws-ecs-integ/SsmParameterValue:--aws--service--aws-for-fluent-bit--latest:C96584B6-F00A-464E-AD19-53AFF4B05118", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "name-publish-metrics": { + "id": "name-publish-metrics", + "path": "aws-ecs-integ/name-publish-metrics", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-publish-metrics/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": "cloudwatch:PutMetricData", + "Effect": "Allow", + "Resource": "*" + } + ], + "Version": "2012-10-17" + }, + "policyName": "namepublishmetricsF329C7AE", + "roles": [ + { + "Ref": "nametaskdefinitionTaskRole50FE844E" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "name-service": { + "id": "name-service", + "path": "aws-ecs-integ/name-service", + "children": { + "Service": { + "id": "Service", + "path": "aws-ecs-integ/name-service/Service", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::Service", + "aws:cdk:cloudformation:props": { + "cluster": { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "deploymentConfiguration": { + "maximumPercent": 150, + "minimumHealthyPercent": 100 + }, + "desiredCount": 2, + "enableEcsManagedTags": false, + "launchType": "FARGATE", + "networkConfiguration": { + "awsvpcConfiguration": { + "assignPublicIp": "DISABLED", + "subnets": [ + { + "Ref": "productionenvironmentvpcPrivateSubnet1Subnet53F632E6" + }, + { + "Ref": "productionenvironmentvpcPrivateSubnet2Subnet756FB93C" + } + ], + "securityGroups": [ + { + "Fn::GetAtt": [ + "nameserviceSecurityGroup33F4662C", + "GroupId" + ] + } + ] + } + }, + "serviceRegistries": [ + { + "registryArn": { + "Fn::GetAtt": [ + "nameserviceCloudmapService3D5B0548", + "Arn" + ] + } + } + ], + "taskDefinition": { + "Ref": "nametaskdefinition690762BB" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "CloudmapService": { + "id": "CloudmapService", + "path": "aws-ecs-integ/name-service/CloudmapService", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-service/CloudmapService/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ServiceDiscovery::Service", + "aws:cdk:cloudformation:props": { + "dnsConfig": { + "dnsRecords": [ + { + "type": "A", + "ttl": 10 + } + ], + "namespaceId": { + "Fn::GetAtt": [ + "productionenvironmentclusterDefaultServiceDiscoveryNamespaceBE74D64D", + "Id" + ] + }, + "routingPolicy": "MULTIVALUE" + }, + "healthCheckCustomConfig": { + "failureThreshold": 2 + }, + "name": "name", + "namespaceId": { + "Fn::GetAtt": [ + "productionenvironmentclusterDefaultServiceDiscoveryNamespaceBE74D64D", + "Id" + ] + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "SecurityGroup": { + "id": "SecurityGroup", + "path": "aws-ecs-integ/name-service/SecurityGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-service/SecurityGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroup", + "aws:cdk:cloudformation:props": { + "groupDescription": "aws-ecs-integ/name-service/SecurityGroup", + "securityGroupEgress": [ + { + "cidrIp": "0.0.0.0/0", + "description": "Allow all outbound traffic by default", + "ipProtocol": "-1" + } + ], + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "from awsecsinteggreeterserviceSecurityGroup055DC23B:80": { + "id": "from awsecsinteggreeterserviceSecurityGroup055DC23B:80", + "path": "aws-ecs-integ/name-service/SecurityGroup/from awsecsinteggreeterserviceSecurityGroup055DC23B:80", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroupIngress", + "aws:cdk:cloudformation:props": { + "ipProtocol": "tcp", + "description": "Accept inbound traffic from greeter", + "fromPort": 80, + "groupId": { + "Fn::GetAtt": [ + "nameserviceSecurityGroup33F4662C", + "GroupId" + ] + }, + "sourceSecurityGroupId": { + "Fn::GetAtt": [ + "greeterserviceSecurityGroupDB4AC3A9", + "GroupId" + ] + }, + "toPort": 80 + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "ScalingRole": { + "id": "ScalingRole", + "path": "aws-ecs-integ/name-service/ScalingRole", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "TaskCount": { + "id": "TaskCount", + "path": "aws-ecs-integ/name-service/TaskCount", + "children": { + "Target": { + "id": "Target", + "path": "aws-ecs-integ/name-service/TaskCount/Target", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-service/TaskCount/Target/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ApplicationAutoScaling::ScalableTarget", + "aws:cdk:cloudformation:props": { + "maxCapacity": 8, + "minCapacity": 2, + "resourceId": { + "Fn::Join": [ + "", + [ + "service/", + { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "/", + { + "Fn::GetAtt": [ + "nameserviceService8015C8D6", + "Name" + ] + } + ] + ] + }, + "roleArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/aws-service-role/ecs.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ECSService" + ] + ] + }, + "scalableDimension": "ecs:service:DesiredCount", + "serviceNamespace": "ecs" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "name-target-cpu-utilization-50": { + "id": "name-target-cpu-utilization-50", + "path": "aws-ecs-integ/name-service/TaskCount/Target/name-target-cpu-utilization-50", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-service/TaskCount/Target/name-target-cpu-utilization-50/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ApplicationAutoScaling::ScalingPolicy", + "aws:cdk:cloudformation:props": { + "policyName": "awsecsintegnameserviceTaskCountTargetnametargetcpuutilization50CAB59E05", + "policyType": "TargetTrackingScaling", + "scalingTargetId": { + "Ref": "nameserviceTaskCountTarget366C2B3A" + }, + "targetTrackingScalingPolicyConfiguration": { + "predefinedMetricSpecification": { + "predefinedMetricType": "ECSServiceAverageCPUUtilization" + }, + "scaleInCooldown": 60, + "scaleOutCooldown": 60, + "targetValue": 50 + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "name-virtual-node": { + "id": "name-virtual-node", + "path": "aws-ecs-integ/name-virtual-node", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-virtual-node/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::AppMesh::VirtualNode", + "aws:cdk:cloudformation:props": { + "meshName": { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "spec": { + "listeners": [ + { + "portMapping": { + "port": 80, + "protocol": "http" + } + } + ], + "serviceDiscovery": { + "awsCloudMap": { + "namespaceName": "production", + "serviceName": { + "Fn::GetAtt": [ + "nameserviceCloudmapService3D5B0548", + "Name" + ] + } + } + } + }, + "virtualNodeName": "name" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "name-virtual-router": { + "id": "name-virtual-router", + "path": "aws-ecs-integ/name-virtual-router", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-virtual-router/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::AppMesh::VirtualRouter", + "aws:cdk:cloudformation:props": { + "meshName": { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "spec": { + "listeners": [ + { + "portMapping": { + "port": 80, + "protocol": "http" + } + } + ] + }, + "virtualRouterName": "name" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "name-route": { + "id": "name-route", + "path": "aws-ecs-integ/name-virtual-router/name-route", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-virtual-router/name-route/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::AppMesh::Route", + "aws:cdk:cloudformation:props": { + "meshName": { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "spec": { + "httpRoute": { + "action": { + "weightedTargets": [ + { + "virtualNode": { + "Fn::GetAtt": [ + "namevirtualnode6C99CB14", + "VirtualNodeName" + ] + }, + "weight": 1 + } + ] + }, + "match": { + "prefix": "/" + } + } + }, + "virtualRouterName": { + "Fn::GetAtt": [ + "namevirtualrouterC00E1ACE", + "VirtualRouterName" + ] + }, + "routeName": "name-route" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "name-virtual-service": { + "id": "name-virtual-service", + "path": "aws-ecs-integ/name-virtual-service", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-virtual-service/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::AppMesh::VirtualService", + "aws:cdk:cloudformation:props": { + "meshName": { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "spec": { + "provider": { + "virtualRouter": { + "virtualRouterName": { + "Fn::GetAtt": [ + "namevirtualrouterC00E1ACE", + "VirtualRouterName" + ] + } + } + } + }, + "virtualServiceName": "name.production" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "greeting": { + "id": "greeting", + "path": "aws-ecs-integ/greeting", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "greeting-logs": { + "id": "greeting-logs", + "path": "aws-ecs-integ/greeting-logs", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeting-logs/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Logs::LogGroup", + "aws:cdk:cloudformation:props": { + "logGroupName": "greeting-logs", + "retentionInDays": 7 + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "greeting-task-definition": { + "id": "greeting-task-definition", + "path": "aws-ecs-integ/greeting-task-definition", + "children": { + "TaskRole": { + "id": "TaskRole", + "path": "aws-ecs-integ/greeting-task-definition/TaskRole", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeting-task-definition/TaskRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "managedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/AWSXRayDaemonWriteAccess" + ] + ] + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultPolicy": { + "id": "DefaultPolicy", + "path": "aws-ecs-integ/greeting-task-definition/TaskRole/DefaultPolicy", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeting-task-definition/TaskRole/DefaultPolicy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:DescribeLogStreams", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": "*" + } + ], + "Version": "2012-10-17" + }, + "policyName": "greetingtaskdefinitionTaskRoleDefaultPolicy5DB4510A", + "roles": [ + { + "Ref": "greetingtaskdefinitionTaskRole9179DA4A" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeting-task-definition/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::TaskDefinition", + "aws:cdk:cloudformation:props": { + "containerDefinitions": [ + { + "cpu": 1024, + "dependsOn": [ + { + "containerName": "firelens", + "condition": "START" + }, + { + "containerName": "envoy", + "condition": "HEALTHY" + }, + { + "containerName": "cloudwatch-agent", + "condition": "START" + }, + { + "containerName": "xray", + "condition": "HEALTHY" + } + ], + "essential": true, + "image": "nathanpeck/greeting", + "memory": 2048, + "name": "app", + "portMappings": [ + { + "containerPort": 80, + "protocol": "tcp" + } + ], + "ulimits": [ + { + "name": "nofile", + "softLimit": 1024000, + "hardLimit": 1024000 + } + ], + "logConfiguration": { + "logDriver": "awsfirelens", + "options": { + "Name": "cloudwatch", + "region": { + "Ref": "AWS::Region" + }, + "log_group_name": { + "Ref": "greetinglogsCC360934" + }, + "log_stream_prefix": "greeting/" + } + }, + "environment": [ + { + "name": "PORT", + "value": "80" + } + ] + }, + { + "essential": true, + "image": { + "Fn::Join": [ + "", + [ + { + "Fn::FindInMap": [ + "greetingenvoyimageaccountmapping", + { + "Ref": "AWS::Region" + }, + "ecrRepo" + ] + }, + ".dkr.ecr.", + { + "Ref": "AWS::Region" + }, + ".", + { + "Ref": "AWS::URLSuffix" + }, + "/aws-appmesh-envoy:v1.15.1.0-prod" + ] + ] + }, + "memoryReservation": 128, + "name": "envoy", + "ulimits": [ + { + "name": "nofile", + "softLimit": 1024000, + "hardLimit": 1024000 + } + ], + "user": "1337", + "logConfiguration": { + "logDriver": "awslogs", + "options": { + "awslogs-group": { + "Ref": "greetingtaskdefinitionenvoyLogGroup6556AC35" + }, + "awslogs-stream-prefix": "envoy", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "environment": [ + { + "name": "APPMESH_VIRTUAL_NODE_NAME", + "value": { + "Fn::Join": [ + "", + [ + "mesh/", + { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "/virtualNode/greeting" + ] + ] + } + }, + { + "name": "AWS_REGION", + "value": { + "Ref": "AWS::Region" + } + }, + { + "name": "ENABLE_ENVOY_STATS_TAGS", + "value": "1" + }, + { + "name": "ENABLE_ENVOY_DOG_STATSD", + "value": "1" + } + ], + "healthCheck": { + "command": [ + "CMD-SHELL", + "curl -s http://localhost:9901/server_info | grep state | grep -q LIVE" + ], + "interval": 5, + "retries": 3, + "startPeriod": 10, + "timeout": 2 + } + }, + { + "dependsOn": [ + { + "containerName": "envoy", + "condition": "HEALTHY" + } + ], + "essential": true, + "image": { + "Ref": "SsmParameterValueawsserviceawsforfluentbitlatestC96584B6F00A464EAD1953AFF4B05118Parameter" + }, + "memoryReservation": 50, + "name": "firelens", + "user": "0:1338", + "logConfiguration": { + "logDriver": "awslogs", + "options": { + "awslogs-group": { + "Ref": "greetingtaskdefinitionfirelensLogGroupD7A398A7" + }, + "awslogs-stream-prefix": "firelens", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "firelensConfiguration": { + "type": "fluentbit" + } + }, + { + "dependsOn": [ + { + "containerName": "envoy", + "condition": "HEALTHY" + } + ], + "essential": true, + "image": "amazon/aws-xray-daemon:latest", + "memoryReservation": 256, + "name": "xray", + "user": "1337", + "logConfiguration": { + "logDriver": "awslogs", + "options": { + "awslogs-group": { + "Ref": "greetingtaskdefinitionxrayLogGroupD25C072D" + }, + "awslogs-stream-prefix": "xray", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "environment": [ + { + "name": "AWS_REGION", + "value": { + "Ref": "AWS::Region" + } + } + ], + "healthCheck": { + "command": [ + "CMD-SHELL", + "curl -s http://localhost:2000" + ], + "interval": 5, + "retries": 3, + "startPeriod": 10, + "timeout": 2 + } + }, + { + "dependsOn": [ + { + "containerName": "envoy", + "condition": "HEALTHY" + } + ], + "essential": true, + "image": "amazon/cloudwatch-agent:latest", + "memoryReservation": 50, + "name": "cloudwatch-agent", + "user": "0:1338", + "logConfiguration": { + "logDriver": "awslogs", + "options": { + "awslogs-group": { + "Ref": "greetingtaskdefinitioncloudwatchagentLogGroupCEF72742" + }, + "awslogs-stream-prefix": "cloudwatch-agent", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "environment": [ + { + "name": "CW_CONFIG_CONTENT", + "value": "{\"logs\":{\"metrics_collected\":{\"emf\":{}}},\"metrics\":{\"metrics_collected\":{\"statsd\":{}}}}" + } + ] + } + ], + "cpu": "1024", + "executionRoleArn": { + "Fn::GetAtt": [ + "greetingtaskdefinitionExecutionRole9E3A7CF3", + "Arn" + ] + }, + "family": "awsecsinteggreetingtaskdefinitionA6E8A57B", + "memory": "2048", + "networkMode": "awsvpc", + "proxyConfiguration": { + "containerName": "envoy", + "proxyConfigurationProperties": [ + { + "name": "AppPorts", + "value": "80" + }, + { + "name": "ProxyEgressPort", + "value": "15001" + }, + { + "name": "ProxyIngressPort", + "value": "15000" + }, + { + "name": "IgnoredUID", + "value": "1337" + }, + { + "name": "IgnoredGID", + "value": "1338" + }, + { + "name": "EgressIgnoredIPs", + "value": "169.254.170.2,169.254.169.254" + } + ], + "type": "APPMESH" + }, + "requiresCompatibilities": [ + "EC2", + "FARGATE" + ], + "taskRoleArn": { + "Fn::GetAtt": [ + "greetingtaskdefinitionTaskRole9179DA4A", + "Arn" + ] + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "app": { + "id": "app", + "path": "aws-ecs-integ/greeting-task-definition/app", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "envoy": { + "id": "envoy", + "path": "aws-ecs-integ/greeting-task-definition/envoy", + "children": { + "LogGroup": { + "id": "LogGroup", + "path": "aws-ecs-integ/greeting-task-definition/envoy/LogGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeting-task-definition/envoy/LogGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Logs::LogGroup", + "aws:cdk:cloudformation:props": {} + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "ExecutionRole": { + "id": "ExecutionRole", + "path": "aws-ecs-integ/greeting-task-definition/ExecutionRole", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeting-task-definition/ExecutionRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultPolicy": { + "id": "DefaultPolicy", + "path": "aws-ecs-integ/greeting-task-definition/ExecutionRole/DefaultPolicy", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeting-task-definition/ExecutionRole/DefaultPolicy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": [ + "ecr:BatchCheckLayerAvailability", + "ecr:GetDownloadUrlForLayer", + "ecr:BatchGetImage" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":ecr:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Fn::FindInMap": [ + "greetingenvoyimageaccountmapping", + { + "Ref": "AWS::Region" + }, + "ecrRepo" + ] + }, + ":repository/aws-appmesh-envoy" + ] + ] + } + }, + { + "Action": "ecr:GetAuthorizationToken", + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "greetingtaskdefinitionenvoyLogGroup6556AC35", + "Arn" + ] + } + }, + { + "Action": [ + "ecr:GetAuthorizationToken", + "ecr:BatchCheckLayerAvailability", + "ecr:GetDownloadUrlForLayer", + "ecr:BatchGetImage" + ], + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "greetingtaskdefinitionfirelensLogGroupD7A398A7", + "Arn" + ] + } + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "greetingtaskdefinitionxrayLogGroupD25C072D", + "Arn" + ] + } + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "greetingtaskdefinitioncloudwatchagentLogGroupCEF72742", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "policyName": "greetingtaskdefinitionExecutionRoleDefaultPolicy31B93022", + "roles": [ + { + "Ref": "greetingtaskdefinitionExecutionRole9E3A7CF3" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "firelens": { + "id": "firelens", + "path": "aws-ecs-integ/greeting-task-definition/firelens", + "children": { + "LogGroup": { + "id": "LogGroup", + "path": "aws-ecs-integ/greeting-task-definition/firelens/LogGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeting-task-definition/firelens/LogGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Logs::LogGroup", + "aws:cdk:cloudformation:props": {} + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "xray": { + "id": "xray", + "path": "aws-ecs-integ/greeting-task-definition/xray", + "children": { + "LogGroup": { + "id": "LogGroup", + "path": "aws-ecs-integ/greeting-task-definition/xray/LogGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeting-task-definition/xray/LogGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Logs::LogGroup", + "aws:cdk:cloudformation:props": {} + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "cloudwatch-agent": { + "id": "cloudwatch-agent", + "path": "aws-ecs-integ/greeting-task-definition/cloudwatch-agent", + "children": { + "LogGroup": { + "id": "LogGroup", + "path": "aws-ecs-integ/greeting-task-definition/cloudwatch-agent/LogGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeting-task-definition/cloudwatch-agent/LogGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Logs::LogGroup", + "aws:cdk:cloudformation:props": {} + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "greeting-envoy-image-account-mapping": { + "id": "greeting-envoy-image-account-mapping", + "path": "aws-ecs-integ/greeting-envoy-image-account-mapping", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnMapping", + "version": "0.0.0" + } + }, + "greeting-envoy-repo": { + "id": "greeting-envoy-repo", + "path": "aws-ecs-integ/greeting-envoy-repo", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "greeting-envoy-to-appmesh": { + "id": "greeting-envoy-to-appmesh", + "path": "aws-ecs-integ/greeting-envoy-to-appmesh", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeting-envoy-to-appmesh/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": "appmesh:StreamAggregatedResources", + "Effect": "Allow", + "Resource": { + "Ref": "mymeshEA67EDEF" + } + } + ], + "Version": "2012-10-17" + }, + "policyName": "greetingenvoytoappmesh97051B23", + "roles": [ + { + "Ref": "greetingtaskdefinitionTaskRole9179DA4A" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "greeting-publish-metrics": { + "id": "greeting-publish-metrics", + "path": "aws-ecs-integ/greeting-publish-metrics", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeting-publish-metrics/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": "cloudwatch:PutMetricData", + "Effect": "Allow", + "Resource": "*" + } + ], + "Version": "2012-10-17" + }, + "policyName": "greetingpublishmetricsF17124EF", + "roles": [ + { + "Ref": "greetingtaskdefinitionTaskRole9179DA4A" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "greeting-service": { + "id": "greeting-service", + "path": "aws-ecs-integ/greeting-service", + "children": { + "Service": { + "id": "Service", + "path": "aws-ecs-integ/greeting-service/Service", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::Service", + "aws:cdk:cloudformation:props": { + "cluster": { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "deploymentConfiguration": { + "maximumPercent": 150, + "minimumHealthyPercent": 100 + }, + "desiredCount": 2, + "enableEcsManagedTags": false, + "launchType": "FARGATE", + "networkConfiguration": { + "awsvpcConfiguration": { + "assignPublicIp": "DISABLED", + "subnets": [ + { + "Ref": "productionenvironmentvpcPrivateSubnet1Subnet53F632E6" + }, + { + "Ref": "productionenvironmentvpcPrivateSubnet2Subnet756FB93C" + } + ], + "securityGroups": [ + { + "Fn::GetAtt": [ + "greetingserviceSecurityGroupE9BE665B", + "GroupId" + ] + } + ] + } + }, + "serviceRegistries": [ + { + "registryArn": { + "Fn::GetAtt": [ + "greetingserviceCloudmapService0A2D7385", + "Arn" + ] + } + } + ], + "taskDefinition": { + "Ref": "greetingtaskdefinition31690093" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "CloudmapService": { + "id": "CloudmapService", + "path": "aws-ecs-integ/greeting-service/CloudmapService", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeting-service/CloudmapService/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ServiceDiscovery::Service", + "aws:cdk:cloudformation:props": { + "dnsConfig": { + "dnsRecords": [ + { + "type": "A", + "ttl": 10 + } + ], + "namespaceId": { + "Fn::GetAtt": [ + "productionenvironmentclusterDefaultServiceDiscoveryNamespaceBE74D64D", + "Id" + ] + }, + "routingPolicy": "MULTIVALUE" + }, + "healthCheckCustomConfig": { + "failureThreshold": 2 + }, + "name": "greeting", + "namespaceId": { + "Fn::GetAtt": [ + "productionenvironmentclusterDefaultServiceDiscoveryNamespaceBE74D64D", + "Id" + ] + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "SecurityGroup": { + "id": "SecurityGroup", + "path": "aws-ecs-integ/greeting-service/SecurityGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeting-service/SecurityGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroup", + "aws:cdk:cloudformation:props": { + "groupDescription": "aws-ecs-integ/greeting-service/SecurityGroup", + "securityGroupEgress": [ + { + "cidrIp": "0.0.0.0/0", + "description": "Allow all outbound traffic by default", + "ipProtocol": "-1" + } + ], + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "from awsecsinteggreeterserviceSecurityGroup055DC23B:80": { + "id": "from awsecsinteggreeterserviceSecurityGroup055DC23B:80", + "path": "aws-ecs-integ/greeting-service/SecurityGroup/from awsecsinteggreeterserviceSecurityGroup055DC23B:80", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroupIngress", + "aws:cdk:cloudformation:props": { + "ipProtocol": "tcp", + "description": "Accept inbound traffic from greeter", + "fromPort": 80, + "groupId": { + "Fn::GetAtt": [ + "greetingserviceSecurityGroupE9BE665B", + "GroupId" + ] + }, + "sourceSecurityGroupId": { + "Fn::GetAtt": [ + "greeterserviceSecurityGroupDB4AC3A9", + "GroupId" + ] + }, + "toPort": 80 + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "ScalingRole": { + "id": "ScalingRole", + "path": "aws-ecs-integ/greeting-service/ScalingRole", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "TaskCount": { + "id": "TaskCount", + "path": "aws-ecs-integ/greeting-service/TaskCount", + "children": { + "Target": { + "id": "Target", + "path": "aws-ecs-integ/greeting-service/TaskCount/Target", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeting-service/TaskCount/Target/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ApplicationAutoScaling::ScalableTarget", + "aws:cdk:cloudformation:props": { + "maxCapacity": 8, + "minCapacity": 2, + "resourceId": { + "Fn::Join": [ + "", + [ + "service/", + { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "/", + { + "Fn::GetAtt": [ + "greetingserviceService8DA58640", + "Name" + ] + } + ] + ] + }, + "roleArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/aws-service-role/ecs.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ECSService" + ] + ] + }, + "scalableDimension": "ecs:service:DesiredCount", + "serviceNamespace": "ecs" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "greeting-target-cpu-utilization-50": { + "id": "greeting-target-cpu-utilization-50", + "path": "aws-ecs-integ/greeting-service/TaskCount/Target/greeting-target-cpu-utilization-50", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeting-service/TaskCount/Target/greeting-target-cpu-utilization-50/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ApplicationAutoScaling::ScalingPolicy", + "aws:cdk:cloudformation:props": { + "policyName": "awsecsinteggreetingserviceTaskCountTargetgreetingtargetcpuutilization504C76B1F4", + "policyType": "TargetTrackingScaling", + "scalingTargetId": { + "Ref": "greetingserviceTaskCountTargetA036048C" + }, + "targetTrackingScalingPolicyConfiguration": { + "predefinedMetricSpecification": { + "predefinedMetricType": "ECSServiceAverageCPUUtilization" + }, + "scaleInCooldown": 60, + "scaleOutCooldown": 60, + "targetValue": 50 + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "greeting-virtual-node": { + "id": "greeting-virtual-node", + "path": "aws-ecs-integ/greeting-virtual-node", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeting-virtual-node/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::AppMesh::VirtualNode", + "aws:cdk:cloudformation:props": { + "meshName": { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "spec": { + "listeners": [ + { + "portMapping": { + "port": 80, + "protocol": "http" + } + } + ], + "serviceDiscovery": { + "awsCloudMap": { + "namespaceName": "production", + "serviceName": { + "Fn::GetAtt": [ + "greetingserviceCloudmapService0A2D7385", + "Name" + ] + } + } + } + }, + "virtualNodeName": "greeting" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "greeting-virtual-router": { + "id": "greeting-virtual-router", + "path": "aws-ecs-integ/greeting-virtual-router", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeting-virtual-router/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::AppMesh::VirtualRouter", + "aws:cdk:cloudformation:props": { + "meshName": { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "spec": { + "listeners": [ + { + "portMapping": { + "port": 80, + "protocol": "http" + } + } + ] + }, + "virtualRouterName": "greeting" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "greeting-route": { + "id": "greeting-route", + "path": "aws-ecs-integ/greeting-virtual-router/greeting-route", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeting-virtual-router/greeting-route/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::AppMesh::Route", + "aws:cdk:cloudformation:props": { + "meshName": { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "spec": { + "httpRoute": { + "action": { + "weightedTargets": [ + { + "virtualNode": { + "Fn::GetAtt": [ + "greetingvirtualnodeC4A2C517", + "VirtualNodeName" + ] + }, + "weight": 1 + } + ] + }, + "match": { + "prefix": "/" + } + } + }, + "virtualRouterName": { + "Fn::GetAtt": [ + "greetingvirtualrouter0F898D1A", + "VirtualRouterName" + ] + }, + "routeName": "greeting-route" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "greeting-virtual-service": { + "id": "greeting-virtual-service", + "path": "aws-ecs-integ/greeting-virtual-service", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeting-virtual-service/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::AppMesh::VirtualService", + "aws:cdk:cloudformation:props": { + "meshName": { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "spec": { + "provider": { + "virtualRouter": { + "virtualRouterName": { + "Fn::GetAtt": [ + "greetingvirtualrouter0F898D1A", + "VirtualRouterName" + ] + } + } + } + }, + "virtualServiceName": "greeting.production" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "greeter": { + "id": "greeter", + "path": "aws-ecs-integ/greeter", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "greeter-logs": { + "id": "greeter-logs", + "path": "aws-ecs-integ/greeter-logs", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeter-logs/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Logs::LogGroup", + "aws:cdk:cloudformation:props": { + "logGroupName": "greeter-logs", + "retentionInDays": 7 + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "greeter-load-balancer": { + "id": "greeter-load-balancer", + "path": "aws-ecs-integ/greeter-load-balancer", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeter-load-balancer/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ElasticLoadBalancingV2::LoadBalancer", + "aws:cdk:cloudformation:props": { + "loadBalancerAttributes": [ + { + "key": "deletion_protection.enabled", + "value": "false" + } + ], + "scheme": "internet-facing", + "securityGroups": [ + { + "Fn::GetAtt": [ + "greeterloadbalancerSecurityGroupEE1B20F3", + "GroupId" + ] + } + ], + "subnets": [ + { + "Ref": "productionenvironmentvpcPublicSubnet1Subnet8D92C089" + }, + { + "Ref": "productionenvironmentvpcPublicSubnet2Subnet298E6C31" + } + ], + "type": "application" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "SecurityGroup": { + "id": "SecurityGroup", + "path": "aws-ecs-integ/greeter-load-balancer/SecurityGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeter-load-balancer/SecurityGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroup", + "aws:cdk:cloudformation:props": { + "groupDescription": "Automatically created Security Group for ELB awsecsinteggreeterloadbalancer147D1D5C", + "securityGroupIngress": [ + { + "cidrIp": "0.0.0.0/0", + "ipProtocol": "tcp", + "fromPort": 80, + "toPort": 80, + "description": "Allow from anyone on port 80" + } + ], + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "to awsecsinteggreeterserviceSecurityGroup055DC23B:80": { + "id": "to awsecsinteggreeterserviceSecurityGroup055DC23B:80", + "path": "aws-ecs-integ/greeter-load-balancer/SecurityGroup/to awsecsinteggreeterserviceSecurityGroup055DC23B:80", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroupEgress", + "aws:cdk:cloudformation:props": { + "groupId": { + "Fn::GetAtt": [ + "greeterloadbalancerSecurityGroupEE1B20F3", + "GroupId" + ] + }, + "ipProtocol": "tcp", + "description": "Load balancer to target", + "destinationSecurityGroupId": { + "Fn::GetAtt": [ + "greeterserviceSecurityGroupDB4AC3A9", + "GroupId" + ] + }, + "fromPort": 80, + "toPort": 80 + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "greeter-listener": { + "id": "greeter-listener", + "path": "aws-ecs-integ/greeter-load-balancer/greeter-listener", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeter-load-balancer/greeter-listener/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ElasticLoadBalancingV2::Listener", + "aws:cdk:cloudformation:props": { + "defaultActions": [ + { + "type": "forward", + "targetGroupArn": { + "Ref": "greeterloadbalancergreeterlistenergreeterGroupFFBFF0C2" + } + } + ], + "loadBalancerArn": { + "Ref": "greeterloadbalancer85256741" + }, + "port": 80, + "protocol": "HTTP" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "greeterGroup": { + "id": "greeterGroup", + "path": "aws-ecs-integ/greeter-load-balancer/greeter-listener/greeterGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeter-load-balancer/greeter-listener/greeterGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ElasticLoadBalancingV2::TargetGroup", + "aws:cdk:cloudformation:props": { + "port": 80, + "protocol": "HTTP", + "targetGroupAttributes": [ + { + "key": "deregistration_delay.timeout_seconds", + "value": "10" + }, + { + "key": "stickiness.enabled", + "value": "false" + } + ], + "targetType": "ip", + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "greeter-load-balancer-dns-output": { + "id": "greeter-load-balancer-dns-output", + "path": "aws-ecs-integ/greeter-load-balancer-dns-output", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnOutput", + "version": "0.0.0" + } + }, + "greeter-task-definition": { + "id": "greeter-task-definition", + "path": "aws-ecs-integ/greeter-task-definition", + "children": { + "TaskRole": { + "id": "TaskRole", + "path": "aws-ecs-integ/greeter-task-definition/TaskRole", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeter-task-definition/TaskRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "managedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/AWSXRayDaemonWriteAccess" + ] + ] + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultPolicy": { + "id": "DefaultPolicy", + "path": "aws-ecs-integ/greeter-task-definition/TaskRole/DefaultPolicy", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeter-task-definition/TaskRole/DefaultPolicy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:DescribeLogStreams", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": "*" + } + ], + "Version": "2012-10-17" + }, + "policyName": "greetertaskdefinitionTaskRoleDefaultPolicyD0F53B1C", + "roles": [ + { + "Ref": "greetertaskdefinitionTaskRole2A098ACC" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeter-task-definition/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::TaskDefinition", + "aws:cdk:cloudformation:props": { + "containerDefinitions": [ + { + "cpu": 1024, + "dependsOn": [ + { + "containerName": "firelens", + "condition": "START" + }, + { + "containerName": "envoy", + "condition": "HEALTHY" + }, + { + "containerName": "cloudwatch-agent", + "condition": "START" + }, + { + "containerName": "xray", + "condition": "HEALTHY" + } + ], + "essential": true, + "image": "nathanpeck/greeter", + "memory": 2048, + "name": "app", + "portMappings": [ + { + "containerPort": 80, + "protocol": "tcp" + } + ], + "ulimits": [ + { + "name": "nofile", + "softLimit": 1024000, + "hardLimit": 1024000 + } + ], + "logConfiguration": { + "logDriver": "awsfirelens", + "options": { + "Name": "cloudwatch", + "region": { + "Ref": "AWS::Region" + }, + "log_group_name": { + "Ref": "greeterlogsCCD2F8B2" + }, + "log_stream_prefix": "greeter/" + } + }, + "environment": [ + { + "name": "PORT", + "value": "80" + }, + { + "name": "GREETING_URL", + "value": "http://greeting.production" + }, + { + "name": "NAME_URL", + "value": "http://name.production" + } + ] + }, + { + "essential": true, + "image": { + "Fn::Join": [ + "", + [ + { + "Fn::FindInMap": [ + "greeterenvoyimageaccountmapping", + { + "Ref": "AWS::Region" + }, + "ecrRepo" + ] + }, + ".dkr.ecr.", + { + "Ref": "AWS::Region" + }, + ".", + { + "Ref": "AWS::URLSuffix" + }, + "/aws-appmesh-envoy:v1.15.1.0-prod" + ] + ] + }, + "memoryReservation": 128, + "name": "envoy", + "ulimits": [ + { + "name": "nofile", + "softLimit": 1024000, + "hardLimit": 1024000 + } + ], + "user": "1337", + "logConfiguration": { + "logDriver": "awslogs", + "options": { + "awslogs-group": { + "Ref": "greetertaskdefinitionenvoyLogGroup6E10B93E" + }, + "awslogs-stream-prefix": "envoy", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "environment": [ + { + "name": "APPMESH_VIRTUAL_NODE_NAME", + "value": { + "Fn::Join": [ + "", + [ + "mesh/", + { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "/virtualNode/greeter" + ] + ] + } + }, + { + "name": "AWS_REGION", + "value": { + "Ref": "AWS::Region" + } + }, + { + "name": "ENABLE_ENVOY_STATS_TAGS", + "value": "1" + }, + { + "name": "ENABLE_ENVOY_DOG_STATSD", + "value": "1" + } + ], + "healthCheck": { + "command": [ + "CMD-SHELL", + "curl -s http://localhost:9901/server_info | grep state | grep -q LIVE" + ], + "interval": 5, + "retries": 3, + "startPeriod": 10, + "timeout": 2 + } + }, + { + "dependsOn": [ + { + "containerName": "envoy", + "condition": "HEALTHY" + } + ], + "essential": true, + "image": { + "Ref": "SsmParameterValueawsserviceawsforfluentbitlatestC96584B6F00A464EAD1953AFF4B05118Parameter" + }, + "memoryReservation": 50, + "name": "firelens", + "user": "0:1338", + "logConfiguration": { + "logDriver": "awslogs", + "options": { + "awslogs-group": { + "Ref": "greetertaskdefinitionfirelensLogGroupD5BAAC35" + }, + "awslogs-stream-prefix": "firelens", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "firelensConfiguration": { + "type": "fluentbit" + } + }, + { + "dependsOn": [ + { + "containerName": "envoy", + "condition": "HEALTHY" + } + ], + "essential": true, + "image": "amazon/aws-xray-daemon:latest", + "memoryReservation": 256, + "name": "xray", + "user": "1337", + "logConfiguration": { + "logDriver": "awslogs", + "options": { + "awslogs-group": { + "Ref": "greetertaskdefinitionxrayLogGroupBC1558B6" + }, + "awslogs-stream-prefix": "xray", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "environment": [ + { + "name": "AWS_REGION", + "value": { + "Ref": "AWS::Region" + } + } + ], + "healthCheck": { + "command": [ + "CMD-SHELL", + "curl -s http://localhost:2000" + ], + "interval": 5, + "retries": 3, + "startPeriod": 10, + "timeout": 2 + } + }, + { + "dependsOn": [ + { + "containerName": "envoy", + "condition": "HEALTHY" + } + ], + "essential": true, + "image": "amazon/cloudwatch-agent:latest", + "memoryReservation": 50, + "name": "cloudwatch-agent", + "user": "0:1338", + "logConfiguration": { + "logDriver": "awslogs", + "options": { + "awslogs-group": { + "Ref": "greetertaskdefinitioncloudwatchagentLogGroupE7EAF327" + }, + "awslogs-stream-prefix": "cloudwatch-agent", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "environment": [ + { + "name": "CW_CONFIG_CONTENT", + "value": "{\"logs\":{\"metrics_collected\":{\"emf\":{}}},\"metrics\":{\"metrics_collected\":{\"statsd\":{}}}}" + } + ] + } + ], + "cpu": "1024", + "executionRoleArn": { + "Fn::GetAtt": [ + "greetertaskdefinitionExecutionRoleAED0EC79", + "Arn" + ] + }, + "family": "awsecsinteggreetertaskdefinitionB95239FB", + "memory": "2048", + "networkMode": "awsvpc", + "proxyConfiguration": { + "containerName": "envoy", + "proxyConfigurationProperties": [ + { + "name": "AppPorts", + "value": "80" + }, + { + "name": "ProxyEgressPort", + "value": "15001" + }, + { + "name": "ProxyIngressPort", + "value": "15000" + }, + { + "name": "IgnoredUID", + "value": "1337" + }, + { + "name": "IgnoredGID", + "value": "1338" + }, + { + "name": "EgressIgnoredIPs", + "value": "169.254.170.2,169.254.169.254" + } + ], + "type": "APPMESH" + }, + "requiresCompatibilities": [ + "EC2", + "FARGATE" + ], + "taskRoleArn": { + "Fn::GetAtt": [ + "greetertaskdefinitionTaskRole2A098ACC", + "Arn" + ] + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "app": { + "id": "app", + "path": "aws-ecs-integ/greeter-task-definition/app", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "envoy": { + "id": "envoy", + "path": "aws-ecs-integ/greeter-task-definition/envoy", + "children": { + "LogGroup": { + "id": "LogGroup", + "path": "aws-ecs-integ/greeter-task-definition/envoy/LogGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeter-task-definition/envoy/LogGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Logs::LogGroup", + "aws:cdk:cloudformation:props": {} + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "ExecutionRole": { + "id": "ExecutionRole", + "path": "aws-ecs-integ/greeter-task-definition/ExecutionRole", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeter-task-definition/ExecutionRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultPolicy": { + "id": "DefaultPolicy", + "path": "aws-ecs-integ/greeter-task-definition/ExecutionRole/DefaultPolicy", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeter-task-definition/ExecutionRole/DefaultPolicy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": [ + "ecr:BatchCheckLayerAvailability", + "ecr:GetDownloadUrlForLayer", + "ecr:BatchGetImage" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":ecr:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Fn::FindInMap": [ + "greeterenvoyimageaccountmapping", + { + "Ref": "AWS::Region" + }, + "ecrRepo" + ] + }, + ":repository/aws-appmesh-envoy" + ] + ] + } + }, + { + "Action": "ecr:GetAuthorizationToken", + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "greetertaskdefinitionenvoyLogGroup6E10B93E", + "Arn" + ] + } + }, + { + "Action": [ + "ecr:GetAuthorizationToken", + "ecr:BatchCheckLayerAvailability", + "ecr:GetDownloadUrlForLayer", + "ecr:BatchGetImage" + ], + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "greetertaskdefinitionfirelensLogGroupD5BAAC35", + "Arn" + ] + } + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "greetertaskdefinitionxrayLogGroupBC1558B6", + "Arn" + ] + } + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "greetertaskdefinitioncloudwatchagentLogGroupE7EAF327", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "policyName": "greetertaskdefinitionExecutionRoleDefaultPolicy0D8E9106", + "roles": [ + { + "Ref": "greetertaskdefinitionExecutionRoleAED0EC79" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "firelens": { + "id": "firelens", + "path": "aws-ecs-integ/greeter-task-definition/firelens", + "children": { + "LogGroup": { + "id": "LogGroup", + "path": "aws-ecs-integ/greeter-task-definition/firelens/LogGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeter-task-definition/firelens/LogGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Logs::LogGroup", + "aws:cdk:cloudformation:props": {} + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "xray": { + "id": "xray", + "path": "aws-ecs-integ/greeter-task-definition/xray", + "children": { + "LogGroup": { + "id": "LogGroup", + "path": "aws-ecs-integ/greeter-task-definition/xray/LogGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeter-task-definition/xray/LogGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Logs::LogGroup", + "aws:cdk:cloudformation:props": {} + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "cloudwatch-agent": { + "id": "cloudwatch-agent", + "path": "aws-ecs-integ/greeter-task-definition/cloudwatch-agent", + "children": { + "LogGroup": { + "id": "LogGroup", + "path": "aws-ecs-integ/greeter-task-definition/cloudwatch-agent/LogGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeter-task-definition/cloudwatch-agent/LogGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Logs::LogGroup", + "aws:cdk:cloudformation:props": {} + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "greeter-envoy-image-account-mapping": { + "id": "greeter-envoy-image-account-mapping", + "path": "aws-ecs-integ/greeter-envoy-image-account-mapping", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnMapping", + "version": "0.0.0" + } + }, + "greeter-envoy-repo": { + "id": "greeter-envoy-repo", + "path": "aws-ecs-integ/greeter-envoy-repo", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "greeter-envoy-to-appmesh": { + "id": "greeter-envoy-to-appmesh", + "path": "aws-ecs-integ/greeter-envoy-to-appmesh", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeter-envoy-to-appmesh/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": "appmesh:StreamAggregatedResources", + "Effect": "Allow", + "Resource": { + "Ref": "mymeshEA67EDEF" + } + } + ], + "Version": "2012-10-17" + }, + "policyName": "greeterenvoytoappmesh1A94938B", + "roles": [ + { + "Ref": "greetertaskdefinitionTaskRole2A098ACC" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "greeter-publish-metrics": { + "id": "greeter-publish-metrics", + "path": "aws-ecs-integ/greeter-publish-metrics", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeter-publish-metrics/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": "cloudwatch:PutMetricData", + "Effect": "Allow", + "Resource": "*" + } + ], + "Version": "2012-10-17" + }, + "policyName": "greeterpublishmetrics0CCA359A", + "roles": [ + { + "Ref": "greetertaskdefinitionTaskRole2A098ACC" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "greeter-service": { + "id": "greeter-service", + "path": "aws-ecs-integ/greeter-service", + "children": { + "Service": { + "id": "Service", + "path": "aws-ecs-integ/greeter-service/Service", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::Service", + "aws:cdk:cloudformation:props": { + "cluster": { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "deploymentConfiguration": { + "maximumPercent": 150, + "minimumHealthyPercent": 100 + }, + "desiredCount": 2, + "enableEcsManagedTags": false, + "healthCheckGracePeriodSeconds": 60, + "launchType": "FARGATE", + "loadBalancers": [ + { + "targetGroupArn": { + "Ref": "greeterloadbalancergreeterlistenergreeterGroupFFBFF0C2" + }, + "containerName": "app", + "containerPort": 80 + } + ], + "networkConfiguration": { + "awsvpcConfiguration": { + "assignPublicIp": "DISABLED", + "subnets": [ + { + "Ref": "productionenvironmentvpcPrivateSubnet1Subnet53F632E6" + }, + { + "Ref": "productionenvironmentvpcPrivateSubnet2Subnet756FB93C" + } + ], + "securityGroups": [ + { + "Fn::GetAtt": [ + "greeterserviceSecurityGroupDB4AC3A9", + "GroupId" + ] + } + ] + } + }, + "serviceRegistries": [ + { + "registryArn": { + "Fn::GetAtt": [ + "greeterserviceCloudmapServiceEE292978", + "Arn" + ] + } + } + ], + "taskDefinition": { + "Ref": "greetertaskdefinitionE956EEA2" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "CloudmapService": { + "id": "CloudmapService", + "path": "aws-ecs-integ/greeter-service/CloudmapService", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeter-service/CloudmapService/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ServiceDiscovery::Service", + "aws:cdk:cloudformation:props": { + "dnsConfig": { + "dnsRecords": [ + { + "type": "A", + "ttl": 10 + } + ], + "namespaceId": { + "Fn::GetAtt": [ + "productionenvironmentclusterDefaultServiceDiscoveryNamespaceBE74D64D", + "Id" + ] + }, + "routingPolicy": "MULTIVALUE" + }, + "healthCheckCustomConfig": { + "failureThreshold": 2 + }, + "name": "greeter", + "namespaceId": { + "Fn::GetAtt": [ + "productionenvironmentclusterDefaultServiceDiscoveryNamespaceBE74D64D", + "Id" + ] + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "SecurityGroup": { + "id": "SecurityGroup", + "path": "aws-ecs-integ/greeter-service/SecurityGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeter-service/SecurityGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroup", + "aws:cdk:cloudformation:props": { + "groupDescription": "aws-ecs-integ/greeter-service/SecurityGroup", + "securityGroupEgress": [ + { + "cidrIp": "0.0.0.0/0", + "description": "Allow all outbound traffic by default", + "ipProtocol": "-1" + } + ], + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "from awsecsinteggreeterloadbalancerSecurityGroupF791FA83:80": { + "id": "from awsecsinteggreeterloadbalancerSecurityGroupF791FA83:80", + "path": "aws-ecs-integ/greeter-service/SecurityGroup/from awsecsinteggreeterloadbalancerSecurityGroupF791FA83:80", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroupIngress", + "aws:cdk:cloudformation:props": { + "ipProtocol": "tcp", + "description": "Load balancer to target", + "fromPort": 80, + "groupId": { + "Fn::GetAtt": [ + "greeterserviceSecurityGroupDB4AC3A9", + "GroupId" + ] + }, + "sourceSecurityGroupId": { + "Fn::GetAtt": [ + "greeterloadbalancerSecurityGroupEE1B20F3", + "GroupId" + ] + }, + "toPort": 80 + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "ScalingRole": { + "id": "ScalingRole", + "path": "aws-ecs-integ/greeter-service/ScalingRole", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "TaskCount": { + "id": "TaskCount", + "path": "aws-ecs-integ/greeter-service/TaskCount", + "children": { + "Target": { + "id": "Target", + "path": "aws-ecs-integ/greeter-service/TaskCount/Target", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeter-service/TaskCount/Target/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ApplicationAutoScaling::ScalableTarget", + "aws:cdk:cloudformation:props": { + "maxCapacity": 8, + "minCapacity": 2, + "resourceId": { + "Fn::Join": [ + "", + [ + "service/", + { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "/", + { + "Fn::GetAtt": [ + "greeterserviceService8EDD3244", + "Name" + ] + } + ] + ] + }, + "roleArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/aws-service-role/ecs.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ECSService" + ] + ] + }, + "scalableDimension": "ecs:service:DesiredCount", + "serviceNamespace": "ecs" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "greeter-target-cpu-utilization-50": { + "id": "greeter-target-cpu-utilization-50", + "path": "aws-ecs-integ/greeter-service/TaskCount/Target/greeter-target-cpu-utilization-50", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeter-service/TaskCount/Target/greeter-target-cpu-utilization-50/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ApplicationAutoScaling::ScalingPolicy", + "aws:cdk:cloudformation:props": { + "policyName": "awsecsinteggreeterserviceTaskCountTargetgreetertargetcpuutilization50A75D0C0D", + "policyType": "TargetTrackingScaling", + "scalingTargetId": { + "Ref": "greeterserviceTaskCountTargetAB95B3D0" + }, + "targetTrackingScalingPolicyConfiguration": { + "predefinedMetricSpecification": { + "predefinedMetricType": "ECSServiceAverageCPUUtilization" + }, + "scaleInCooldown": 60, + "scaleOutCooldown": 60, + "targetValue": 50 + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "greeter-virtual-node": { + "id": "greeter-virtual-node", + "path": "aws-ecs-integ/greeter-virtual-node", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeter-virtual-node/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::AppMesh::VirtualNode", + "aws:cdk:cloudformation:props": { + "meshName": { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "spec": { + "backends": [ + { + "virtualService": { + "virtualServiceName": "name.production" + } + }, + { + "virtualService": { + "virtualServiceName": "greeting.production" + } + } + ], + "listeners": [ + { + "portMapping": { + "port": 80, + "protocol": "http" + } + } + ], + "serviceDiscovery": { + "awsCloudMap": { + "namespaceName": "production", + "serviceName": { + "Fn::GetAtt": [ + "greeterserviceCloudmapServiceEE292978", + "Name" + ] + } + } + } + }, + "virtualNodeName": "greeter" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "greeter-virtual-router": { + "id": "greeter-virtual-router", + "path": "aws-ecs-integ/greeter-virtual-router", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeter-virtual-router/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::AppMesh::VirtualRouter", + "aws:cdk:cloudformation:props": { + "meshName": { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "spec": { + "listeners": [ + { + "portMapping": { + "port": 80, + "protocol": "http" + } + } + ] + }, + "virtualRouterName": "greeter" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "greeter-route": { + "id": "greeter-route", + "path": "aws-ecs-integ/greeter-virtual-router/greeter-route", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeter-virtual-router/greeter-route/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::AppMesh::Route", + "aws:cdk:cloudformation:props": { + "meshName": { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "spec": { + "httpRoute": { + "action": { + "weightedTargets": [ + { + "virtualNode": { + "Fn::GetAtt": [ + "greetervirtualnode21EA7CC9", + "VirtualNodeName" + ] + }, + "weight": 1 + } + ] + }, + "match": { + "prefix": "/" + } + } + }, + "virtualRouterName": { + "Fn::GetAtt": [ + "greetervirtualrouter193840BB", + "VirtualRouterName" + ] + }, + "routeName": "greeter-route" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "greeter-virtual-service": { + "id": "greeter-virtual-service", + "path": "aws-ecs-integ/greeter-virtual-service", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/greeter-virtual-service/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::AppMesh::VirtualService", + "aws:cdk:cloudformation:props": { + "meshName": { + "Fn::GetAtt": [ + "mymeshEA67EDEF", + "MeshName" + ] + }, + "spec": { + "provider": { + "virtualRouter": { + "virtualRouterName": { + "Fn::GetAtt": [ + "greetervirtualrouter193840BB", + "VirtualRouterName" + ] + } + } + } + }, + "virtualServiceName": "greeter.production" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Stack", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.App", + "version": "0.0.0" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/.style.yapf b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/.style.yapf new file mode 100644 index 0000000000000..72e1005523a92 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/.style.yapf @@ -0,0 +1,6 @@ +# Format using: yapf -ri . +# Since you're here, unit test using: python -m unittest discover +[style] +based_on_style = pep8 +column_limit = 120 +SPLIT_BEFORE_NAMED_ASSIGNS = False diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/Pipfile b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/Pipfile new file mode 100644 index 0000000000000..27927581bc218 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/Pipfile @@ -0,0 +1,14 @@ +[[source]] +url = "https://pypi.python.org/simple" +verify_ssl = true +name = "pypi" + +[packages] + +[dev-packages] +yapf = "*" +boto3 = "*" +coverage = "*" + +[requires] +python_version = "3.8" diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/Pipfile.lock b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/Pipfile.lock new file mode 100644 index 0000000000000..37b1c47e3d5e7 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/Pipfile.lock @@ -0,0 +1,138 @@ +{ + "_meta": { + "hash": { + "sha256": "62f31cd5a0266aa03d564dff455c3c2fd49b3e086ede177a42d574a15789fbda" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.8" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.python.org/simple", + "verify_ssl": true + } + ] + }, + "default": {}, + "develop": { + "boto3": { + "hashes": [ + "sha256:76b3ee0d1dd860c9218bc864cd29f1ee986f6e1e75e8669725dd3c411039379e", + "sha256:c39cb6ed376ba1d4689ac8f6759a2b2d8a0b0424dbec0cd3af1558079bcf06e8" + ], + "index": "pypi", + "version": "==1.20.23" + }, + "botocore": { + "hashes": [ + "sha256:640b62110aa6d1c25553eceafb5bcd89aedeb84b191598d1f6492ad24374d285", + "sha256:7459766c4594f3b8877e8013f93f0dc6c6486acbeb7d9c9ae488396529cc2e84" + ], + "markers": "python_version >= '3.6'", + "version": "==1.23.23" + }, + "coverage": { + "hashes": [ + "sha256:01774a2c2c729619760320270e42cd9e797427ecfddd32c2a7b639cdc481f3c0", + "sha256:03b20e52b7d31be571c9c06b74746746d4eb82fc260e594dc662ed48145e9efd", + "sha256:0a7726f74ff63f41e95ed3a89fef002916c828bb5fcae83b505b49d81a066884", + "sha256:1219d760ccfafc03c0822ae2e06e3b1248a8e6d1a70928966bafc6838d3c9e48", + "sha256:13362889b2d46e8d9f97c421539c97c963e34031ab0cb89e8ca83a10cc71ac76", + "sha256:174cf9b4bef0db2e8244f82059a5a72bd47e1d40e71c68ab055425172b16b7d0", + "sha256:17e6c11038d4ed6e8af1407d9e89a2904d573be29d51515f14262d7f10ef0a64", + "sha256:215f8afcc02a24c2d9a10d3790b21054b58d71f4b3c6f055d4bb1b15cecce685", + "sha256:22e60a3ca5acba37d1d4a2ee66e051f5b0e1b9ac950b5b0cf4aa5366eda41d47", + "sha256:2641f803ee9f95b1f387f3e8f3bf28d83d9b69a39e9911e5bfee832bea75240d", + "sha256:276651978c94a8c5672ea60a2656e95a3cce2a3f31e9fb2d5ebd4c215d095840", + "sha256:3f7c17209eef285c86f819ff04a6d4cbee9b33ef05cbcaae4c0b4e8e06b3ec8f", + "sha256:3feac4084291642165c3a0d9eaebedf19ffa505016c4d3db15bfe235718d4971", + "sha256:49dbff64961bc9bdd2289a2bda6a3a5a331964ba5497f694e2cbd540d656dc1c", + "sha256:4e547122ca2d244f7c090fe3f4b5a5861255ff66b7ab6d98f44a0222aaf8671a", + "sha256:5829192582c0ec8ca4a2532407bc14c2f338d9878a10442f5d03804a95fac9de", + "sha256:5d6b09c972ce9200264c35a1d53d43ca55ef61836d9ec60f0d44273a31aa9f17", + "sha256:600617008aa82032ddeace2535626d1bc212dfff32b43989539deda63b3f36e4", + "sha256:619346d57c7126ae49ac95b11b0dc8e36c1dd49d148477461bb66c8cf13bb521", + "sha256:63c424e6f5b4ab1cf1e23a43b12f542b0ec2e54f99ec9f11b75382152981df57", + "sha256:6dbc1536e105adda7a6312c778f15aaabe583b0e9a0b0a324990334fd458c94b", + "sha256:6e1394d24d5938e561fbeaa0cd3d356207579c28bd1792f25a068743f2d5b282", + "sha256:86f2e78b1eff847609b1ca8050c9e1fa3bd44ce755b2ec30e70f2d3ba3844644", + "sha256:8bdfe9ff3a4ea37d17f172ac0dff1e1c383aec17a636b9b35906babc9f0f5475", + "sha256:8e2c35a4c1f269704e90888e56f794e2d9c0262fb0c1b1c8c4ee44d9b9e77b5d", + "sha256:92b8c845527eae547a2a6617d336adc56394050c3ed8a6918683646328fbb6da", + "sha256:9365ed5cce5d0cf2c10afc6add145c5037d3148585b8ae0e77cc1efdd6aa2953", + "sha256:9a29311bd6429be317c1f3fe4bc06c4c5ee45e2fa61b2a19d4d1d6111cb94af2", + "sha256:9a2b5b52be0a8626fcbffd7e689781bf8c2ac01613e77feda93d96184949a98e", + "sha256:a4bdeb0a52d1d04123b41d90a4390b096f3ef38eee35e11f0b22c2d031222c6c", + "sha256:a9c8c4283e17690ff1a7427123ffb428ad6a52ed720d550e299e8291e33184dc", + "sha256:b637c57fdb8be84e91fac60d9325a66a5981f8086c954ea2772efe28425eaf64", + "sha256:bf154ba7ee2fd613eb541c2bc03d3d9ac667080a737449d1a3fb342740eb1a74", + "sha256:c254b03032d5a06de049ce8bca8338a5185f07fb76600afff3c161e053d88617", + "sha256:c332d8f8d448ded473b97fefe4a0983265af21917d8b0cdcb8bb06b2afe632c3", + "sha256:c7912d1526299cb04c88288e148c6c87c0df600eca76efd99d84396cfe00ef1d", + "sha256:cfd9386c1d6f13b37e05a91a8583e802f8059bebfccde61a418c5808dea6bbfa", + "sha256:d5d2033d5db1d58ae2d62f095e1aefb6988af65b4b12cb8987af409587cc0739", + "sha256:dca38a21e4423f3edb821292e97cec7ad38086f84313462098568baedf4331f8", + "sha256:e2cad8093172b7d1595b4ad66f24270808658e11acf43a8f95b41276162eb5b8", + "sha256:e3db840a4dee542e37e09f30859f1612da90e1c5239a6a2498c473183a50e781", + "sha256:edcada2e24ed68f019175c2b2af2a8b481d3d084798b8c20d15d34f5c733fa58", + "sha256:f467bbb837691ab5a8ca359199d3429a11a01e6dfb3d9dcc676dc035ca93c0a9", + "sha256:f506af4f27def639ba45789fa6fde45f9a217da0be05f8910458e4557eed020c", + "sha256:f614fc9956d76d8a88a88bb41ddc12709caa755666f580af3a688899721efecd", + "sha256:f9afb5b746781fc2abce26193d1c817b7eb0e11459510fba65d2bd77fe161d9e", + "sha256:fb8b8ee99b3fffe4fd86f4c81b35a6bf7e4462cba019997af2fe679365db0c49" + ], + "index": "pypi", + "version": "==6.2" + }, + "jmespath": { + "hashes": [ + "sha256:b85d0567b8666149a93172712e68920734333c0ce7e89b78b3e987f71e5ed4f9", + "sha256:cdf6525904cc597730141d61b36f2e4b8ecc257c420fa2f4549bac2c2d0cb72f" + ], + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==0.10.0" + }, + "python-dateutil": { + "hashes": [ + "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", + "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==2.8.2" + }, + "s3transfer": { + "hashes": [ + "sha256:50ed823e1dc5868ad40c8dc92072f757aa0e653a192845c94a3b676f4a62da4c", + "sha256:9c1dc369814391a6bda20ebbf4b70a0f34630592c9aa520856bf384916af2803" + ], + "markers": "python_version >= '3.6'", + "version": "==0.5.0" + }, + "six": { + "hashes": [ + "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", + "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.16.0" + }, + "urllib3": { + "hashes": [ + "sha256:4987c65554f7a2dbf30c18fd48778ef124af6fab771a377103da0585e2336ece", + "sha256:c4fdf4019605b6e5423637e01bc9fe4daef873709a7973e195ceba0a62bbc844" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", + "version": "==1.26.7" + }, + "yapf": { + "hashes": [ + "sha256:408fb9a2b254c302f49db83c59f9aa0b4b0fd0ec25be3a5c51181327922ff63d", + "sha256:e3a234ba8455fe201eaa649cdac872d590089a18b661e39bbac7020978dd9c2e" + ], + "index": "pypi", + "version": "==0.31.0" + } + } +} diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/index.py b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/index.py new file mode 100644 index 0000000000000..790102022efed --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/index.py @@ -0,0 +1,34 @@ +import logging +import os + +import boto3 + +from lib.cleanup_resource_handler import CleanupResourceHandler +from lib.queue_handler import QueueHandler + +logging.getLogger().setLevel(logging.INFO) + + +def queue_handler(event, context): + """ + Handler for the event queue lambda trigger + """ + + ec2_client = boto3.client('ec2') + dynamodb_resource = boto3.resource('dynamodb') + route53_client = boto3.client('route53') + + handler = QueueHandler(ec2_client=ec2_client, dynamodb_resource=dynamodb_resource, route53_client=route53_client, + environ=os.environ) + + return handler.handle(event, context) + + +def cleanup_resource_handler(event, context): + """ + Event handler for the custom resource. + """ + + route53_client = boto3.client('route53') + handler = CleanupResourceHandler(route53_client=route53_client) + handler.handle_event(event, context) diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/__init__.py b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/__init__.py new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/cleanup_resource_handler.py b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/cleanup_resource_handler.py new file mode 100644 index 0000000000000..1ffde51b261c0 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/cleanup_resource_handler.py @@ -0,0 +1,51 @@ +import time +from dataclasses import dataclass +import logging +from typing import Any + +from lib.route53 import Route53RecordSetAccessor, Route53RecordSetLocator + + +@dataclass +class CleanupResourceProperties: + HostedZoneId: str + RecordName: str + ServiceToken: str + + +class CleanupResourceHandler: + route53_client: Any + monitor_interval: int + + def __init__(self, route53_client, monitor_interval=5): + self.record_set_accessor = Route53RecordSetAccessor(route53_client=route53_client) + self.monitor_interval = monitor_interval + + def handle_event(self, event, context): + request_type = event['RequestType'] + resource_properties = event['ResourceProperties'] + logging.info(f'Handling a {request_type} event with properties {resource_properties}') + + # Decode resource properties right away so that mis-configured + # properties will always fail quickly. + resource_properties = CleanupResourceProperties(**resource_properties) + + if request_type == 'Delete': + return self.on_delete(resource_properties) + + def on_delete(self, resource_properties: CleanupResourceProperties): + locator = Route53RecordSetLocator(hosted_zone_id=resource_properties.HostedZoneId, + record_name=resource_properties.RecordName) + + deleted = self.record_set_accessor.delete(locator=locator) + + if deleted: + logging.info(f'Monitoring for the record deletion') + for interval_number in range(1, 10): + if not self.record_set_accessor.exists(locator): + logging.info(f'The record has been deleted') + return + else: + logging.info(f'The record still exists') + if self.monitor_interval > 0: + time.sleep(self.monitor_interval) diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/events.py b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/events.py new file mode 100644 index 0000000000000..aa34343a00170 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/events.py @@ -0,0 +1,15 @@ +from lib.records import TaskInfo, EniInfo + + +def extract_event_task_info(task_description) -> TaskInfo: + arn = task_description['taskArn'] + + # Parse the eni info out of the the attachments + enis = [ + EniInfo(eni_id=detail['value']) for network_interface in task_description['attachments'] + if network_interface['type'] == 'eni' for detail in network_interface['details'] + if detail['name'] == 'networkInterfaceId' + ] + + # Create an object out of the extracted information + return TaskInfo(task_arn=arn, enis=enis) \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/queue_handler.py b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/queue_handler.py new file mode 100644 index 0000000000000..db56b4c898264 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/queue_handler.py @@ -0,0 +1,117 @@ +import json +import logging +from typing import Any + +from lib.events import extract_event_task_info +from lib.records import DdbRecordKey, DdbRecord +from lib.records_table import RecordsTableAccessor, RecordUpdate +from lib.route53 import Route53RecordSetLocator, Route53RecordSetAccessor +from lib.running_task_collector import RunningTaskCollector + + +class QueueHandler: + def __init__(self, ec2_client, route53_client, dynamodb_resource, environ): + self.ec2_client = ec2_client + self.route53_client = route53_client + + hosted_zone_id = environ['HOSTED_ZONE_ID'] + record_name = environ['RECORD_NAME'] + records_table = environ['RECORDS_TABLE'] + + cluster_arn = environ['CLUSTER_ARN'] + self.service_name = environ['SERVICE_NAME'] + + self.records_table_key = DdbRecordKey(cluster_arn=cluster_arn, service_name=self.service_name) + self.records_table_accessor = RecordsTableAccessor(table_client=dynamodb_resource.Table(records_table)) + + self.record_set_locator = Route53RecordSetLocator(hosted_zone_id=hosted_zone_id, record_name=record_name) + self.record_set_accessor = Route53RecordSetAccessor(route53_client=self.route53_client) + + def handle(self, event, context): + logging.info(f'event = {json.dumps(event)}') + + # Get a reference record from the records table to check for incoming + # event inconsistencies. + reference_record = self.records_table_accessor.get_record(self.records_table_key) + + # Collect running and stopped tasks from the status change events + running_tasks, stopped_tasks = self.collect_event_task_info(event, reference_record) + + # Build up a set of updates for the record + update = RecordUpdate(running_tasks=running_tasks, stopped_tasks=stopped_tasks) + + # Record the current record set locator + update.current_record_set(self.record_set_locator) + + # Clean any extra record sets in case the recordset has moved. + for record_set_locator in reference_record.record_sets: + if not record_set_locator.matches(self.record_set_locator): + update.extra_record_set(record_set_locator) + self.try_to_delete_record(record_set_locator) + + # Introduce some delay + # records_table.optimistic_simulation_delay = 5 + + # Update the record + ddb_record = self.records_table_accessor.put_update(key=self.records_table_key, update=update) + + # Update DNS + self.record_set_accessor.update(locator=self.record_set_locator, ipv4s=ddb_record.ipv4s) + + def collect_event_task_info(self, event, reference_record: DdbRecord): + running_task_collector = RunningTaskCollector(ec2_client=self.ec2_client, reference_record=reference_record) + stopped_tasks = [] + for message in decode_records(event): + if 'details' not in message: + logging.info(f'Received a non-task state message {message}') + continue + + task_description = message['details'] + + group = task_description['group'] + if group != f'service:{self.service_name}': + logging.info(f'Skipping irrelevant task description from group {group}') + continue + + task_info = extract_event_task_info(task_description) + logging.info(f'extracted task_info = {task_info}') + + last_status = task_description['lastStatus'] + if last_status == 'RUNNING': + logging.info(f'Collecting {task_info.task_arn} as running') + running_task_collector.collect(task_info) + + elif last_status == 'STOPPED': + logging.info(f'Collecting {task_info.task_arn} as stopped') + stopped_tasks.append(task_info) + + else: + logging.warning(f'{task_info.task_arn} had an unexpected status: {last_status}') + + # Query the ENIs store-back public IPs. + running_task_collector.fill_eni_info_from_eni_query() + + running_tasks = running_task_collector.tasks + + return running_tasks, stopped_tasks + + def try_to_delete_record(self, record_set_locator: Route53RecordSetLocator): + """ + Try to delete the given record set. This may not be possible if the + record is in a hosted zone we don't have access to. This may happen + when the user changes dns zones at the service extension level. + """ + + try: + self.record_set_accessor.delete(record_set_locator) + + except: + # We give up pretty easily if the record set accessor can't delete + # the extraneous record for any reason that the accessor can't + # handle. + logging.warning(f'Could not delete the extraneous record set {record_set_locator}') + + +def decode_records(sqs_event): + logging.info(f'sqs_event = {json.dumps(sqs_event)}') + return [json.loads(sqs_record['body']) for sqs_record in sqs_event['Records']] diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/records.py b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/records.py new file mode 100644 index 0000000000000..a6a1f2a374ab0 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/records.py @@ -0,0 +1,185 @@ +from dataclasses import dataclass, field +from datetime import datetime +from typing import Optional, List, Dict, Set + +from boto3.dynamodb.conditions import Key + +from lib.route53 import Route53RecordSetLocator + + +@dataclass +class EniInfo: + eni_id: str + public_ipv4: Optional[str] = None + + +@dataclass +class TaskInfo: + task_arn: str + enis: List[EniInfo] + stopped_datetime: Optional[datetime] = None + + # Tombstone information for the dynamodb record. + + def set_stopped_marker(self): + """ + Mark this task as stopped. + """ + self.stopped_datetime = datetime.utcnow() + + def is_stopped(self): + """ + Check if this task is stopped. + """ + return True if self.stopped_datetime is not None else False + + +@dataclass +class DdbRecordKey: + cluster_arn: str + service_name: str + + def to_composite(self): + return f'{self.cluster_arn}#{self.service_name}' + + @staticmethod + def from_composite(composite: str): + cluster_arn, service_name = composite.split('#') + return DdbRecordKey(cluster_arn=cluster_arn, service_name=service_name) + + +@dataclass +class DdbRecord: + key: DdbRecordKey + ipv4s: Set[str] = field(default_factory=set) + task_info: Dict[str, TaskInfo] = field(default_factory=dict) + record_sets: Set[Route53RecordSetLocator] = field(default_factory=set) + version: int = 0 + + def task_is_stopped(self, task_info: TaskInfo): + """ + Check if a task has already stopped. + """ + + return task_info.task_arn in self.task_info and self.task_info[task_info.task_arn].is_stopped() + + +class DdbRecordEncoding: + PK_NAME = 'cluster_service' + ATTR_VERSION = 'version' + ATTR_IPV4S = 'ipv4s' + ATTR_TASK_INFO = 'task_info' + ATTR_TASK_ARN = 'task_arn' + ATTR_TASK_ENIS = 'enis' + ATTR_TASK_STOPPED_DATETIME = 'stopped_datetime' + ATTR_ENI_ID = 'eni_id' + ATTR_ENI_PUBLIC_IPV4 = 'public_ipv4' + ATTR_RECORD_SETS = 'record_sets' + ATTR_RECORD_SET_ZONE = 'hosted_zone_id' + ATTR_RECORD_SET_NAME = 'record_name' + + def get_identity(self, key: DdbRecordKey): + return {self.PK_NAME: key.to_composite()} + + def get_identity_expression(self, key: DdbRecordKey): + return Key(self.PK_NAME).eq(key.to_composite()) + + def encode(self, record: DdbRecord) -> dict: + data = dict() + data[self.PK_NAME] = record.key.to_composite() + data[self.ATTR_VERSION] = record.version + + if len(record.ipv4s) > 0: + # Sorting only matters here for repeatability in tests, as set ordering + # isn't easily predictable. + data[self.ATTR_IPV4S] = [v for v in sorted(record.ipv4s)] + + if len(record.record_sets) > 0: + data[self.ATTR_RECORD_SETS] = [self.encode_record_set(v) for v in sorted(record.record_sets)] + + if len(record.task_info) > 0: + data[self.ATTR_TASK_INFO] = { + task_info.task_arn: self.encode_task_info(task_info) + for task_info in record.task_info.values() + } + + return data + + def encode_record_set(self, record_set: Route53RecordSetLocator): + return { + self.ATTR_RECORD_SET_ZONE: record_set.hosted_zone_id, + self.ATTR_RECORD_SET_NAME: record_set.record_name, + } + + def encode_task_info(self, task_info: TaskInfo) -> dict: + data = dict() + data[self.ATTR_TASK_ARN] = task_info.task_arn + + if task_info.stopped_datetime is not None: + data[self.ATTR_TASK_STOPPED_DATETIME] = task_info.stopped_datetime.isoformat() + + if len(task_info.enis) > 0: + data[self.ATTR_TASK_ENIS] = [self.encode_eni_info(eni_info) for eni_info in task_info.enis] + + return data + + def encode_eni_info(self, eni_info: EniInfo) -> dict: + data = dict() + data[self.ATTR_ENI_ID] = eni_info.eni_id + if eni_info.public_ipv4 is not None: + data[self.ATTR_ENI_PUBLIC_IPV4] = eni_info.public_ipv4 + + return data + + def decode(self, data: dict) -> DdbRecord: + key = DdbRecordKey.from_composite(data[self.PK_NAME]) + version = int(data[self.ATTR_VERSION]) + + ipv4s = set() + if self.ATTR_IPV4S in data: + ipv4s = {ip for ip in data[self.ATTR_IPV4S]} + + record_sets = set() + if self.ATTR_RECORD_SETS in data: + for record_set_data in data[self.ATTR_RECORD_SETS]: + record_set = self.decode_record_set(record_set_data) + record_sets.add(record_set) + + task_info = dict() + if self.ATTR_TASK_INFO in data: + task_info = { + k: self.decode_task_info(task_info_data) + for (k, task_info_data) in data[self.ATTR_TASK_INFO].items() + } + + record = DdbRecord(key=key, version=version, ipv4s=ipv4s, task_info=task_info, record_sets=record_sets) + + return record + + def decode_record_set(self, data) -> Route53RecordSetLocator: + hosted_zone_id = data[self.ATTR_RECORD_SET_ZONE] + record_name = data[self.ATTR_RECORD_SET_NAME] + + return Route53RecordSetLocator(hosted_zone_id=hosted_zone_id, record_name=record_name) + + def decode_task_info(self, data) -> TaskInfo: + task_arn = data[self.ATTR_TASK_ARN] + + stopped_datetime = None + if self.ATTR_TASK_STOPPED_DATETIME in data: + stopped_datetime = datetime.fromisoformat(data[self.ATTR_TASK_STOPPED_DATETIME]) + + enis = [] + if self.ATTR_TASK_ENIS in data: + enis = [self.decode_eni_info(eni_info_data) for eni_info_data in data[self.ATTR_TASK_ENIS]] + + return TaskInfo(task_arn=task_arn, stopped_datetime=stopped_datetime, enis=enis) + + def decode_eni_info(self, data) -> EniInfo: + eni_id = data[self.ATTR_ENI_ID] + + public_ipv4 = None + if self.ATTR_ENI_PUBLIC_IPV4 in data: + public_ipv4 = data[self.ATTR_ENI_PUBLIC_IPV4] + + return EniInfo(eni_id=eni_id, public_ipv4=public_ipv4) diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/records_table.py b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/records_table.py new file mode 100644 index 0000000000000..390ef0066dde5 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/records_table.py @@ -0,0 +1,215 @@ +import logging +import time +from dataclasses import dataclass, field +from datetime import datetime, timedelta +from typing import * + +from boto3.dynamodb.conditions import Attr +from botocore.exceptions import ClientError + +from lib.records import DdbRecord, DdbRecordKey, DdbRecordEncoding, TaskInfo +from lib.route53 import Route53RecordSetLocator + + +@dataclass +class RecordUpdate: + running_tasks: List[TaskInfo] = field(default_factory=list) + stopped_tasks: List[TaskInfo] = field(default_factory=list) + record_sets_added: List[Route53RecordSetLocator] = field(default_factory=list) + record_sets_removed: List[Route53RecordSetLocator] = field(default_factory=list) + + def current_record_set(self, record_set: Route53RecordSetLocator): + self.record_sets_added.append(record_set) + + def extra_record_set(self, record_set: Route53RecordSetLocator): + self.record_sets_removed.append(record_set) + + +class RecordsTableAccessor: + """ + Abstracts management of the task records to putting running and stopped tasks. + """ + + table_client: Any + ddb_record_encoding: DdbRecordEncoding + + # Max number of attempts at optimistic put_tasks + max_attempts = 50 + + # Amount of lag to add (if any) to simulate concurrent locking conflicts in + # lambda + optimistic_simulation_delay = 0 + + def __init__(self, table_client): + """ + Initializes a RecordsTable. Provide a boto3.resource + """ + self.table_client = table_client + self.ddb_record_encoding = DdbRecordEncoding() + + def delete(self, key: DdbRecordKey): + """ + Delete a record by record key. + """ + + logging.info(f'Deleting {key}') + self.table_client.delete_item(Key=self.ddb_record_encoding.get_identity(key)) + + def put_update(self, key: DdbRecordKey, update: RecordUpdate) -> DdbRecord: + """ + Retries putting tasks into the table record with optimistic locking. + """ + + for attempt in range(0, self.max_attempts): + try: + logging.info(f'Attempting to put the task optimistically (attempt {attempt+1})') + return self.put_update_optimistically(key=key, update=update) + except ClientError as e: + if e.response['Error']['Code'] == 'ConditionalCheckFailedException': + logging.info(f'Check condition was rejected') + continue + else: + raise + + # Ran out of retries!! + raise Exception('Exceeded maximum retries while optimistically putting changes') + + def get_record(self, key: DdbRecordKey) -> DdbRecord: + """ + Gets the record by key or provides a blank record. + """ + + # Search for the pertinent record + response = self.table_client.query(KeyConditionExpression=self.ddb_record_encoding.get_identity_expression(key)) + + if len(response['Items']) > 0: + # Decode a pre-existing record + logging.info(f'Found a pre-existing record') + return self.ddb_record_encoding.decode(response['Items'][0]) + else: + logging.info(f'Creating a new record') + # Create a new record + return DdbRecord(key=key) + + def put_update_optimistically(self, key: DdbRecordKey, update: RecordUpdate) -> DdbRecord: + """ + Optimistically record running and stopped tasks for this record. + """ + + ddb_record = self.get_record(key=key) + + # Add some lag (if any) to simulate concurrent locking conflicts in lambda + if self.optimistic_simulation_delay > 0: + time.sleep(self.optimistic_simulation_delay) + + # Update the record with the running and stopped task info + update_ddb_record(ddb_record=ddb_record, update=update) + + # Optimistic locking condition + optimistic_lock_condition = Attr(self.ddb_record_encoding.ATTR_VERSION).not_exists() \ + | Attr(self.ddb_record_encoding.ATTR_VERSION).eq(ddb_record.version) + + # Prepare the record for updating + ddb_record.version += 1 + item = self.ddb_record_encoding.encode(ddb_record) + + # Put it up + self.table_client.put_item(Item=item, ConditionExpression=optimistic_lock_condition) + + return ddb_record + + +def update_ddb_record(ddb_record: DdbRecord, update: RecordUpdate) -> DdbRecord: + """ + Updates a DynamoDB record with the list of running and stopped tasks. + """ + + # Add the record sets we want to add + for record_set in update.record_sets_added: + ddb_record.record_sets.add(record_set) + + # Remove the ones we want to remove + for record_set in update.record_sets_removed: + if record_set in ddb_record.record_sets: + ddb_record.record_sets.remove(record_set) + + # Add running task info to the record + for running_task in update.running_tasks: + # Don't add a task as running when it previously stopped (out-of-order receive) + if running_task.task_arn in ddb_record.task_info and ddb_record.task_info[running_task.task_arn].is_stopped(): + logging.info( + f'Received {running_task.task_arn} transition to RUNNING, but it was already stopped. Ignored.') + continue + + # Record info about the running task + ddb_record.task_info[running_task.task_arn] = running_task + + # Add all public ips to the public ip set + for eni in running_task.enis: + if eni.public_ipv4 is not None: + ddb_record.ipv4s.add(eni.public_ipv4) + + logging.info(f'Recorded {running_task.task_arn} as RUNNING.') + + # Remove stopped task ips from the record and set "stopped" markers on the + # stored task info. + for stopped_task in update.stopped_tasks: + # When the stopped task was previously represented in the task info list, + # then we fetch the old representation for its potential ip address info. + if stopped_task.task_arn in ddb_record.task_info: + task_arn = stopped_task.task_arn + stored_task = ddb_record.task_info[task_arn] + + # When the task is not yet marked as stopped, we need to mark it as such + # and remove its eni ips from the ip list. + if not stored_task.is_stopped(): + stored_task.set_stopped_marker() + + for eni in stored_task.enis: + if eni.public_ipv4 is not None and eni.public_ipv4 in ddb_record.ipv4s: + ddb_record.ipv4s.remove(eni.public_ipv4) + + logging.info(f'Recorded {task_arn} as STOPPED.') + + else: + # Stored task already marked as stopped, so the received task is a + # duplicate. Ignore it. + logging.info(f'Received {task_arn} which was already STOPPED. Ignoring.') + pass + + else: + # Stopped task isn't in the task list, so we've received an out-of-order + # STOPPED transition. We don't know this task, but we know that if we + # receive a running task in the future, that we don't want to accept it. + stopped_task.set_stopped_marker() + ddb_record.task_info[stopped_task.task_arn] = stopped_task + logging.info(f'Recorded {stopped_task.task_arn} as STOPPED even though we have never seen it.') + + # Expunge expired tasks. Use a copy of the dict items to avoid errors from the + # dictionary changing while iterating. + for (key, task) in list(ddb_record.task_info.items()): + if task_info_has_expired(task): + logging.info(f'Expunging {task.task_arn} as expired.') + del ddb_record.task_info[key] + + return ddb_record + + +# The the length of time that a task marked as stopped may continue to exist +# in the task info list before it is expunged. +STOPPED_MARKER_EXPIRATION = timedelta(minutes=30) + + +def task_info_has_expired(task_info: TaskInfo): + """ + Determine if this task info can be deleted from the DDB record. If the task + has stopped and the stopped marker expiration has elapsed, then we can + delete, otherwise the task info must be kept to filter out-of-order duplicate + RUNNING state transition events. + """ + + if not task_info.is_stopped(): + return False + + stopped_marker_age = datetime.utcnow() - task_info.stopped_datetime + return True if stopped_marker_age > STOPPED_MARKER_EXPIRATION else False diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/route53.py b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/route53.py new file mode 100644 index 0000000000000..df3b23c76a1fe --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/route53.py @@ -0,0 +1,167 @@ +from dataclasses import dataclass +import time +from typing import * +import logging + +from botocore.exceptions import ClientError + + +@dataclass +class Route53RecordSetLocator: + hosted_zone_id: str + record_name: str + + def __str__(self): + """String serialization for hashing and comparison""" + return f'{self.hosted_zone_id}#{self.record_name}' + + def __hash__(self): + """Unique hash for this object is based on its string serialization""" + return int.from_bytes(self.__str__().encode(), 'little') + + def __lt__(self, other): + """set() uses this""" + return self.__str__() < other.__str__() + + def get_dot_suffixed_name(self): + return self.record_name + '.' + + def matches_record_set(self, record_set): + return record_set['Name'] == self.get_dot_suffixed_name() + + def matches(self, record_set_locator): + return self.record_name == record_set_locator.record_name and self.hosted_zone_id == record_set_locator.hosted_zone_id + + +class Route53RecordSetAccessor: + route53_client: Any + ttl = 60 + + def __init__(self, route53_client: Any): + self.route53_client = route53_client + + def update(self, locator: Route53RecordSetLocator, ipv4s: Set[str] = None): + ipv4s = set() if ipv4s is None else ipv4s + + record_set, is_new = retry_with_backoff(lambda: self.get_record_set(locator)) + if is_new: + logging.info(f'Found a pre-existing record set: {record_set}') + else: + logging.info('Creating a new record set') + + if len(ipv4s) > 0: + record_set['ResourceRecords'] = map_ips_to_resource_records(ipv4s) + retry_with_backoff(lambda: self.request_upsert(locator, record_set)) + elif not is_new: + retry_with_backoff(lambda: self.request_delete(locator, record_set)) + else: + logging.info('Refusing to do anything with a new but empty recordset') + + def get_record_set(self, locator: Route53RecordSetLocator) -> Tuple[dict, bool]: + record_type = 'A' + result = self.route53_client.list_resource_record_sets(HostedZoneId=locator.hosted_zone_id, + StartRecordName=locator.record_name, + StartRecordType=record_type, MaxItems="1") + + logging.info(f'Query result: {result}') + existing_record_set = find_locator_record_set(locator, record_type, result['ResourceRecordSets']) + if existing_record_set: + return existing_record_set, False + else: + return { + 'Name': locator.get_dot_suffixed_name(), + 'Type': record_type, + 'ResourceRecords': [], + 'TTL': self.ttl + }, True + + def request_upsert(self, locator: Route53RecordSetLocator, record_set): + logging.info(f'Upserting record set {record_set}') + self.route53_client.change_resource_record_sets( + HostedZoneId=locator.hosted_zone_id, ChangeBatch={ + 'Comment': 'Automatic', + 'Changes': [{ + 'Action': 'UPSERT', + 'ResourceRecordSet': record_set + }] + }) + + def delete(self, locator: Route53RecordSetLocator): + """ + Delete the record. Returns true if it found and deleted the record. + Returns false if it didn't need to delete anything. + """ + + logging.info(f'Querying for {locator}') + record_set, is_new = retry_with_backoff(lambda: self.get_record_set(locator)) + + if not is_new: + logging.info(f'Found a record set') + retry_with_backoff(lambda: self.request_delete(locator, record_set)) + logging.info(f'Deleted record set {record_set}') + return True + + else: + logging.info(f'Did not find a record set, so no deletion needed') + return False + + def exists(self, locator: Route53RecordSetLocator): + """ + Returns true if the record exists. False otherwise. + """ + + _, is_new = retry_with_backoff(lambda: self.get_record_set(locator)) + + return not is_new + + def request_delete(self, locator: Route53RecordSetLocator, record_set): + logging.info(f'Deleting record set: {record_set}') + self.route53_client.change_resource_record_sets( + HostedZoneId=locator.hosted_zone_id, ChangeBatch={ + 'Comment': 'Automatic', + 'Changes': [{ + 'Action': 'DELETE', + 'ResourceRecordSet': record_set, + }] + }) + + +def exponential_backoff(attempt: int): + return 2**attempt + + +def retry_with_backoff(call: Callable, attempts=5, backoff=exponential_backoff): + for attempt in range(0, attempts): + try: + return call() + + except ClientError as e: + if e.response['Error']['Code'] == 'Throttling': + backoff_seconds = backoff(attempt) + logging.info(f'Attempt {attempt+1} throttled. Backing off for {backoff_seconds}.') + time.sleep(backoff_seconds) + continue + + if e.response['Error']['Code'] == 'PriorRequestNotComplete': + backoff_seconds = backoff(attempt) + logging.info( + f'Attempt {attempt+1} discovered the prior request is not yet complete. Backing off for {backoff_seconds}.' + ) + time.sleep(backoff_seconds) + continue + + raise + + +def map_ips_to_resource_records(ips: Set[str]): + # Take up to the first 400 ips after sorting as the max recordset record quota is 400 + ips_sorted_limited = sorted(ips)[0:400] + return [{'Value': ip} for ip in ips_sorted_limited] + + +def find_locator_record_set(locator: Route53RecordSetLocator, record_type: str, record_sets: list): + for record_set in record_sets: + if locator.matches_record_set(record_set) and record_set['Type'] == record_type: + return record_set + + return None diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/running_task_collector.py b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/running_task_collector.py new file mode 100644 index 0000000000000..a7034d81e5e53 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/lib/running_task_collector.py @@ -0,0 +1,57 @@ +import logging +from typing import * + +from lib.records import DdbRecord, EniInfo, TaskInfo + + +class RunningTaskCollector: + """ + Collects information about running tasks. After collecting all task info, + when `fill_eni_info_from_eni_query()` is called, the collector queries + for the ip addresses of the tasks and fills in the appropriate records. + """ + + ec2_client: Any + tasks: List[TaskInfo] + enis_by_id: Dict[str, EniInfo] + + def __init__(self, ec2_client, reference_record: DdbRecord): + self.ec2_client = ec2_client + self.tasks = list() + self.enis_by_id = dict() + self.reference_record = reference_record + + def collect(self, task_info): + # Check to see if the task we've received is already stopped. If so, + # we refuse to collect it on the basis that we'll just get an eni + # doesn't exist error anyway. + if self.reference_record.task_is_stopped(task_info): + logging.info(f'Refusing to collect {task_info.task_arn} as it has already been deleted') + return + + # Append the task info to the master list + self.tasks.append(task_info) + + # Collect enis indexed by their ids + for eni in task_info.enis: + self.enis_by_id[eni.eni_id] = eni + + def fill_eni_info_from_eni_query(self): + for eni_description in self.describe_enis(): + eni_id = eni_description['NetworkInterfaceId'] + + if 'Association' in eni_description: + public_ipv4 = eni_description['Association']['PublicIp'] + if public_ipv4 and eni_id in self.enis_by_id: + self.enis_by_id[eni_id].public_ipv4 = public_ipv4 + + def describe_enis(self): + paginator = self.ec2_client.get_paginator('describe_network_interfaces') + + eni_ids = list(self.enis_by_id.keys()) + for page in paginator.paginate(NetworkInterfaceIds=eni_ids): + for eni in page['NetworkInterfaces']: + yield eni + + def get_ips(self): + return [eni.public_ipv4 for eni in self.enis_by_id.values()] diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/run_test.py b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/run_test.py new file mode 100644 index 0000000000000..7efd5dc08534d --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/run_test.py @@ -0,0 +1,5 @@ +import unittest + +if __name__ == "__main__": + test_suite = unittest.defaultTestLoader.discover('.') + unittest.TextTestRunner().run(test_suite) diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/__init__.py b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/__init__.py new file mode 100644 index 0000000000000..539bac0f9e2aa --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/__init__.py @@ -0,0 +1 @@ +# Keep this file so that python -m unittest discover can find these tests. diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/fixtures/ddb-record.json b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/fixtures/ddb-record.json new file mode 100644 index 0000000000000..f62cf391abf39 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/fixtures/ddb-record.json @@ -0,0 +1,43 @@ +{ + "cluster_service": "CLUSTER_ARN#SERVICE", + "ipv4s": [ + "1.1.2.1", + "1.1.2.2" + ], + "task_info": { + "TASK1_ARN": { + "enis": [ + { + "eni_id": "TASK1_ENI1_ID", + "public_ipv4": "1.1.1.1" + } + ], + "stopped_datetime": "2020-10-04T23:47:36.322158", + "task_arn": "TASK1_ARN" + }, + "TASK2_ARN": { + "enis": [ + { + "eni_id": "TASK2_ENI1_ID", + "public_ipv4": "1.1.2.1" + }, + { + "eni_id": "TASK2_ENI2_ID", + "public_ipv4": "1.1.2.2" + } + ], + "task_arn": "TASK2_ARN" + } + }, + "record_sets": [ + { + "hosted_zone_id": "ABCD", + "record_name": "test-record.myexample.com" + }, + { + "hosted_zone_id": "ABCD", + "record_name": "test-record2.myexample.com" + } + ], + "version": 12 +} diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/fixtures/eni_description.json b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/fixtures/eni_description.json new file mode 100644 index 0000000000000..9e790e455fb99 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/fixtures/eni_description.json @@ -0,0 +1,49 @@ +{ + "Association": { + "IpOwnerId": "amazon", + "PublicDnsName": "example.com", + "PublicIp": "1.2.3.4" + }, + "Attachment": { + "AttachTime": "2020-10-03T23:42:51+00:00", + "AttachmentId": "eni-attach-0704671692ecf366b", + "DeleteOnTermination": false, + "DeviceIndex": 1, + "InstanceOwnerId": "000000000", + "Status": "attached" + }, + "AvailabilityZone": "test-region-1a", + "Description": "arn:aws:ecs:test-region-1:0000000000:attachment/20d24cce-3d50-493d-b890-32d4f11859f4", + "Groups": [ + { + "GroupName": "aws-ecs-integ-nameserviceSecurityGroup33F4662C-16PM465FOR8L1", + "GroupId": "sg-0b83d6ad2edd8e940" + } + ], + "InterfaceType": "interface", + "Ipv6Addresses": [], + "MacAddress": "02:a4:cb:74:0f:a8", + "NetworkInterfaceId": "eni-abcd", + "OwnerId": "0000000000", + "PrivateDnsName": "ip-10-0-0-19.test-region-1.compute.internal", + "PrivateIpAddress": "10.0.0.19", + "PrivateIpAddresses": [ + { + "Association": { + "IpOwnerId": "amazon", + "PublicDnsName": "example.com", + "PublicIp": "1.2.3.4" + }, + "Primary": true, + "PrivateDnsName": "ip-10-0-0-19.test-region-1.compute.internal", + "PrivateIpAddress": "10.0.0.19" + } + ], + "RequesterId": "0000000000", + "RequesterManaged": true, + "SourceDestCheck": true, + "Status": "in-use", + "SubnetId": "subnet-036b0d1413bb6bd2c", + "TagSet": [], + "VpcId": "vpc-0e63014e689c4b14f" +} diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/fixtures/task_description.json b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/fixtures/task_description.json new file mode 100644 index 0000000000000..7bf19d91893a2 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/fixtures/task_description.json @@ -0,0 +1,77 @@ +{ + "attachments": [ + { + "id": "", + "type": "eni", + "status": "DELETED", + "details": [ + { + "name": "subnetId", + "value": "subnet-" + }, + { + "name": "networkInterfaceId", + "value": "eni-abcd" + }, + { + "name": "macAddress", + "value": "" + }, + { + "name": "privateIPv4Address", + "value": "10.0.0.52" + } + ] + } + ], + "availabilityZone": "test-region-1a", + "clusterArn": "arn:aws:ecs:test-region-1::cluster/aws-ecs-integ-productionenvironmentclusterC6599D2D-U7W8a2P2HPhC", + "containers": [ + { + "containerArn": "arn:aws:ecs:test-region-1::container/ff3b49f4-5eea-46cd-99c6-069584b3fb8e", + "exitCode": 1, + "lastStatus": "STOPPED", + "name": "app", + "image": "nathanpeck/name", + "runtimeId": "", + "taskArn": "arn:aws:ecs:test-region-1::task/12345678-1234-1234-1234-1234567890AB", + "networkInterfaces": [ + { + "attachmentId": "323eb03f-dedf-44b6-aa5f-d9d7f7b37714", + "privateIpv4Address": "10.0.0.52" + } + ], + "cpu": "256", + "memory": "512" + } + ], + "createdAt": "2020-10-03T22:31:35.117Z", + "launchType": "FARGATE", + "cpu": "256", + "memory": "512", + "desiredStatus": "STOPPED", + "group": "service:aws-ecs-integ-nameserviceService8015C8D6-I4TwUFv4xk2o", + "lastStatus": "STOPPED", + "overrides": { + "containerOverrides": [ + { + "name": "app" + } + ] + }, + "connectivity": "CONNECTED", + "connectivityAt": "2020-10-03T22:31:43.32Z", + "pullStartedAt": "2020-10-03T22:31:46.764Z", + "startedAt": "2020-10-03T22:31:54.764Z", + "startedBy": "ecs-svc/7073659324082574009", + "stoppingAt": "2020-10-03T22:43:06.753Z", + "stoppedAt": "2020-10-03T22:43:31.542Z", + "pullStoppedAt": "2020-10-03T22:31:53.764Z", + "executionStoppedAt": "2020-10-03T22:43:08Z", + "stoppedReason": "Scaling activity initiated by (deployment ecs-svc/7073659324082574009)", + "updatedAt": "2020-10-03T22:43:31.542Z", + "taskArn": "arn:aws:ecs:test-region-1::task/12345678-1234-1234-1234-1234567890AB", + "taskDefinitionArn": "arn:aws:ecs:test-region-1::task-definition/awsecsintegnametaskdefinition0EA6A1A0:3", + "version": 7, + "platformVersion": "1.3.0" +} diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_cleanup_resource_handler.py b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_cleanup_resource_handler.py new file mode 100644 index 0000000000000..c5ec1d0cf61ec --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_cleanup_resource_handler.py @@ -0,0 +1,46 @@ +import unittest +import unittest.mock as mock + +from lib.cleanup_resource_handler import CleanupResourceHandler +from lib.route53 import Route53RecordSetLocator + + +class TestCleanupResourceHandler(unittest.TestCase): + def test_handler_rejects_invalid_properties(self): + handler = CleanupResourceHandler(route53_client=mock.Mock()) + with self.assertRaises(Exception): + handler.handle_event({'RequestType': 'Delete', 'ResourceProperties': {'Invalid': 'Invalid'}}, {}) + + def test_handling_delete(self): + handler = CleanupResourceHandler(route53_client=mock.Mock(), monitor_interval=0) + record_set_accessor = mock.Mock() + record_set_accessor.delete = mock.Mock(return_value=True) # True = Deleted + + exists_count = 0 + + def exists_side_effect(*args): + nonlocal exists_count + exists_count += 1 + return True if exists_count < 3 else False + + record_set_accessor.exists = mock.Mock(side_effect=exists_side_effect) + + handler.record_set_accessor = record_set_accessor + + event = { + 'RequestType': 'Delete', + 'ResourceProperties': { + 'ServiceToken': 'Something', + 'HostedZoneId': 'ZONE', + 'RecordName': 'something.mydomain.com' + } + } + + # WHEN + handler.handle_event(event, {}) + + # THEN + expected_locator = Route53RecordSetLocator(hosted_zone_id='ZONE', record_name='something.mydomain.com') + record_set_accessor.delete.assert_called_with(locator=expected_locator) + record_set_accessor.exists.assert_called() + self.assertEqual(record_set_accessor.exists.call_count, 3) diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_events.py b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_events.py new file mode 100644 index 0000000000000..a616bd7999309 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_events.py @@ -0,0 +1,21 @@ +import json +import os +import unittest + +from lib.events import extract_event_task_info + +THIS_DIR = os.path.abspath(os.path.dirname(__file__)) +with open(os.path.join(THIS_DIR, 'fixtures', 'task_description.json')) as f: + TASK_DESCRIPTION = json.loads(f.read()) + + +class TestEvents(unittest.TestCase): + def test_extract_event_task_info(self): + task_info = extract_event_task_info(TASK_DESCRIPTION) + + self.assertEqual(task_info.task_arn, 'arn:aws:ecs:test-region-1::task/12345678-1234-1234-1234-1234567890AB') + self.assertTrue(not task_info.is_stopped()) + + self.assertEqual(len(task_info.enis), 1) + self.assertEqual(task_info.enis[0].eni_id, 'eni-abcd') + self.assertEqual(task_info.enis[0].public_ipv4, None) diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_queue_handler.py b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_queue_handler.py new file mode 100644 index 0000000000000..91477451cf72e --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_queue_handler.py @@ -0,0 +1,29 @@ +import unittest +import unittest.mock as mock + +from lib.queue_handler import QueueHandler + + +class TestQueueHandler(unittest.TestCase): + def test_queue_handler_sets_up(self): + environ = { + 'HOSTED_ZONE_ID': 'HOSTED_ZONE_ID', + 'RECORD_NAME': 'RECORD_NAME', + 'RECORDS_TABLE': 'RECORDS_TABLE', + 'CLUSTER_ARN': 'CLUSTER_ARN', + 'SERVICE_NAME': 'SERVICE_NAME', + } + + ec2_client = mock.Mock() + route53_client = mock.Mock() + dynamodb_resource = mock.Mock() + + # WHEN + + handler = QueueHandler(ec2_client=ec2_client, route53_client=route53_client, + dynamodb_resource=dynamodb_resource, environ=environ) + + # THEN + dynamodb_resource.Table.called_width('RECORDS_TABLE') + + pass diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_records.py b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_records.py new file mode 100644 index 0000000000000..cb2e1e45f6ed4 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_records.py @@ -0,0 +1,46 @@ +import json +import os +import unittest +from datetime import datetime + +from lib.records import DdbRecordEncoding, TaskInfo, EniInfo + +THIS_DIR = os.path.abspath(os.path.dirname(__file__)) +with open(os.path.join(THIS_DIR, 'fixtures', 'ddb-record.json')) as f: + DDB_RECORD_ENCODED = json.loads(f.read()) + + +class TestRecords(unittest.TestCase): + def test_task_info_stopped_marker(self): + task_info = TaskInfo(task_arn='a', enis=[]) + task_info.set_stopped_marker() + self.assertTrue(task_info.is_stopped()) + + def test_ddb_record_encoding(self): + # GIVEN + ddb_record_encoding = DdbRecordEncoding() + + # WHEN + ddb_record = ddb_record_encoding.decode(DDB_RECORD_ENCODED) + ddb_record_reencoded = ddb_record_encoding.encode(ddb_record) + + # THEN + self.assertEqual(ddb_record.key.cluster_arn, 'CLUSTER_ARN') + self.assertEqual(ddb_record.key.service_name, 'SERVICE') + self.assertEqual(sorted(ddb_record.ipv4s), ['1.1.2.1', '1.1.2.2']) + self.assertEqual( + ddb_record.task_info['TASK1_ARN'], + TaskInfo(task_arn='TASK1_ARN', stopped_datetime=datetime(2020, 10, 4, 23, 47, 36, 322158), enis=[ + EniInfo(eni_id='TASK1_ENI1_ID', public_ipv4='1.1.1.1'), + ])) + self.assertEqual( + ddb_record.task_info['TASK2_ARN'], + TaskInfo( + task_arn='TASK2_ARN', enis=[ + EniInfo(eni_id='TASK2_ENI1_ID', public_ipv4='1.1.2.1'), + EniInfo(eni_id='TASK2_ENI2_ID', public_ipv4='1.1.2.2'), + ])) + self.assertEqual(len(ddb_record.record_sets), 2) + + self.maxDiff = 9999999 + self.assertEqual(ddb_record_reencoded, DDB_RECORD_ENCODED) diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_records_table.py b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_records_table.py new file mode 100644 index 0000000000000..3429c152a6a35 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_records_table.py @@ -0,0 +1,188 @@ +import json +import os +import unittest +import unittest.mock as mock + +from boto3.dynamodb.conditions import ConditionExpressionBuilder +from botocore.exceptions import ClientError + +from lib.records import DdbRecordKey, TaskInfo, EniInfo, DdbRecord +from lib.records_table import RecordsTableAccessor, update_ddb_record, RecordUpdate +from lib.route53 import Route53RecordSetLocator + +THIS_DIR = os.path.abspath(os.path.dirname(__file__)) +with open(os.path.join(THIS_DIR, 'fixtures', 'ddb-record.json')) as f: + DDB_RECORD_ENCODED = json.loads(f.read()) + + +class TestRecordsTable(unittest.TestCase): + def test_put_tasks_creates_with_optimistic_lock(self): + # GIVEN + table_client = mock.Mock() + table_client.query = mock.Mock(return_value={'Items': []}) + + key = DdbRecordKey(cluster_arn='a', service_name='b') + records_table = RecordsTableAccessor(table_client=table_client) + + running = [TaskInfo(task_arn='TASK1_ARN', enis=[ + EniInfo(eni_id='TASK1_ENI1_ID', public_ipv4='1.1.1.1'), + ])] + + # WHEN + records_table.put_update_optimistically(key=key, update=RecordUpdate(running_tasks=running)) + + # THEN + table_client.put_item.assert_called() + item = table_client.put_item.call_args.kwargs['Item'] + self.assertEqual(item['version'], 1) + + condition_expression = table_client.put_item.call_args.kwargs['ConditionExpression'] + expr, atts, vals = ConditionExpressionBuilder().build_expression(condition_expression) + self.assertEqual(expr, '(attribute_not_exists(#n0) OR #n1 = :v0)') + self.assertEqual(atts, {'#n0': 'version', '#n1': 'version'}) + self.assertEqual(vals, {':v0': 0}) + + def test_put_tasks_updates_with_optimistic_lock(self): + # GIVEN + table_client = mock.Mock() + table_client.query = mock.Mock(return_value={'Items': [dict(DDB_RECORD_ENCODED)]}) + + key = DdbRecordKey(cluster_arn='FOO', service_name='test.myexample.com') + records_table = RecordsTableAccessor(table_client=table_client) + + running = [TaskInfo(task_arn='TASK1_ARN', enis=[ + EniInfo(eni_id='TASK1_ENI1_ID', public_ipv4='1.1.1.1'), + ])] + + # WHEN + records_table.put_update_optimistically(key=key, update=RecordUpdate(running_tasks=running)) + + # THEN + condition_expression = table_client.put_item.call_args.kwargs['ConditionExpression'] + expr, atts, vals = ConditionExpressionBuilder().build_expression(condition_expression) + self.assertEqual(vals, {':v0': 12}) + + def test_put_tasks_retries_optimistically(self): + # GIVEN + table_client = mock.Mock() + table_client.query = mock.Mock(return_value={'Items': []}) + table_client.put_item = mock.Mock( + side_effect=ClientError({'Error': { + 'Code': 'ConditionalCheckFailedException' + }}, 'PutItem')) + + records_table = RecordsTableAccessor(table_client=table_client) + key = DdbRecordKey(cluster_arn='a', service_name='b') + + # WHEN + with self.assertRaisesRegex(Exception, r'Exceeded maximum retries'): + records_table.put_update(key=key, update=RecordUpdate()) + + # THEN + self.assertEqual(table_client.query.call_count, records_table.max_attempts) + self.assertEqual(table_client.put_item.call_count, records_table.max_attempts) + + def test_put_tasks_raises_other_errors(self): + # GIVEN + table_client = mock.Mock() + table_client.query = mock.Mock(return_value={'Items': []}) + table_client.put_item = mock.Mock(side_effect=ClientError({'Error': {'Code': 'SomethingElse'}}, 'PutItem')) + + records_table = RecordsTableAccessor(table_client=table_client) + key = DdbRecordKey(cluster_arn='a', service_name='b') + + # WHEN + with self.assertRaisesRegex(Exception, r'SomethingElse'): + records_table.put_update(key=key, update=RecordUpdate()) + + # THEN + self.assertEqual(table_client.query.call_count, 1) + self.assertEqual(table_client.put_item.call_count, 1) + + def test_delete(self): + # GIVEN + table_client = mock.Mock() + key = DdbRecordKey(cluster_arn='a', service_name='b') + records_table = RecordsTableAccessor(table_client=table_client) + + # WHEN + records_table.delete(key) + + # THEN + table_client.delete_item.called_with(Key='a#b') + + def test_update_ddb_record(self): + # GIVEN + ddb_record = DdbRecord(key=DdbRecordKey(cluster_arn='a', service_name='b')) + + # TASK1->RUNNING, TASK2->RUNNING + ord1_running = [ + TaskInfo(task_arn='TASK1_ARN', enis=[ + EniInfo(eni_id='TASK1_ENI1_ID', public_ipv4='1.1.1.1'), + ]), + TaskInfo(task_arn='TASK2_ARN', enis=[ + EniInfo(eni_id='TASK2_ENI1_ID', public_ipv4='1.1.2.1'), + ]), + ] + # TASK3->STOPPED (out of order) + ord1_stopped = [ + TaskInfo(task_arn='TASK3_ARN', enis=[ + EniInfo(eni_id='TASK3_ENI1_ID'), + ]), + ] + + # TASK1->STOPPED, TASK3->STOPPED (duplicate) + ord2_stopped = [ + # Expected TASK1 transition to STOPPED + TaskInfo(task_arn='TASK1_ARN', enis=[ + EniInfo(eni_id='TASK1_ENI1_ID'), + ]), + # Duplicate TASK3 transition to STOPPED + TaskInfo(task_arn='TASK3_ARN', enis=[ + EniInfo(eni_id='TASK3_ENI1_ID'), + ]), + ] + + # TASK1->RUNNING (out of order), TASK3->RUNNING (out of order) + ord3_running = [ + TaskInfo(task_arn='TASK1_ARN', enis=[ + EniInfo(eni_id='TASK1_ENI1_ID', public_ipv4='1.1.1.1'), + ]), + TaskInfo(task_arn='TASK3_ARN', enis=[ + EniInfo(eni_id='TASK3_ENI1_ID', public_ipv4='1.1.3.1'), + ]), + ] + + # WHEN + update_ddb_record(ddb_record, RecordUpdate(running_tasks=ord1_running, stopped_tasks=ord1_stopped)) + update_ddb_record(ddb_record, RecordUpdate(stopped_tasks=ord2_stopped)) + update_ddb_record(ddb_record, RecordUpdate(running_tasks=ord3_running)) + + # THEN + self.assertEqual(len(ddb_record.task_info), 3, msg='expected 3 task infos') + self.assertTrue(ddb_record.task_info['TASK1_ARN'].is_stopped()) + self.assertTrue(not ddb_record.task_info['TASK2_ARN'].is_stopped()) + self.assertTrue(ddb_record.task_info['TASK3_ARN'].is_stopped()) + + self.assertFalse('1.1.1.1' in ddb_record.ipv4s, + msg='ord3_running should have been ignored because the task previously stopped') + self.assertEqual(sorted(ddb_record.ipv4s), ['1.1.2.1']) + + def test_update_record_sets(self): + # GIVEN + ddb_record = DdbRecord(key=DdbRecordKey(cluster_arn='a', service_name='b')) + ord1 = [ + Route53RecordSetLocator('a', 'b'), + Route53RecordSetLocator('a', 'c'), + ] + ord2 = [ + Route53RecordSetLocator('a', 'b'), + ] + + # WHEN + update_ddb_record(ddb_record, RecordUpdate(record_sets_added=ord1)) + update_ddb_record(ddb_record, RecordUpdate(record_sets_removed=ord2)) + + # THEN + self.assertEqual(len(ddb_record.record_sets), 1) + self.assertTrue(Route53RecordSetLocator('a', 'c') in ddb_record.record_sets) \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_route53.py b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_route53.py new file mode 100644 index 0000000000000..a77093dcf484d --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_route53.py @@ -0,0 +1,281 @@ +import unittest +import unittest.mock as mock + +from botocore.exceptions import ClientError + +from lib.route53 import Route53RecordSetLocator, Route53RecordSetAccessor, exponential_backoff, retry_with_backoff, \ + map_ips_to_resource_records, find_locator_record_set + + +class TestRoute53(unittest.TestCase): + def get_route53_client_mock(self): + route53_client = mock.Mock() + record_set_value = None + + route53_client.list_resource_record_sets = mock.Mock( + side_effect=lambda **kwargs: + {'ResourceRecordSets': [record_set_value] if record_set_value is not None else []}) + + def change_resource_record_sets(HostedZoneId, ChangeBatch): + nonlocal record_set_value + change = ChangeBatch['Changes'][0] + change_action = change['Action'] + + if change_action == 'UPSERT': + record_set_value = change['ResourceRecordSet'] + elif change_action == 'DELETE': + record_set_value = None + + route53_client.change_resource_record_sets = mock.Mock(side_effect=change_resource_record_sets) + + return route53_client + + def test_creating_records(self): + # GIVEN + route53_client = self.get_route53_client_mock() + locator = Route53RecordSetLocator(hosted_zone_id='foo', record_name='foo.myexample.com') + merger = Route53RecordSetAccessor(route53_client) + + # WHEN + merger.update(locator, ipv4s={'1.1.1.1'}) + + # THEN + route53_client.change_resource_record_sets.assert_called_with( + HostedZoneId='foo', ChangeBatch={ + 'Comment': + 'Automatic', + 'Changes': [{ + 'Action': 'UPSERT', + 'ResourceRecordSet': { + 'Name': 'foo.myexample.com.', + 'Type': 'A', + 'ResourceRecords': [ + { + 'Value': '1.1.1.1' + }, + ], + 'TTL': 60 + } + }] + }) + + def test_creating_empty_records(self): + # GIVEN + route53_client = self.get_route53_client_mock() + locator = Route53RecordSetLocator(hosted_zone_id='foo', record_name='foo.myexample.com') + merger = Route53RecordSetAccessor(route53_client) + + # WHEN + merger.update(locator, ipv4s=set()) + + # THEN + route53_client.change_resource_record_sets.assert_not_called() + + def test_deleting_records(self): + # GIVEN + route53_client = self.get_route53_client_mock() + locator = Route53RecordSetLocator(hosted_zone_id='foo', record_name='foo.myexample.com') + record_set = Route53RecordSetAccessor(route53_client) + + # Set up the mock with a record. + record_set.update(locator, ipv4s={'1.1.1.1'}) + + # WHEN + record_set.update(locator, ipv4s=set()) + + # THEN + route53_client.change_resource_record_sets.assert_called_with( + HostedZoneId='foo', ChangeBatch={ + 'Comment': + 'Automatic', + 'Changes': [{ + 'Action': 'DELETE', + 'ResourceRecordSet': { + 'Name': 'foo.myexample.com.', + 'Type': 'A', + 'ResourceRecords': [ + { + 'Value': '1.1.1.1' + }, + ], + 'TTL': 60 + } + }] + }) + + def test_deleting_records_with_frontend(self): + # GIVEN + route53_client = self.get_route53_client_mock() + locator = Route53RecordSetLocator(hosted_zone_id='foo', record_name='foo.myexample.com') + record_set = Route53RecordSetAccessor(route53_client) + + # Set up the mock with a record. + record_set.update(locator, ipv4s={'1.1.1.1'}) + + # WHEN + record_set.delete(locator) + + # THEN + self.assertEqual(route53_client.list_resource_record_sets.call_count, 2) + route53_client.change_resource_record_sets.assert_called_with( + HostedZoneId='foo', ChangeBatch={ + 'Comment': + 'Automatic', + 'Changes': [{ + 'Action': 'DELETE', + 'ResourceRecordSet': { + 'Name': 'foo.myexample.com.', + 'Type': 'A', + 'ResourceRecords': [ + { + 'Value': '1.1.1.1' + }, + ], + 'TTL': 60 + } + }] + }) + + def test_deleting_no_records_with_frontend(self): + # GIVEN + route53_client = self.get_route53_client_mock() + locator = Route53RecordSetLocator(hosted_zone_id='foo', record_name='foo.myexample.com') + record_set = Route53RecordSetAccessor(route53_client) + + # WHEN + record_set.delete(locator) + + # THEN + self.assertEqual(route53_client.list_resource_record_sets.call_count, 1) + route53_client.change_resource_record_sets.assert_not_called() + + def test_checks_not_exists(self): + # GIVEN + route53_client = self.get_route53_client_mock() + locator = Route53RecordSetLocator(hosted_zone_id='foo', record_name='foo.myexample.com') + record_set = Route53RecordSetAccessor(route53_client) + + # WHEN + exists = record_set.exists(locator) + + # THEN + self.assertTrue(not exists) + + def test_checks_exists(self): + # GIVEN + route53_client = self.get_route53_client_mock() + locator = Route53RecordSetLocator(hosted_zone_id='foo', record_name='foo.myexample.com') + record_set = Route53RecordSetAccessor(route53_client) + + # WHEN + record_set.update(locator, ipv4s={'1.1.1.1'}) + exists = record_set.exists(locator) + + # THEN + self.assertTrue(exists) + + def test_exponential_backoff(self): + self.assertEqual(exponential_backoff(0), 1) + self.assertEqual(exponential_backoff(1), 2) + self.assertEqual(exponential_backoff(2), 4) + + def test_retry_with_backoff_throttling(self): + # GIVEN + call = mock.Mock(side_effect=ClientError(error_response={'Error': { + 'Code': 'Throttling' + }}, operation_name='any')) + + # WHEN + retry_with_backoff(call, attempts=5, backoff=lambda x: 0) + + # THEN + self.assertEqual(call.call_count, 5) + + def test_retry_with_backoff_prior_request_not_complete(self): + # GIVEN + call = mock.Mock(side_effect=ClientError(error_response={'Error': { + 'Code': 'PriorRequestNotComplete' + }}, operation_name='any')) + + # WHEN + retry_with_backoff(call, attempts=5, backoff=lambda x: 0) + + # THEN + self.assertEqual(call.call_count, 5) + + def test_retry_with_backoff_other_client_errors(self): + # GIVEN + call = mock.Mock(side_effect=ClientError(error_response={'Error': { + 'Code': 'SomethingElse' + }}, operation_name='any')) + + # WHEN/THEN + with self.assertRaisesRegex(ClientError, r'SomethingElse'): + retry_with_backoff(call, attempts=5, backoff=lambda x: 0) + self.assertEqual(call.call_count, 1) + + def test_retry_with_backoff_other_errors(self): + # GIVEN + call = mock.Mock(side_effect=Exception('very good reason')) + + # WHEN/THEN + with self.assertRaisesRegex(Exception, r'very good reason'): + retry_with_backoff(call, attempts=5, backoff=lambda x: 0) + self.assertEqual(call.call_count, 1) + + def test_map_ips_to_resource_records(self): + # GIVEN + ips = {'1.1.1.1', '1.1.1.2'} + + # WHEN + output = map_ips_to_resource_records(ips) + + # THEN + self.assertEqual(output, [{'Value': '1.1.1.1'}, {'Value': '1.1.1.2'}]) + + def test_map_ips_to_resource_records_truncates_to_400(self): + # GIVEN + ips = {f'1.1.{a}.{b}' for a in range(1, 255) for b in range(1, 255)} + + # WHEN + output = map_ips_to_resource_records(ips) + + # THEN + self.assertEqual(len(output), 400) + + def test_find_locator_record_set_ignores_irrelevant_records(self): + # GIVEN + locator = Route53RecordSetLocator(hosted_zone_id='foo', record_name='test-record.myexample.com') + record_sets = [{ + 'Name': 'u-record.myexample.com.', + 'Type': 'A', + 'TTL': 60, + 'ResourceRecords': [{ + 'Value': '1.1.1.1' + }] + }] + + # WHEN + result = find_locator_record_set(locator, 'A', record_sets) + + # THEN + self.assertIsNone(result) + + def test_find_locator_record_set_finds_it(self): + # GIVEN + locator = Route53RecordSetLocator(hosted_zone_id='foo', record_name='test-record.myexample.com') + matching_record = { + 'Name': 'test-record.myexample.com.', + 'Type': 'A', + 'TTL': 60, + 'ResourceRecords': [{ + 'Value': '1.1.1.1' + }] + } + record_sets = [matching_record] + + # WHEN + result = find_locator_record_set(locator, 'A', record_sets) + + # THEN + self.assertEqual(result, matching_record) diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_tasks.py b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_tasks.py new file mode 100644 index 0000000000000..b4b491750bcce --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/test/test_tasks.py @@ -0,0 +1,55 @@ +import json +import os +import unittest +import unittest.mock as mock +from datetime import datetime + +from lib.events import extract_event_task_info +from lib.records import TaskInfo, DdbRecord, DdbRecordKey +from lib.running_task_collector import RunningTaskCollector + +THIS_DIR = os.path.abspath(os.path.dirname(__file__)) +with open(os.path.join(THIS_DIR, 'fixtures', 'task_description.json')) as f: + TASK_DESCRIPTION = json.loads(f.read()) +with open(os.path.join(THIS_DIR, 'fixtures', 'eni_description.json')) as f: + ENI_DESCRIPTION = json.loads(f.read()) + + +class TestRunningTasksCollector(unittest.TestCase): + def test_task_collector(self): + # GIVEN + ec2_client = mock.Mock() + paginator = mock.Mock() + paginator.paginate = mock.Mock(return_value=[{'NetworkInterfaces': [ENI_DESCRIPTION]}]) + ec2_client.get_paginator = mock.Mock(return_value=paginator) + + reference_record = DdbRecord(key=DdbRecordKey(cluster_arn="A", service_name="B")) + collector = RunningTaskCollector(ec2_client=ec2_client, reference_record=reference_record) + + # WHEN + task_info = extract_event_task_info(TASK_DESCRIPTION) + collector.collect(task_info) + collector.fill_eni_info_from_eni_query() + + # THEN + paginator.paginate.assert_called_with(NetworkInterfaceIds=['eni-abcd']) + self.assertTrue('1.2.3.4' in collector.get_ips()) + + def test_task_collector_doesnt_collect_stopped_tasks(self): + # GIVEN + ec2_client = mock.Mock() + paginator = mock.Mock() + paginator.paginate = mock.Mock(return_value=[{'NetworkInterfaces': [ENI_DESCRIPTION]}]) + ec2_client.get_paginator = mock.Mock(return_value=paginator) + + task_arn = TASK_DESCRIPTION['taskArn'] + task_info = {task_arn: TaskInfo(task_arn=task_arn, enis=[], stopped_datetime=datetime.utcnow())} + reference_record = DdbRecord(key=DdbRecordKey(cluster_arn="A", service_name="B"), task_info=task_info) + collector = RunningTaskCollector(ec2_client=ec2_client, reference_record=reference_record) + + # WHEN + task_info = extract_event_task_info(TASK_DESCRIPTION) + collector.collect(task_info) + + # THEN + self.assertEqual(len(collector.tasks), 0) diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.dad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981/aws-sdk-patch/opensearch-2021-01-01.paginators.json b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.dad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981/aws-sdk-patch/opensearch-2021-01-01.paginators.json new file mode 100644 index 0000000000000..ca82b13bee5a0 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.dad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981/aws-sdk-patch/opensearch-2021-01-01.paginators.json @@ -0,0 +1,64 @@ +{ + "pagination": { + "DescribeDomainAutoTunes": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults" + }, + "DescribeInboundConnections": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults" + }, + "DescribeOutboundConnections": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults" + }, + "DescribePackages": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults" + }, + "DescribeReservedInstanceOfferings": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults" + }, + "DescribeReservedInstances": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults" + }, + "GetPackageVersionHistory": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults" + }, + "GetUpgradeHistory": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults" + }, + "ListDomainsForPackage": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults" + }, + "ListInstanceTypeDetails": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults" + }, + "ListPackagesForDomain": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults" + }, + "ListVersions": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults" + } + } +} diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.dad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981/aws-sdk-patch/opensearch-2021-01-01.service.json b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.dad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981/aws-sdk-patch/opensearch-2021-01-01.service.json new file mode 100644 index 0000000000000..a60efd0d1fc12 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/asset.dad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981/aws-sdk-patch/opensearch-2021-01-01.service.json @@ -0,0 +1,4080 @@ +{ + "version":"2.0", + "metadata":{ + "apiVersion":"2021-01-01", + "endpointPrefix":"es", + "protocol":"rest-json", + "serviceFullName":"Amazon OpenSearch Service", + "serviceId":"OpenSearch", + "signatureVersion":"v4", + "uid":"opensearch-2021-01-01" + }, + "operations":{ + "AcceptInboundConnection":{ + "name":"AcceptInboundConnection", + "http":{ + "method":"PUT", + "requestUri":"/2021-01-01/opensearch/cc/inboundConnection/{ConnectionId}/accept" + }, + "input":{"shape":"AcceptInboundConnectionRequest"}, + "output":{"shape":"AcceptInboundConnectionResponse"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"LimitExceededException"}, + {"shape":"DisabledOperationException"} + ], + "documentation":"

Allows the remote domain owner to accept an inbound cross-cluster connection request.

" + }, + "AddTags":{ + "name":"AddTags", + "http":{ + "method":"POST", + "requestUri":"/2021-01-01/tags" + }, + "input":{"shape":"AddTagsRequest"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"LimitExceededException"}, + {"shape":"ValidationException"}, + {"shape":"InternalException"} + ], + "documentation":"

Attaches tags to an existing domain. Tags are a set of case-sensitive key value pairs. An domain can have up to 10 tags. See Tagging Amazon OpenSearch Service domains for more information.

" + }, + "AssociatePackage":{ + "name":"AssociatePackage", + "http":{ + "method":"POST", + "requestUri":"/2021-01-01/packages/associate/{PackageID}/{DomainName}" + }, + "input":{"shape":"AssociatePackageRequest"}, + "output":{"shape":"AssociatePackageResponse"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"InternalException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ValidationException"}, + {"shape":"ConflictException"} + ], + "documentation":"

Associates a package with an Amazon OpenSearch Service domain.

" + }, + "CancelServiceSoftwareUpdate":{ + "name":"CancelServiceSoftwareUpdate", + "http":{ + "method":"POST", + "requestUri":"/2021-01-01/opensearch/serviceSoftwareUpdate/cancel" + }, + "input":{"shape":"CancelServiceSoftwareUpdateRequest"}, + "output":{"shape":"CancelServiceSoftwareUpdateResponse"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"InternalException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ValidationException"} + ], + "documentation":"

Cancels a scheduled service software update for an Amazon OpenSearch Service domain. You can only perform this operation before the AutomatedUpdateDate and when the UpdateStatus is in the PENDING_UPDATE state.

" + }, + "CreateDomain":{ + "name":"CreateDomain", + "http":{ + "method":"POST", + "requestUri":"/2021-01-01/opensearch/domain" + }, + "input":{"shape":"CreateDomainRequest"}, + "output":{"shape":"CreateDomainResponse"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"DisabledOperationException"}, + {"shape":"InternalException"}, + {"shape":"InvalidTypeException"}, + {"shape":"LimitExceededException"}, + {"shape":"ResourceAlreadyExistsException"}, + {"shape":"ValidationException"} + ], + "documentation":"

Creates a new Amazon OpenSearch Service domain. For more information, see Creating and managing Amazon OpenSearch Service domains in the Amazon OpenSearch Service Developer Guide.

" + }, + "CreateOutboundConnection":{ + "name":"CreateOutboundConnection", + "http":{ + "method":"POST", + "requestUri":"/2021-01-01/opensearch/cc/outboundConnection" + }, + "input":{"shape":"CreateOutboundConnectionRequest"}, + "output":{"shape":"CreateOutboundConnectionResponse"}, + "errors":[ + {"shape":"LimitExceededException"}, + {"shape":"InternalException"}, + {"shape":"ResourceAlreadyExistsException"}, + {"shape":"DisabledOperationException"} + ], + "documentation":"

Creates a new cross-cluster connection from a local OpenSearch domain to a remote OpenSearch domain.

" + }, + "CreatePackage":{ + "name":"CreatePackage", + "http":{ + "method":"POST", + "requestUri":"/2021-01-01/packages" + }, + "input":{"shape":"CreatePackageRequest"}, + "output":{"shape":"CreatePackageResponse"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"InternalException"}, + {"shape":"LimitExceededException"}, + {"shape":"InvalidTypeException"}, + {"shape":"ResourceAlreadyExistsException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ValidationException"} + ], + "documentation":"

Create a package for use with Amazon OpenSearch Service domains.

" + }, + "DeleteDomain":{ + "name":"DeleteDomain", + "http":{ + "method":"DELETE", + "requestUri":"/2021-01-01/opensearch/domain/{DomainName}" + }, + "input":{"shape":"DeleteDomainRequest"}, + "output":{"shape":"DeleteDomainResponse"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"InternalException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ValidationException"} + ], + "documentation":"

Permanently deletes the specified domain and all of its data. Once a domain is deleted, it cannot be recovered.

" + }, + "DeleteInboundConnection":{ + "name":"DeleteInboundConnection", + "http":{ + "method":"DELETE", + "requestUri":"/2021-01-01/opensearch/cc/inboundConnection/{ConnectionId}" + }, + "input":{"shape":"DeleteInboundConnectionRequest"}, + "output":{"shape":"DeleteInboundConnectionResponse"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"DisabledOperationException"} + ], + "documentation":"

Allows the remote domain owner to delete an existing inbound cross-cluster connection.

" + }, + "DeleteOutboundConnection":{ + "name":"DeleteOutboundConnection", + "http":{ + "method":"DELETE", + "requestUri":"/2021-01-01/opensearch/cc/outboundConnection/{ConnectionId}" + }, + "input":{"shape":"DeleteOutboundConnectionRequest"}, + "output":{"shape":"DeleteOutboundConnectionResponse"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"DisabledOperationException"} + ], + "documentation":"

Allows the local domain owner to delete an existing outbound cross-cluster connection.

" + }, + "DeletePackage":{ + "name":"DeletePackage", + "http":{ + "method":"DELETE", + "requestUri":"/2021-01-01/packages/{PackageID}" + }, + "input":{"shape":"DeletePackageRequest"}, + "output":{"shape":"DeletePackageResponse"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"InternalException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ValidationException"}, + {"shape":"ConflictException"} + ], + "documentation":"

Deletes the package.

" + }, + "DescribeDomain":{ + "name":"DescribeDomain", + "http":{ + "method":"GET", + "requestUri":"/2021-01-01/opensearch/domain/{DomainName}" + }, + "input":{"shape":"DescribeDomainRequest"}, + "output":{"shape":"DescribeDomainResponse"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"InternalException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ValidationException"} + ], + "documentation":"

Returns domain configuration information about the specified domain, including the domain ID, domain endpoint, and domain ARN.

" + }, + "DescribeDomainAutoTunes":{ + "name":"DescribeDomainAutoTunes", + "http":{ + "method":"GET", + "requestUri":"/2021-01-01/opensearch/domain/{DomainName}/autoTunes" + }, + "input":{"shape":"DescribeDomainAutoTunesRequest"}, + "output":{"shape":"DescribeDomainAutoTunesResponse"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"InternalException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ValidationException"} + ], + "documentation":"

Provides scheduled Auto-Tune action details for the domain, such as Auto-Tune action type, description, severity, and scheduled date.

" + }, + "DescribeDomainConfig":{ + "name":"DescribeDomainConfig", + "http":{ + "method":"GET", + "requestUri":"/2021-01-01/opensearch/domain/{DomainName}/config" + }, + "input":{"shape":"DescribeDomainConfigRequest"}, + "output":{"shape":"DescribeDomainConfigResponse"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"InternalException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ValidationException"} + ], + "documentation":"

Provides cluster configuration information about the specified domain, such as the state, creation date, update version, and update date for cluster options.

" + }, + "DescribeDomains":{ + "name":"DescribeDomains", + "http":{ + "method":"POST", + "requestUri":"/2021-01-01/opensearch/domain-info" + }, + "input":{"shape":"DescribeDomainsRequest"}, + "output":{"shape":"DescribeDomainsResponse"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"InternalException"}, + {"shape":"ValidationException"} + ], + "documentation":"

Returns domain configuration information about the specified domains, including the domain ID, domain endpoint, and domain ARN.

" + }, + "DescribeInboundConnections":{ + "name":"DescribeInboundConnections", + "http":{ + "method":"POST", + "requestUri":"/2021-01-01/opensearch/cc/inboundConnection/search" + }, + "input":{"shape":"DescribeInboundConnectionsRequest"}, + "output":{"shape":"DescribeInboundConnectionsResponse"}, + "errors":[ + {"shape":"InvalidPaginationTokenException"}, + {"shape":"DisabledOperationException"} + ], + "documentation":"

Lists all the inbound cross-cluster connections for a remote domain.

" + }, + "DescribeInstanceTypeLimits":{ + "name":"DescribeInstanceTypeLimits", + "http":{ + "method":"GET", + "requestUri":"/2021-01-01/opensearch/instanceTypeLimits/{EngineVersion}/{InstanceType}" + }, + "input":{"shape":"DescribeInstanceTypeLimitsRequest"}, + "output":{"shape":"DescribeInstanceTypeLimitsResponse"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"InternalException"}, + {"shape":"InvalidTypeException"}, + {"shape":"LimitExceededException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ValidationException"} + ], + "documentation":"

Describe the limits for a given instance type and OpenSearch or Elasticsearch version. When modifying an existing domain, specify the DomainName to see which limits you can modify.

" + }, + "DescribeOutboundConnections":{ + "name":"DescribeOutboundConnections", + "http":{ + "method":"POST", + "requestUri":"/2021-01-01/opensearch/cc/outboundConnection/search" + }, + "input":{"shape":"DescribeOutboundConnectionsRequest"}, + "output":{"shape":"DescribeOutboundConnectionsResponse"}, + "errors":[ + {"shape":"InvalidPaginationTokenException"}, + {"shape":"DisabledOperationException"} + ], + "documentation":"

Lists all the outbound cross-cluster connections for a local domain.

" + }, + "DescribePackages":{ + "name":"DescribePackages", + "http":{ + "method":"POST", + "requestUri":"/2021-01-01/packages/describe" + }, + "input":{"shape":"DescribePackagesRequest"}, + "output":{"shape":"DescribePackagesResponse"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"InternalException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ValidationException"} + ], + "documentation":"

Describes all packages available to Amazon OpenSearch Service domains. Includes options for filtering, limiting the number of results, and pagination.

" + }, + "DescribeReservedInstanceOfferings":{ + "name":"DescribeReservedInstanceOfferings", + "http":{ + "method":"GET", + "requestUri":"/2021-01-01/opensearch/reservedInstanceOfferings" + }, + "input":{"shape":"DescribeReservedInstanceOfferingsRequest"}, + "output":{"shape":"DescribeReservedInstanceOfferingsResponse"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"ValidationException"}, + {"shape":"DisabledOperationException"}, + {"shape":"InternalException"} + ], + "documentation":"

Lists available reserved OpenSearch instance offerings.

" + }, + "DescribeReservedInstances":{ + "name":"DescribeReservedInstances", + "http":{ + "method":"GET", + "requestUri":"/2021-01-01/opensearch/reservedInstances" + }, + "input":{"shape":"DescribeReservedInstancesRequest"}, + "output":{"shape":"DescribeReservedInstancesResponse"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"InternalException"}, + {"shape":"ValidationException"}, + {"shape":"DisabledOperationException"} + ], + "documentation":"

Returns information about reserved OpenSearch instances for this account.

" + }, + "DissociatePackage":{ + "name":"DissociatePackage", + "http":{ + "method":"POST", + "requestUri":"/2021-01-01/packages/dissociate/{PackageID}/{DomainName}" + }, + "input":{"shape":"DissociatePackageRequest"}, + "output":{"shape":"DissociatePackageResponse"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"InternalException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ValidationException"}, + {"shape":"ConflictException"} + ], + "documentation":"

Dissociates a package from the Amazon OpenSearch Service domain.

" + }, + "GetCompatibleVersions":{ + "name":"GetCompatibleVersions", + "http":{ + "method":"GET", + "requestUri":"/2021-01-01/opensearch/compatibleVersions" + }, + "input":{"shape":"GetCompatibleVersionsRequest"}, + "output":{"shape":"GetCompatibleVersionsResponse"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"DisabledOperationException"}, + {"shape":"ValidationException"}, + {"shape":"InternalException"} + ], + "documentation":"

Returns a list of upgrade-compatible versions of OpenSearch/Elasticsearch. You can optionally pass a DomainName to get all upgrade-compatible versions of OpenSearch/Elasticsearch for that specific domain.

" + }, + "GetPackageVersionHistory":{ + "name":"GetPackageVersionHistory", + "http":{ + "method":"GET", + "requestUri":"/2021-01-01/packages/{PackageID}/history" + }, + "input":{"shape":"GetPackageVersionHistoryRequest"}, + "output":{"shape":"GetPackageVersionHistoryResponse"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"InternalException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ValidationException"} + ], + "documentation":"

Returns a list of package versions, along with their creation time and commit message.

" + }, + "GetUpgradeHistory":{ + "name":"GetUpgradeHistory", + "http":{ + "method":"GET", + "requestUri":"/2021-01-01/opensearch/upgradeDomain/{DomainName}/history" + }, + "input":{"shape":"GetUpgradeHistoryRequest"}, + "output":{"shape":"GetUpgradeHistoryResponse"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"DisabledOperationException"}, + {"shape":"ValidationException"}, + {"shape":"InternalException"} + ], + "documentation":"

Retrieves the complete history of the last 10 upgrades performed on the domain.

" + }, + "GetUpgradeStatus":{ + "name":"GetUpgradeStatus", + "http":{ + "method":"GET", + "requestUri":"/2021-01-01/opensearch/upgradeDomain/{DomainName}/status" + }, + "input":{"shape":"GetUpgradeStatusRequest"}, + "output":{"shape":"GetUpgradeStatusResponse"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"DisabledOperationException"}, + {"shape":"ValidationException"}, + {"shape":"InternalException"} + ], + "documentation":"

Retrieves the latest status of the last upgrade or upgrade eligibility check performed on the domain.

" + }, + "ListDomainNames":{ + "name":"ListDomainNames", + "http":{ + "method":"GET", + "requestUri":"/2021-01-01/domain" + }, + "output":{"shape":"ListDomainNamesResponse"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"ValidationException"} + ], + "documentation":"

Returns the names of all domains owned by the current user's account.

" + }, + "ListDomainsForPackage":{ + "name":"ListDomainsForPackage", + "http":{ + "method":"GET", + "requestUri":"/2021-01-01/packages/{PackageID}/domains" + }, + "input":{"shape":"ListDomainsForPackageRequest"}, + "output":{"shape":"ListDomainsForPackageResponse"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"InternalException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ValidationException"} + ], + "documentation":"

Lists all Amazon OpenSearch Service domains associated with the package.

" + }, + "ListInstanceTypeDetails":{ + "name":"ListInstanceTypeDetails", + "http":{ + "method":"GET", + "requestUri":"/2021-01-01/opensearch/instanceTypeDetails/{EngineVersion}" + }, + "input":{"shape":"ListInstanceTypeDetailsRequest"}, + "output":{"shape":"ListInstanceTypeDetailsResponse"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"InternalException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ValidationException"} + ] + }, + "ListPackagesForDomain":{ + "name":"ListPackagesForDomain", + "http":{ + "method":"GET", + "requestUri":"/2021-01-01/domain/{DomainName}/packages" + }, + "input":{"shape":"ListPackagesForDomainRequest"}, + "output":{"shape":"ListPackagesForDomainResponse"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"InternalException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ValidationException"} + ], + "documentation":"

Lists all packages associated with the Amazon OpenSearch Service domain.

" + }, + "ListTags":{ + "name":"ListTags", + "http":{ + "method":"GET", + "requestUri":"/2021-01-01/tags/" + }, + "input":{"shape":"ListTagsRequest"}, + "output":{"shape":"ListTagsResponse"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ValidationException"}, + {"shape":"InternalException"} + ], + "documentation":"

Returns all tags for the given domain.

" + }, + "ListVersions":{ + "name":"ListVersions", + "http":{ + "method":"GET", + "requestUri":"/2021-01-01/opensearch/versions" + }, + "input":{"shape":"ListVersionsRequest"}, + "output":{"shape":"ListVersionsResponse"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"InternalException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ValidationException"} + ], + "documentation":"

List all supported versions of OpenSearch and Elasticsearch.

" + }, + "PurchaseReservedInstanceOffering":{ + "name":"PurchaseReservedInstanceOffering", + "http":{ + "method":"POST", + "requestUri":"/2021-01-01/opensearch/purchaseReservedInstanceOffering" + }, + "input":{"shape":"PurchaseReservedInstanceOfferingRequest"}, + "output":{"shape":"PurchaseReservedInstanceOfferingResponse"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"ResourceAlreadyExistsException"}, + {"shape":"LimitExceededException"}, + {"shape":"DisabledOperationException"}, + {"shape":"ValidationException"}, + {"shape":"InternalException"} + ], + "documentation":"

Allows you to purchase reserved OpenSearch instances.

" + }, + "RejectInboundConnection":{ + "name":"RejectInboundConnection", + "http":{ + "method":"PUT", + "requestUri":"/2021-01-01/opensearch/cc/inboundConnection/{ConnectionId}/reject" + }, + "input":{"shape":"RejectInboundConnectionRequest"}, + "output":{"shape":"RejectInboundConnectionResponse"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"DisabledOperationException"} + ], + "documentation":"

Allows the remote domain owner to reject an inbound cross-cluster connection request.

" + }, + "RemoveTags":{ + "name":"RemoveTags", + "http":{ + "method":"POST", + "requestUri":"/2021-01-01/tags-removal" + }, + "input":{"shape":"RemoveTagsRequest"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"ValidationException"}, + {"shape":"InternalException"} + ], + "documentation":"

Removes the specified set of tags from the given domain.

" + }, + "StartServiceSoftwareUpdate":{ + "name":"StartServiceSoftwareUpdate", + "http":{ + "method":"POST", + "requestUri":"/2021-01-01/opensearch/serviceSoftwareUpdate/start" + }, + "input":{"shape":"StartServiceSoftwareUpdateRequest"}, + "output":{"shape":"StartServiceSoftwareUpdateResponse"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"InternalException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ValidationException"} + ], + "documentation":"

Schedules a service software update for an Amazon OpenSearch Service domain.

" + }, + "UpdateDomainConfig":{ + "name":"UpdateDomainConfig", + "http":{ + "method":"POST", + "requestUri":"/2021-01-01/opensearch/domain/{DomainName}/config" + }, + "input":{"shape":"UpdateDomainConfigRequest"}, + "output":{"shape":"UpdateDomainConfigResponse"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"InternalException"}, + {"shape":"InvalidTypeException"}, + {"shape":"LimitExceededException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ValidationException"} + ], + "documentation":"

Modifies the cluster configuration of the specified domain, such as setting the instance type and the number of instances.

" + }, + "UpdatePackage":{ + "name":"UpdatePackage", + "http":{ + "method":"POST", + "requestUri":"/2021-01-01/packages/update" + }, + "input":{"shape":"UpdatePackageRequest"}, + "output":{"shape":"UpdatePackageResponse"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"InternalException"}, + {"shape":"LimitExceededException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ValidationException"} + ], + "documentation":"

Updates a package for use with Amazon OpenSearch Service domains.

" + }, + "UpgradeDomain":{ + "name":"UpgradeDomain", + "http":{ + "method":"POST", + "requestUri":"/2021-01-01/opensearch/upgradeDomain" + }, + "input":{"shape":"UpgradeDomainRequest"}, + "output":{"shape":"UpgradeDomainResponse"}, + "errors":[ + {"shape":"BaseException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ResourceAlreadyExistsException"}, + {"shape":"DisabledOperationException"}, + {"shape":"ValidationException"}, + {"shape":"InternalException"} + ], + "documentation":"

Allows you to either upgrade your domain or perform an upgrade eligibility check to a compatible version of OpenSearch or Elasticsearch.

" + } + }, + "shapes":{ + "ARN":{ + "type":"string", + "documentation":"

The Amazon Resource Name (ARN) of the domain. See Identifiers for IAM Entities in Using AWS Identity and Access Management for more information.

", + "max":2048, + "min":20, + "pattern":".*" + }, + "AWSDomainInformation":{ + "type":"structure", + "required":["DomainName"], + "members":{ + "OwnerId":{"shape":"OwnerId"}, + "DomainName":{"shape":"DomainName"}, + "Region":{"shape":"Region"} + } + }, + "AcceptInboundConnectionRequest":{ + "type":"structure", + "required":["ConnectionId"], + "members":{ + "ConnectionId":{ + "shape":"ConnectionId", + "documentation":"

The ID of the inbound connection you want to accept.

", + "location":"uri", + "locationName":"ConnectionId" + } + }, + "documentation":"

Container for the parameters to the AcceptInboundConnection operation.

" + }, + "AcceptInboundConnectionResponse":{ + "type":"structure", + "members":{ + "Connection":{ + "shape":"InboundConnection", + "documentation":"

The InboundConnection of the accepted inbound connection.

" + } + }, + "documentation":"

The result of an AcceptInboundConnection operation. Contains details about the accepted inbound connection.

" + }, + "AccessPoliciesStatus":{ + "type":"structure", + "required":[ + "Options", + "Status" + ], + "members":{ + "Options":{ + "shape":"PolicyDocument", + "documentation":"

The access policy configured for the domain. Access policies can be resource-based, IP-based, or IAM-based. See Configuring access policiesfor more information.

" + }, + "Status":{ + "shape":"OptionStatus", + "documentation":"

The status of the access policy for the domain. See OptionStatus for the status information that's included.

" + } + }, + "documentation":"

The configured access rules for the domain's document and search endpoints, and the current status of those rules.

" + }, + "AddTagsRequest":{ + "type":"structure", + "required":[ + "ARN", + "TagList" + ], + "members":{ + "ARN":{ + "shape":"ARN", + "documentation":"

Specify the ARN of the domain you want to add tags to.

" + }, + "TagList":{ + "shape":"TagList", + "documentation":"

List of Tag to add to the domain.

" + } + }, + "documentation":"

Container for the parameters to the AddTags operation. Specifies the tags to attach to the domain.

" + }, + "AdditionalLimit":{ + "type":"structure", + "members":{ + "LimitName":{ + "shape":"LimitName", + "documentation":"

Additional limit is specific to a given InstanceType and for each of its InstanceRole etc.
Attributes and their details:

" + }, + "LimitValues":{ + "shape":"LimitValueList", + "documentation":"

Value for a given AdditionalLimit$LimitName .

" + } + }, + "documentation":"

List of limits that are specific to a given InstanceType and for each of its InstanceRole .

" + }, + "AdditionalLimitList":{ + "type":"list", + "member":{"shape":"AdditionalLimit"} + }, + "AdvancedOptions":{ + "type":"map", + "key":{"shape":"String"}, + "value":{"shape":"String"}, + "documentation":"

Exposes select native OpenSearch configuration values from opensearch.yml. Currently, the following advanced options are available:

For more information, see Advanced cluster parameters.

" + }, + "AdvancedOptionsStatus":{ + "type":"structure", + "required":[ + "Options", + "Status" + ], + "members":{ + "Options":{ + "shape":"AdvancedOptions", + "documentation":"

The status of advanced options for the specified domain.

" + }, + "Status":{ + "shape":"OptionStatus", + "documentation":"

The OptionStatus for advanced options for the specified domain.

" + } + }, + "documentation":"

Status of the advanced options for the specified domain. Currently, the following advanced options are available:

For more information, see Advanced cluster parameters.

" + }, + "AdvancedSecurityOptions":{ + "type":"structure", + "members":{ + "Enabled":{ + "shape":"Boolean", + "documentation":"

True if advanced security is enabled.

" + }, + "InternalUserDatabaseEnabled":{ + "shape":"Boolean", + "documentation":"

True if the internal user database is enabled.

" + }, + "SAMLOptions":{ + "shape":"SAMLOptionsOutput", + "documentation":"

Describes the SAML application configured for a domain.

" + } + }, + "documentation":"

The advanced security configuration: whether advanced security is enabled, whether the internal database option is enabled.

" + }, + "AdvancedSecurityOptionsInput":{ + "type":"structure", + "members":{ + "Enabled":{ + "shape":"Boolean", + "documentation":"

True if advanced security is enabled.

" + }, + "InternalUserDatabaseEnabled":{ + "shape":"Boolean", + "documentation":"

True if the internal user database is enabled.

" + }, + "MasterUserOptions":{ + "shape":"MasterUserOptions", + "documentation":"

Credentials for the master user: username and password, ARN, or both.

" + }, + "SAMLOptions":{ + "shape":"SAMLOptionsInput", + "documentation":"

The SAML application configuration for the domain.

" + } + }, + "documentation":"

The advanced security configuration: whether advanced security is enabled, whether the internal database option is enabled, master username and password (if internal database is enabled), and master user ARN (if IAM is enabled).

" + }, + "AdvancedSecurityOptionsStatus":{ + "type":"structure", + "required":[ + "Options", + "Status" + ], + "members":{ + "Options":{ + "shape":"AdvancedSecurityOptions", + "documentation":"

Advanced security options for the specified domain.

" + }, + "Status":{ + "shape":"OptionStatus", + "documentation":"

Status of the advanced security options for the specified domain.

" + } + }, + "documentation":"

The status of advanced security options for the specified domain.

" + }, + "AssociatePackageRequest":{ + "type":"structure", + "required":[ + "PackageID", + "DomainName" + ], + "members":{ + "PackageID":{ + "shape":"PackageID", + "documentation":"

Internal ID of the package to associate with a domain. Use DescribePackages to find this value.

", + "location":"uri", + "locationName":"PackageID" + }, + "DomainName":{ + "shape":"DomainName", + "documentation":"

The name of the domain to associate the package with.

", + "location":"uri", + "locationName":"DomainName" + } + }, + "documentation":"

Container for the request parameters to the AssociatePackage operation.

" + }, + "AssociatePackageResponse":{ + "type":"structure", + "members":{ + "DomainPackageDetails":{ + "shape":"DomainPackageDetails", + "documentation":"

DomainPackageDetails

" + } + }, + "documentation":"

Container for the response returned by AssociatePackage operation.

" + }, + "AutoTune":{ + "type":"structure", + "members":{ + "AutoTuneType":{ + "shape":"AutoTuneType", + "documentation":"

Specifies the Auto-Tune type. Valid value is SCHEDULED_ACTION.

" + }, + "AutoTuneDetails":{ + "shape":"AutoTuneDetails", + "documentation":"

Specifies details about the Auto-Tune action. See Auto-Tune for Amazon OpenSearch Service for more information.

" + } + }, + "documentation":"

Specifies the Auto-Tune type and Auto-Tune action details.

" + }, + "AutoTuneDate":{ + "type":"timestamp", + "documentation":"

The timestamp of the Auto-Tune action scheduled for the domain.

" + }, + "AutoTuneDesiredState":{ + "type":"string", + "documentation":"

The Auto-Tune desired state. Valid values are ENABLED and DISABLED.

", + "enum":[ + "ENABLED", + "DISABLED" + ] + }, + "AutoTuneDetails":{ + "type":"structure", + "members":{ + "ScheduledAutoTuneDetails":{"shape":"ScheduledAutoTuneDetails"} + }, + "documentation":"

Specifies details about the Auto-Tune action. See Auto-Tune for Amazon OpenSearch Service for more information.

" + }, + "AutoTuneList":{ + "type":"list", + "member":{"shape":"AutoTune"} + }, + "AutoTuneMaintenanceSchedule":{ + "type":"structure", + "members":{ + "StartAt":{ + "shape":"StartAt", + "documentation":"

The timestamp at which the Auto-Tune maintenance schedule starts.

" + }, + "Duration":{ + "shape":"Duration", + "documentation":"

Specifies maintenance schedule duration: duration value and duration unit. See Auto-Tune for Amazon OpenSearch Service for more information.

" + }, + "CronExpressionForRecurrence":{ + "shape":"String", + "documentation":"

A cron expression for a recurring maintenance schedule. See Auto-Tune for Amazon OpenSearch Service for more information.

" + } + }, + "documentation":"

Specifies the Auto-Tune maintenance schedule. See Auto-Tune for Amazon OpenSearch Service for more information.

" + }, + "AutoTuneMaintenanceScheduleList":{ + "type":"list", + "member":{"shape":"AutoTuneMaintenanceSchedule"}, + "max":100 + }, + "AutoTuneOptions":{ + "type":"structure", + "members":{ + "DesiredState":{ + "shape":"AutoTuneDesiredState", + "documentation":"

The Auto-Tune desired state. Valid values are ENABLED and DISABLED.

" + }, + "RollbackOnDisable":{ + "shape":"RollbackOnDisable", + "documentation":"

The rollback state while disabling Auto-Tune for the domain. Valid values are NO_ROLLBACK and DEFAULT_ROLLBACK.

" + }, + "MaintenanceSchedules":{ + "shape":"AutoTuneMaintenanceScheduleList", + "documentation":"

A list of maintenance schedules. See Auto-Tune for Amazon OpenSearch Service for more information.

" + } + }, + "documentation":"

The Auto-Tune options: the Auto-Tune desired state for the domain, rollback state when disabling Auto-Tune options and list of maintenance schedules.

" + }, + "AutoTuneOptionsInput":{ + "type":"structure", + "members":{ + "DesiredState":{ + "shape":"AutoTuneDesiredState", + "documentation":"

The Auto-Tune desired state. Valid values are ENABLED and DISABLED.

" + }, + "MaintenanceSchedules":{ + "shape":"AutoTuneMaintenanceScheduleList", + "documentation":"

A list of maintenance schedules. See Auto-Tune for Amazon OpenSearch Service for more information.

" + } + }, + "documentation":"

The Auto-Tune options: the Auto-Tune desired state for the domain and list of maintenance schedules.

" + }, + "AutoTuneOptionsOutput":{ + "type":"structure", + "members":{ + "State":{ + "shape":"AutoTuneState", + "documentation":"

The AutoTuneState for the domain.

" + }, + "ErrorMessage":{ + "shape":"String", + "documentation":"

The error message while enabling or disabling Auto-Tune.

" + } + }, + "documentation":"

The Auto-Tune options: the Auto-Tune desired state for the domain and list of maintenance schedules.

" + }, + "AutoTuneOptionsStatus":{ + "type":"structure", + "members":{ + "Options":{ + "shape":"AutoTuneOptions", + "documentation":"

Specifies Auto-Tune options for the domain.

" + }, + "Status":{ + "shape":"AutoTuneStatus", + "documentation":"

The status of the Auto-Tune options for the domain.

" + } + }, + "documentation":"

The Auto-Tune status for the domain.

" + }, + "AutoTuneState":{ + "type":"string", + "documentation":"

The Auto-Tune state for the domain. For valid states see Auto-Tune for Amazon OpenSearch Service.

", + "enum":[ + "ENABLED", + "DISABLED", + "ENABLE_IN_PROGRESS", + "DISABLE_IN_PROGRESS", + "DISABLED_AND_ROLLBACK_SCHEDULED", + "DISABLED_AND_ROLLBACK_IN_PROGRESS", + "DISABLED_AND_ROLLBACK_COMPLETE", + "DISABLED_AND_ROLLBACK_ERROR", + "ERROR" + ] + }, + "AutoTuneStatus":{ + "type":"structure", + "required":[ + "CreationDate", + "UpdateDate", + "State" + ], + "members":{ + "CreationDate":{ + "shape":"UpdateTimestamp", + "documentation":"

The timestamp of the Auto-Tune options creation date.

" + }, + "UpdateDate":{ + "shape":"UpdateTimestamp", + "documentation":"

The timestamp of when the Auto-Tune options were last updated.

" + }, + "UpdateVersion":{ + "shape":"UIntValue", + "documentation":"

The latest version of the Auto-Tune options.

" + }, + "State":{ + "shape":"AutoTuneState", + "documentation":"

The AutoTuneState for the domain.

" + }, + "ErrorMessage":{ + "shape":"String", + "documentation":"

The error message while enabling or disabling Auto-Tune.

" + }, + "PendingDeletion":{ + "shape":"Boolean", + "documentation":"

Indicates whether the domain is being deleted.

" + } + }, + "documentation":"

Provides the current Auto-Tune status for the domain.

" + }, + "AutoTuneType":{ + "type":"string", + "documentation":"

Specifies the Auto-Tune type. Valid value is SCHEDULED_ACTION.

", + "enum":["SCHEDULED_ACTION"] + }, + "BackendRole":{ + "type":"string", + "max":256, + "min":1 + }, + "Boolean":{"type":"boolean"}, + "CancelServiceSoftwareUpdateRequest":{ + "type":"structure", + "required":["DomainName"], + "members":{ + "DomainName":{ + "shape":"DomainName", + "documentation":"

The name of the domain that you want to stop the latest service software update on.

" + } + }, + "documentation":"

Container for the parameters to the CancelServiceSoftwareUpdate operation. Specifies the name of the domain that you wish to cancel a service software update on.

" + }, + "CancelServiceSoftwareUpdateResponse":{ + "type":"structure", + "members":{ + "ServiceSoftwareOptions":{ + "shape":"ServiceSoftwareOptions", + "documentation":"

The current status of the OpenSearch service software update.

" + } + }, + "documentation":"

The result of a CancelServiceSoftwareUpdate operation. Contains the status of the update.

" + }, + "CloudWatchLogsLogGroupArn":{ + "type":"string", + "documentation":"

ARN of the Cloudwatch log group to publish logs to.

", + "max":2048, + "min":20, + "pattern":".*" + }, + "ClusterConfig":{ + "type":"structure", + "members":{ + "InstanceType":{ + "shape":"OpenSearchPartitionInstanceType", + "documentation":"

The instance type for an OpenSearch cluster. UltraWarm instance types are not supported for data instances.

" + }, + "InstanceCount":{ + "shape":"IntegerClass", + "documentation":"

The number of instances in the specified domain cluster.

" + }, + "DedicatedMasterEnabled":{ + "shape":"Boolean", + "documentation":"

A boolean value to indicate whether a dedicated master node is enabled. See Dedicated master nodes in Amazon OpenSearch Service for more information.

" + }, + "ZoneAwarenessEnabled":{ + "shape":"Boolean", + "documentation":"

A boolean value to indicate whether zone awareness is enabled. See Configuring a multi-AZ domain in Amazon OpenSearch Service for more information.

" + }, + "ZoneAwarenessConfig":{ + "shape":"ZoneAwarenessConfig", + "documentation":"

The zone awareness configuration for a domain when zone awareness is enabled.

" + }, + "DedicatedMasterType":{ + "shape":"OpenSearchPartitionInstanceType", + "documentation":"

The instance type for a dedicated master node.

" + }, + "DedicatedMasterCount":{ + "shape":"IntegerClass", + "documentation":"

Total number of dedicated master nodes, active and on standby, for the cluster.

" + }, + "WarmEnabled":{ + "shape":"Boolean", + "documentation":"

True to enable UltraWarm storage.

" + }, + "WarmType":{ + "shape":"OpenSearchWarmPartitionInstanceType", + "documentation":"

The instance type for the OpenSearch cluster's warm nodes.

" + }, + "WarmCount":{ + "shape":"IntegerClass", + "documentation":"

The number of UltraWarm nodes in the cluster.

" + }, + "ColdStorageOptions":{"shape":"ColdStorageOptions"} + }, + "documentation":"

The configuration for the domain cluster, such as the type and number of instances.

" + }, + "ClusterConfigStatus":{ + "type":"structure", + "required":[ + "Options", + "Status" + ], + "members":{ + "Options":{ + "shape":"ClusterConfig", + "documentation":"

The cluster configuration for the specified domain.

" + }, + "Status":{ + "shape":"OptionStatus", + "documentation":"

The cluster configuration status for the specified domain.

" + } + }, + "documentation":"

The configuration status for the specified domain.

" + }, + "CognitoOptions":{ + "type":"structure", + "members":{ + "Enabled":{ + "shape":"Boolean", + "documentation":"

The option to enable Cognito for OpenSearch Dashboards authentication.

" + }, + "UserPoolId":{ + "shape":"UserPoolId", + "documentation":"

The Cognito user pool ID for OpenSearch Dashboards authentication.

" + }, + "IdentityPoolId":{ + "shape":"IdentityPoolId", + "documentation":"

The Cognito identity pool ID for OpenSearch Dashboards authentication.

" + }, + "RoleArn":{ + "shape":"RoleArn", + "documentation":"

The role ARN that provides OpenSearch permissions for accessing Cognito resources.

" + } + }, + "documentation":"

Options to specify the Cognito user and identity pools for OpenSearch Dashboards authentication. For more information, see Configuring Amazon Cognito authentication for OpenSearch Dashboards.

" + }, + "CognitoOptionsStatus":{ + "type":"structure", + "required":[ + "Options", + "Status" + ], + "members":{ + "Options":{ + "shape":"CognitoOptions", + "documentation":"

Cognito options for the specified domain.

" + }, + "Status":{ + "shape":"OptionStatus", + "documentation":"

The status of the Cognito options for the specified domain.

" + } + }, + "documentation":"

The status of the Cognito options for the specified domain.

" + }, + "ColdStorageOptions":{ + "type":"structure", + "required":["Enabled"], + "members":{ + "Enabled":{"shape":"Boolean"} + } + }, + "CommitMessage":{ + "type":"string", + "max":160 + }, + "CompatibleVersionsList":{ + "type":"list", + "member":{"shape":"CompatibleVersionsMap"} + }, + "CompatibleVersionsMap":{ + "type":"structure", + "members":{ + "SourceVersion":{ + "shape":"VersionString", + "documentation":"

The current version of OpenSearch a domain is on.

" + }, + "TargetVersions":{"shape":"VersionList"} + }, + "documentation":"

A map from an EngineVersion to a list of compatible EngineVersion s to which the domain can be upgraded.

" + }, + "ConnectionAlias":{ + "type":"string", + "max":100, + "min":2, + "pattern":"[a-zA-Z][a-zA-Z0-9\\-\\_]+" + }, + "ConnectionId":{ + "type":"string", + "max":256, + "min":10, + "pattern":"[a-z][a-z0-9\\-]+" + }, + "ConnectionStatusMessage":{"type":"string"}, + "CreateDomainRequest":{ + "type":"structure", + "required":["DomainName"], + "members":{ + "DomainName":{ + "shape":"DomainName", + "documentation":"

The name of the Amazon OpenSearch Service domain you're creating. Domain names are unique across the domains owned by an account within an AWS region. Domain names must start with a lowercase letter and can contain the following characters: a-z (lowercase), 0-9, and - (hyphen).

" + }, + "EngineVersion":{ + "shape":"VersionString", + "documentation":"

String of format Elasticsearch_X.Y or OpenSearch_X.Y to specify the engine version for the Amazon OpenSearch Service domain. For example, \"OpenSearch_1.0\" or \"Elasticsearch_7.9\". For more information, see Creating and managing Amazon OpenSearch Service domains .

" + }, + "ClusterConfig":{ + "shape":"ClusterConfig", + "documentation":"

Configuration options for a domain. Specifies the instance type and number of instances in the domain.

" + }, + "EBSOptions":{ + "shape":"EBSOptions", + "documentation":"

Options to enable, disable, and specify the type and size of EBS storage volumes.

" + }, + "AccessPolicies":{ + "shape":"PolicyDocument", + "documentation":"

IAM access policy as a JSON-formatted string.

" + }, + "SnapshotOptions":{ + "shape":"SnapshotOptions", + "documentation":"

Option to set time, in UTC format, of the daily automated snapshot. Default value is 0 hours.

" + }, + "VPCOptions":{ + "shape":"VPCOptions", + "documentation":"

Options to specify the subnets and security groups for a VPC endpoint. For more information, see Launching your Amazon OpenSearch Service domains using a VPC .

" + }, + "CognitoOptions":{ + "shape":"CognitoOptions", + "documentation":"

Options to specify the Cognito user and identity pools for OpenSearch Dashboards authentication. For more information, see Configuring Amazon Cognito authentication for OpenSearch Dashboards.

" + }, + "EncryptionAtRestOptions":{ + "shape":"EncryptionAtRestOptions", + "documentation":"

Options for encryption of data at rest.

" + }, + "NodeToNodeEncryptionOptions":{ + "shape":"NodeToNodeEncryptionOptions", + "documentation":"

Node-to-node encryption options.

" + }, + "AdvancedOptions":{ + "shape":"AdvancedOptions", + "documentation":"

Option to allow references to indices in an HTTP request body. Must be false when configuring access to individual sub-resources. By default, the value is true. See Advanced cluster parameters for more information.

" + }, + "LogPublishingOptions":{ + "shape":"LogPublishingOptions", + "documentation":"

Map of LogType and LogPublishingOption, each containing options to publish a given type of OpenSearch log.

" + }, + "DomainEndpointOptions":{ + "shape":"DomainEndpointOptions", + "documentation":"

Options to specify configurations that will be applied to the domain endpoint.

" + }, + "AdvancedSecurityOptions":{ + "shape":"AdvancedSecurityOptionsInput", + "documentation":"

Specifies advanced security options.

" + }, + "TagList":{ + "shape":"TagList", + "documentation":"

A list of Tag added during domain creation.

" + }, + "AutoTuneOptions":{ + "shape":"AutoTuneOptionsInput", + "documentation":"

Specifies Auto-Tune options.

" + } + } + }, + "CreateDomainResponse":{ + "type":"structure", + "members":{ + "DomainStatus":{ + "shape":"DomainStatus", + "documentation":"

The status of the newly created domain.

" + } + }, + "documentation":"

The result of a CreateDomain operation. Contains the status of the newly created Amazon OpenSearch Service domain.

" + }, + "CreateOutboundConnectionRequest":{ + "type":"structure", + "required":[ + "LocalDomainInfo", + "RemoteDomainInfo", + "ConnectionAlias" + ], + "members":{ + "LocalDomainInfo":{ + "shape":"DomainInformationContainer", + "documentation":"

The AWSDomainInformation for the local OpenSearch domain.

" + }, + "RemoteDomainInfo":{ + "shape":"DomainInformationContainer", + "documentation":"

The AWSDomainInformation for the remote OpenSearch domain.

" + }, + "ConnectionAlias":{ + "shape":"ConnectionAlias", + "documentation":"

The connection alias used used by the customer for this cross-cluster connection.

" + } + }, + "documentation":"

Container for the parameters to the CreateOutboundConnection operation.

" + }, + "CreateOutboundConnectionResponse":{ + "type":"structure", + "members":{ + "LocalDomainInfo":{ + "shape":"DomainInformationContainer", + "documentation":"

The AWSDomainInformation for the local OpenSearch domain.

" + }, + "RemoteDomainInfo":{ + "shape":"DomainInformationContainer", + "documentation":"

The AWSDomainInformation for the remote OpenSearch domain.

" + }, + "ConnectionAlias":{ + "shape":"ConnectionAlias", + "documentation":"

The connection alias provided during the create connection request.

" + }, + "ConnectionStatus":{ + "shape":"OutboundConnectionStatus", + "documentation":"

The OutboundConnectionStatus for the newly created connection.

" + }, + "ConnectionId":{ + "shape":"ConnectionId", + "documentation":"

The unique ID for the created outbound connection, which is used for subsequent operations on the connection.

" + } + }, + "documentation":"

The result of a CreateOutboundConnection request. Contains the details about the newly created cross-cluster connection.

" + }, + "CreatePackageRequest":{ + "type":"structure", + "required":[ + "PackageName", + "PackageType", + "PackageSource" + ], + "members":{ + "PackageName":{ + "shape":"PackageName", + "documentation":"

Unique identifier for the package.

" + }, + "PackageType":{ + "shape":"PackageType", + "documentation":"

Type of package. Currently supports only TXT-DICTIONARY.

" + }, + "PackageDescription":{ + "shape":"PackageDescription", + "documentation":"

Description of the package.

" + }, + "PackageSource":{ + "shape":"PackageSource", + "documentation":"

The Amazon S3 location from which to import the package.

" + } + }, + "documentation":"

Container for request parameters to the CreatePackage operation.

" + }, + "CreatePackageResponse":{ + "type":"structure", + "members":{ + "PackageDetails":{ + "shape":"PackageDetails", + "documentation":"

Information about the package.

" + } + }, + "documentation":"

Container for the response returned by the CreatePackage operation.

" + }, + "CreatedAt":{"type":"timestamp"}, + "DeleteDomainRequest":{ + "type":"structure", + "required":["DomainName"], + "members":{ + "DomainName":{ + "shape":"DomainName", + "documentation":"

The name of the domain you want to permanently delete.

", + "location":"uri", + "locationName":"DomainName" + } + }, + "documentation":"

Container for the parameters to the DeleteDomain operation. Specifies the name of the domain you want to delete.

" + }, + "DeleteDomainResponse":{ + "type":"structure", + "members":{ + "DomainStatus":{ + "shape":"DomainStatus", + "documentation":"

The status of the domain being deleted.

" + } + }, + "documentation":"

The result of a DeleteDomain request. Contains the status of the pending deletion, or a \"domain not found\" error if the domain and all of its resources have been deleted.

" + }, + "DeleteInboundConnectionRequest":{ + "type":"structure", + "required":["ConnectionId"], + "members":{ + "ConnectionId":{ + "shape":"ConnectionId", + "documentation":"

The ID of the inbound connection to permanently delete.

", + "location":"uri", + "locationName":"ConnectionId" + } + }, + "documentation":"

Container for the parameters to the DeleteInboundConnection operation.

" + }, + "DeleteInboundConnectionResponse":{ + "type":"structure", + "members":{ + "Connection":{ + "shape":"InboundConnection", + "documentation":"

The InboundConnection of the deleted inbound connection.

" + } + }, + "documentation":"

The result of a DeleteInboundConnection operation. Contains details about the deleted inbound connection.

" + }, + "DeleteOutboundConnectionRequest":{ + "type":"structure", + "required":["ConnectionId"], + "members":{ + "ConnectionId":{ + "shape":"ConnectionId", + "documentation":"

The ID of the outbound connection you want to permanently delete.

", + "location":"uri", + "locationName":"ConnectionId" + } + }, + "documentation":"

Container for the parameters to the DeleteOutboundConnection operation.

" + }, + "DeleteOutboundConnectionResponse":{ + "type":"structure", + "members":{ + "Connection":{ + "shape":"OutboundConnection", + "documentation":"

The OutboundConnection of the deleted outbound connection.

" + } + }, + "documentation":"

The result of a DeleteOutboundConnection operation. Contains details about the deleted outbound connection.

" + }, + "DeletePackageRequest":{ + "type":"structure", + "required":["PackageID"], + "members":{ + "PackageID":{ + "shape":"PackageID", + "documentation":"

The internal ID of the package you want to delete. Use DescribePackages to find this value.

", + "location":"uri", + "locationName":"PackageID" + } + }, + "documentation":"

Container for the request parameters to the DeletePackage operation.

" + }, + "DeletePackageResponse":{ + "type":"structure", + "members":{ + "PackageDetails":{ + "shape":"PackageDetails", + "documentation":"

PackageDetails

" + } + }, + "documentation":"

Container for the response parameters to the DeletePackage operation.

" + }, + "DeploymentCloseDateTimeStamp":{"type":"timestamp"}, + "DeploymentStatus":{ + "type":"string", + "enum":[ + "PENDING_UPDATE", + "IN_PROGRESS", + "COMPLETED", + "NOT_ELIGIBLE", + "ELIGIBLE" + ] + }, + "DescribeDomainAutoTunesRequest":{ + "type":"structure", + "required":["DomainName"], + "members":{ + "DomainName":{ + "shape":"DomainName", + "documentation":"

The domain name for which you want Auto-Tune action details.

", + "location":"uri", + "locationName":"DomainName" + }, + "MaxResults":{ + "shape":"MaxResults", + "documentation":"

Set this value to limit the number of results returned. If not specified, defaults to 100.

" + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

NextToken is sent in case the earlier API call results contain the NextToken. Used for pagination.

" + } + }, + "documentation":"

Container for the parameters to the DescribeDomainAutoTunes operation.

" + }, + "DescribeDomainAutoTunesResponse":{ + "type":"structure", + "members":{ + "AutoTunes":{ + "shape":"AutoTuneList", + "documentation":"

The list of setting adjustments that Auto-Tune has made to the domain. See Auto-Tune for Amazon OpenSearch Service for more information.

" + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

An identifier to allow retrieval of paginated results.

" + } + }, + "documentation":"

The result of a DescribeDomainAutoTunes request. See Auto-Tune for Amazon OpenSearch Service for more information.

" + }, + "DescribeDomainConfigRequest":{ + "type":"structure", + "required":["DomainName"], + "members":{ + "DomainName":{ + "shape":"DomainName", + "documentation":"

The domain you want to get information about.

", + "location":"uri", + "locationName":"DomainName" + } + }, + "documentation":"

Container for the parameters to the DescribeDomainConfig operation. Specifies the domain name for which you want configuration information.

" + }, + "DescribeDomainConfigResponse":{ + "type":"structure", + "required":["DomainConfig"], + "members":{ + "DomainConfig":{ + "shape":"DomainConfig", + "documentation":"

The configuration information of the domain requested in the DescribeDomainConfig request.

" + } + }, + "documentation":"

The result of a DescribeDomainConfig request. Contains the configuration information of the requested domain.

" + }, + "DescribeDomainRequest":{ + "type":"structure", + "required":["DomainName"], + "members":{ + "DomainName":{ + "shape":"DomainName", + "documentation":"

The name of the domain for which you want information.

", + "location":"uri", + "locationName":"DomainName" + } + }, + "documentation":"

Container for the parameters to the DescribeDomain operation.

" + }, + "DescribeDomainResponse":{ + "type":"structure", + "required":["DomainStatus"], + "members":{ + "DomainStatus":{ + "shape":"DomainStatus", + "documentation":"

The current status of the domain.

" + } + }, + "documentation":"

The result of a DescribeDomain request. Contains the status of the domain specified in the request.

" + }, + "DescribeDomainsRequest":{ + "type":"structure", + "required":["DomainNames"], + "members":{ + "DomainNames":{ + "shape":"DomainNameList", + "documentation":"

The domains for which you want information.

" + } + }, + "documentation":"

Container for the parameters to the DescribeDomains operation. By default, the API returns the status of all domains.

" + }, + "DescribeDomainsResponse":{ + "type":"structure", + "required":["DomainStatusList"], + "members":{ + "DomainStatusList":{ + "shape":"DomainStatusList", + "documentation":"

The status of the domains requested in the DescribeDomains request.

" + } + }, + "documentation":"

The result of a DescribeDomains request. Contains the status of the specified domains or all domains owned by the account.

" + }, + "DescribeInboundConnectionsRequest":{ + "type":"structure", + "members":{ + "Filters":{ + "shape":"FilterList", + "documentation":"

A list of filters used to match properties for inbound cross-cluster connections. Available Filter values are:

" + }, + "MaxResults":{ + "shape":"MaxResults", + "documentation":"

Set this value to limit the number of results returned. If not specified, defaults to 100.

" + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

If more results are available and NextToken is present, make the next request to the same API with the received NextToken to paginate the remaining results.

" + } + }, + "documentation":"

Container for the parameters to the DescribeInboundConnections operation.

" + }, + "DescribeInboundConnectionsResponse":{ + "type":"structure", + "members":{ + "Connections":{ + "shape":"InboundConnections", + "documentation":"

A list of InboundConnection matching the specified filter criteria.

" + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

If more results are available and NextToken is present, make the next request to the same API with the received NextToken to paginate the remaining results.

" + } + }, + "documentation":"

The result of a DescribeInboundConnections request. Contains a list of connections matching the filter criteria.

" + }, + "DescribeInstanceTypeLimitsRequest":{ + "type":"structure", + "required":[ + "InstanceType", + "EngineVersion" + ], + "members":{ + "DomainName":{ + "shape":"DomainName", + "documentation":"

The name of the domain you want to modify. Only include this value if you're querying OpenSearch Limits for an existing domain.

", + "location":"querystring", + "locationName":"domainName" + }, + "InstanceType":{ + "shape":"OpenSearchPartitionInstanceType", + "documentation":"

The instance type for an OpenSearch cluster for which OpenSearch Limits are needed.

", + "location":"uri", + "locationName":"InstanceType" + }, + "EngineVersion":{ + "shape":"VersionString", + "documentation":"

Version of OpenSearch for which Limits are needed.

", + "location":"uri", + "locationName":"EngineVersion" + } + }, + "documentation":"

Container for the parameters to the DescribeInstanceTypeLimits operation.

" + }, + "DescribeInstanceTypeLimitsResponse":{ + "type":"structure", + "members":{ + "LimitsByRole":{"shape":"LimitsByRole"} + }, + "documentation":"

Container for the parameters received from the DescribeInstanceTypeLimits operation.

" + }, + "DescribeOutboundConnectionsRequest":{ + "type":"structure", + "members":{ + "Filters":{ + "shape":"FilterList", + "documentation":"

A list of filters used to match properties for outbound cross-cluster connections. Available Filter names for this operation are:

" + }, + "MaxResults":{ + "shape":"MaxResults", + "documentation":"

Set this value to limit the number of results returned. If not specified, defaults to 100.

" + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

NextToken is sent in case the earlier API call results contain the NextToken parameter. Used for pagination.

" + } + }, + "documentation":"

Container for the parameters to the DescribeOutboundConnections operation.

" + }, + "DescribeOutboundConnectionsResponse":{ + "type":"structure", + "members":{ + "Connections":{ + "shape":"OutboundConnections", + "documentation":"

A list of OutboundConnection matching the specified filter criteria.

" + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

If more results are available and NextToken is present, make the next request to the same API with the received NextToken to paginate the remaining results.

" + } + }, + "documentation":"

The result of a DescribeOutboundConnections request. Contains the list of connections matching the filter criteria.

" + }, + "DescribePackagesFilter":{ + "type":"structure", + "members":{ + "Name":{ + "shape":"DescribePackagesFilterName", + "documentation":"

Any field from PackageDetails.

" + }, + "Value":{ + "shape":"DescribePackagesFilterValues", + "documentation":"

A list of values for the specified field.

" + } + }, + "documentation":"

A filter to apply to the DescribePackage response.

" + }, + "DescribePackagesFilterList":{ + "type":"list", + "member":{"shape":"DescribePackagesFilter"}, + "documentation":"

A list of DescribePackagesFilter to filter the packages included in a DescribePackages response.

" + }, + "DescribePackagesFilterName":{ + "type":"string", + "enum":[ + "PackageID", + "PackageName", + "PackageStatus" + ] + }, + "DescribePackagesFilterValue":{ + "type":"string", + "pattern":"^[0-9a-zA-Z\\*\\.\\\\/\\?-]*$" + }, + "DescribePackagesFilterValues":{ + "type":"list", + "member":{"shape":"DescribePackagesFilterValue"} + }, + "DescribePackagesRequest":{ + "type":"structure", + "members":{ + "Filters":{ + "shape":"DescribePackagesFilterList", + "documentation":"

Only returns packages that match the DescribePackagesFilterList values.

" + }, + "MaxResults":{ + "shape":"MaxResults", + "documentation":"

Limits results to a maximum number of packages.

" + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

Used for pagination. Only necessary if a previous API call includes a non-null NextToken value. If provided, returns results for the next page.

" + } + }, + "documentation":"

Container for the request parameters to the DescribePackage operation.

" + }, + "DescribePackagesResponse":{ + "type":"structure", + "members":{ + "PackageDetailsList":{ + "shape":"PackageDetailsList", + "documentation":"

List of PackageDetails objects.

" + }, + "NextToken":{"shape":"String"} + }, + "documentation":"

Container for the response returned by the DescribePackages operation.

" + }, + "DescribeReservedInstanceOfferingsRequest":{ + "type":"structure", + "members":{ + "ReservedInstanceOfferingId":{ + "shape":"GUID", + "documentation":"

The offering identifier filter value. Use this parameter to show only the available offering that matches the specified reservation identifier.

", + "location":"querystring", + "locationName":"offeringId" + }, + "MaxResults":{ + "shape":"MaxResults", + "documentation":"

Set this value to limit the number of results returned. If not specified, defaults to 100.

", + "location":"querystring", + "locationName":"maxResults" + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

Provides an identifier to allow retrieval of paginated results.

", + "location":"querystring", + "locationName":"nextToken" + } + }, + "documentation":"

Container for parameters to DescribeReservedInstanceOfferings

" + }, + "DescribeReservedInstanceOfferingsResponse":{ + "type":"structure", + "members":{ + "NextToken":{ + "shape":"NextToken", + "documentation":"

Provides an identifier to allow retrieval of paginated results.

" + }, + "ReservedInstanceOfferings":{ + "shape":"ReservedInstanceOfferingList", + "documentation":"

List of reserved OpenSearch instance offerings

" + } + }, + "documentation":"

Container for results from DescribeReservedInstanceOfferings

" + }, + "DescribeReservedInstancesRequest":{ + "type":"structure", + "members":{ + "ReservedInstanceId":{ + "shape":"GUID", + "documentation":"

The reserved instance identifier filter value. Use this parameter to show only the reservation that matches the specified reserved OpenSearch instance ID.

", + "location":"querystring", + "locationName":"reservationId" + }, + "MaxResults":{ + "shape":"MaxResults", + "documentation":"

Set this value to limit the number of results returned. If not specified, defaults to 100.

", + "location":"querystring", + "locationName":"maxResults" + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

Provides an identifier to allow retrieval of paginated results.

", + "location":"querystring", + "locationName":"nextToken" + } + }, + "documentation":"

Container for parameters to DescribeReservedInstances

" + }, + "DescribeReservedInstancesResponse":{ + "type":"structure", + "members":{ + "NextToken":{ + "shape":"String", + "documentation":"

Provides an identifier to allow retrieval of paginated results.

" + }, + "ReservedInstances":{ + "shape":"ReservedInstanceList", + "documentation":"

List of reserved OpenSearch instances.

" + } + }, + "documentation":"

Container for results from DescribeReservedInstances

" + }, + "DissociatePackageRequest":{ + "type":"structure", + "required":[ + "PackageID", + "DomainName" + ], + "members":{ + "PackageID":{ + "shape":"PackageID", + "documentation":"

The internal ID of the package to associate with a domain. Use DescribePackages to find this value.

", + "location":"uri", + "locationName":"PackageID" + }, + "DomainName":{ + "shape":"DomainName", + "documentation":"

The name of the domain to associate the package with.

", + "location":"uri", + "locationName":"DomainName" + } + }, + "documentation":"

Container for the request parameters to the DissociatePackage operation.

" + }, + "DissociatePackageResponse":{ + "type":"structure", + "members":{ + "DomainPackageDetails":{ + "shape":"DomainPackageDetails", + "documentation":"

DomainPackageDetails

" + } + }, + "documentation":"

Container for the response returned by DissociatePackage operation.

" + }, + "DomainConfig":{ + "type":"structure", + "members":{ + "EngineVersion":{ + "shape":"VersionStatus", + "documentation":"

String of format Elasticsearch_X.Y or OpenSearch_X.Y to specify the engine version for the OpenSearch or Elasticsearch domain.

" + }, + "ClusterConfig":{ + "shape":"ClusterConfigStatus", + "documentation":"

The ClusterConfig for the domain.

" + }, + "EBSOptions":{ + "shape":"EBSOptionsStatus", + "documentation":"

The EBSOptions for the domain.

" + }, + "AccessPolicies":{ + "shape":"AccessPoliciesStatus", + "documentation":"

IAM access policy as a JSON-formatted string.

" + }, + "SnapshotOptions":{ + "shape":"SnapshotOptionsStatus", + "documentation":"

The SnapshotOptions for the domain.

" + }, + "VPCOptions":{ + "shape":"VPCDerivedInfoStatus", + "documentation":"

The VPCOptions for the specified domain. For more information, see Launching your Amazon OpenSearch Service domains using a VPC.

" + }, + "CognitoOptions":{ + "shape":"CognitoOptionsStatus", + "documentation":"

The CognitoOptions for the specified domain. For more information, see Configuring Amazon Cognito authentication for OpenSearch Dashboards.

" + }, + "EncryptionAtRestOptions":{ + "shape":"EncryptionAtRestOptionsStatus", + "documentation":"

The EncryptionAtRestOptions for the domain.

" + }, + "NodeToNodeEncryptionOptions":{ + "shape":"NodeToNodeEncryptionOptionsStatus", + "documentation":"

The NodeToNodeEncryptionOptions for the domain.

" + }, + "AdvancedOptions":{ + "shape":"AdvancedOptionsStatus", + "documentation":"

The AdvancedOptions for the domain. See Advanced options for more information.

" + }, + "LogPublishingOptions":{ + "shape":"LogPublishingOptionsStatus", + "documentation":"

Log publishing options for the given domain.

" + }, + "DomainEndpointOptions":{ + "shape":"DomainEndpointOptionsStatus", + "documentation":"

The DomainEndpointOptions for the domain.

" + }, + "AdvancedSecurityOptions":{ + "shape":"AdvancedSecurityOptionsStatus", + "documentation":"

Specifies AdvancedSecurityOptions for the domain.

" + }, + "AutoTuneOptions":{ + "shape":"AutoTuneOptionsStatus", + "documentation":"

Specifies AutoTuneOptions for the domain.

" + } + }, + "documentation":"

The configuration of a domain.

" + }, + "DomainEndpointOptions":{ + "type":"structure", + "members":{ + "EnforceHTTPS":{ + "shape":"Boolean", + "documentation":"

Whether only HTTPS endpoint should be enabled for the domain.

" + }, + "TLSSecurityPolicy":{ + "shape":"TLSSecurityPolicy", + "documentation":"

Specify the TLS security policy to apply to the HTTPS endpoint of the domain.
Can be one of the following values:

" + }, + "CustomEndpointEnabled":{ + "shape":"Boolean", + "documentation":"

Whether to enable a custom endpoint for the domain.

" + }, + "CustomEndpoint":{ + "shape":"DomainNameFqdn", + "documentation":"

The fully qualified domain for your custom endpoint.

" + }, + "CustomEndpointCertificateArn":{ + "shape":"ARN", + "documentation":"

The ACM certificate ARN for your custom endpoint.

" + } + }, + "documentation":"

Options to configure the endpoint for the domain.

" + }, + "DomainEndpointOptionsStatus":{ + "type":"structure", + "required":[ + "Options", + "Status" + ], + "members":{ + "Options":{ + "shape":"DomainEndpointOptions", + "documentation":"

Options to configure the endpoint for the domain.

" + }, + "Status":{ + "shape":"OptionStatus", + "documentation":"

The status of the endpoint options for the domain. See OptionStatus for the status information that's included.

" + } + }, + "documentation":"

The configured endpoint options for the domain and their current status.

" + }, + "DomainId":{ + "type":"string", + "documentation":"

Unique identifier for the domain.

", + "max":64, + "min":1 + }, + "DomainInfo":{ + "type":"structure", + "members":{ + "DomainName":{ + "shape":"DomainName", + "documentation":"

The DomainName.

" + } + } + }, + "DomainInfoList":{ + "type":"list", + "member":{"shape":"DomainInfo"}, + "documentation":"

Contains the list of domain information.

" + }, + "DomainInformationContainer":{ + "type":"structure", + "members":{ + "AWSDomainInformation":{"shape":"AWSDomainInformation"} + } + }, + "DomainName":{ + "type":"string", + "documentation":"

The name of an domain. Domain names are unique across the domains owned by an account within an AWS region. Domain names start with a letter or number and can contain the following characters: a-z (lowercase), 0-9, and - (hyphen).

", + "max":28, + "min":3, + "pattern":"[a-z][a-z0-9\\-]+" + }, + "DomainNameFqdn":{ + "type":"string", + "max":255, + "min":1, + "pattern":"^(((?!-)[A-Za-z0-9-]{0,62}[A-Za-z0-9])\\.)+((?!-)[A-Za-z0-9-]{1,62}[A-Za-z0-9])$" + }, + "DomainNameList":{ + "type":"list", + "member":{"shape":"DomainName"}, + "documentation":"

A list of domain names.

" + }, + "DomainPackageDetails":{ + "type":"structure", + "members":{ + "PackageID":{ + "shape":"PackageID", + "documentation":"

The internal ID of the package.

" + }, + "PackageName":{ + "shape":"PackageName", + "documentation":"

User-specified name of the package.

" + }, + "PackageType":{ + "shape":"PackageType", + "documentation":"

Currently supports only TXT-DICTIONARY.

" + }, + "LastUpdated":{ + "shape":"LastUpdated", + "documentation":"

The timestamp of the most recent update to the package association status.

" + }, + "DomainName":{ + "shape":"DomainName", + "documentation":"

The name of the domain you've associated a package with.

" + }, + "DomainPackageStatus":{ + "shape":"DomainPackageStatus", + "documentation":"

State of the association. Values are ASSOCIATING, ASSOCIATION_FAILED, ACTIVE, DISSOCIATING, and DISSOCIATION_FAILED.

" + }, + "PackageVersion":{"shape":"PackageVersion"}, + "ReferencePath":{ + "shape":"ReferencePath", + "documentation":"

The relative path on Amazon OpenSearch Service nodes, which can be used as synonym_path when the package is a synonym file.

" + }, + "ErrorDetails":{ + "shape":"ErrorDetails", + "documentation":"

Additional information if the package is in an error state. Null otherwise.

" + } + }, + "documentation":"

Information on a package associated with a domain.

" + }, + "DomainPackageDetailsList":{ + "type":"list", + "member":{"shape":"DomainPackageDetails"} + }, + "DomainPackageStatus":{ + "type":"string", + "enum":[ + "ASSOCIATING", + "ASSOCIATION_FAILED", + "ACTIVE", + "DISSOCIATING", + "DISSOCIATION_FAILED" + ] + }, + "DomainStatus":{ + "type":"structure", + "required":[ + "DomainId", + "DomainName", + "ARN", + "ClusterConfig" + ], + "members":{ + "DomainId":{ + "shape":"DomainId", + "documentation":"

The unique identifier for the specified domain.

" + }, + "DomainName":{ + "shape":"DomainName", + "documentation":"

The name of a domain. Domain names are unique across the domains owned by an account within an AWS region. Domain names start with a letter or number and can contain the following characters: a-z (lowercase), 0-9, and - (hyphen).

" + }, + "ARN":{ + "shape":"ARN", + "documentation":"

The Amazon Resource Name (ARN) of a domain. See IAM identifiers in the AWS Identity and Access Management User Guide for more information.

" + }, + "Created":{ + "shape":"Boolean", + "documentation":"

The domain creation status. True if the creation of a domain is complete. False if domain creation is still in progress.

" + }, + "Deleted":{ + "shape":"Boolean", + "documentation":"

The domain deletion status. True if a delete request has been received for the domain but resource cleanup is still in progress. False if the domain has not been deleted. Once domain deletion is complete, the status of the domain is no longer returned.

" + }, + "Endpoint":{ + "shape":"ServiceUrl", + "documentation":"

The domain endpoint that you use to submit index and search requests.

" + }, + "Endpoints":{ + "shape":"EndpointsMap", + "documentation":"

Map containing the domain endpoints used to submit index and search requests. Example key, value: 'vpc','vpc-endpoint-h2dsd34efgyghrtguk5gt6j2foh4.us-east-1.es.amazonaws.com'.

" + }, + "Processing":{ + "shape":"Boolean", + "documentation":"

The status of the domain configuration. True if Amazon OpenSearch Service is processing configuration changes. False if the configuration is active.

" + }, + "UpgradeProcessing":{ + "shape":"Boolean", + "documentation":"

The status of a domain version upgrade. True if Amazon OpenSearch Service is undergoing a version upgrade. False if the configuration is active.

" + }, + "EngineVersion":{"shape":"VersionString"}, + "ClusterConfig":{ + "shape":"ClusterConfig", + "documentation":"

The type and number of instances in the domain.

" + }, + "EBSOptions":{ + "shape":"EBSOptions", + "documentation":"

The EBSOptions for the specified domain.

" + }, + "AccessPolicies":{ + "shape":"PolicyDocument", + "documentation":"

IAM access policy as a JSON-formatted string.

" + }, + "SnapshotOptions":{ + "shape":"SnapshotOptions", + "documentation":"

The status of the SnapshotOptions.

" + }, + "VPCOptions":{ + "shape":"VPCDerivedInfo", + "documentation":"

The VPCOptions for the specified domain. For more information, see Launching your Amazon OpenSearch Service domains using a VPC.

" + }, + "CognitoOptions":{ + "shape":"CognitoOptions", + "documentation":"

The CognitoOptions for the specified domain. For more information, see Configuring Amazon Cognito authentication for OpenSearch Dashboards.

" + }, + "EncryptionAtRestOptions":{ + "shape":"EncryptionAtRestOptions", + "documentation":"

The status of the EncryptionAtRestOptions.

" + }, + "NodeToNodeEncryptionOptions":{ + "shape":"NodeToNodeEncryptionOptions", + "documentation":"

The status of the NodeToNodeEncryptionOptions.

" + }, + "AdvancedOptions":{ + "shape":"AdvancedOptions", + "documentation":"

The status of the AdvancedOptions.

" + }, + "LogPublishingOptions":{ + "shape":"LogPublishingOptions", + "documentation":"

Log publishing options for the given domain.

" + }, + "ServiceSoftwareOptions":{ + "shape":"ServiceSoftwareOptions", + "documentation":"

The current status of the domain's service software.

" + }, + "DomainEndpointOptions":{ + "shape":"DomainEndpointOptions", + "documentation":"

The current status of the domain's endpoint options.

" + }, + "AdvancedSecurityOptions":{ + "shape":"AdvancedSecurityOptions", + "documentation":"

The current status of the domain's advanced security options.

" + }, + "AutoTuneOptions":{ + "shape":"AutoTuneOptionsOutput", + "documentation":"

The current status of the domain's Auto-Tune options.

" + } + }, + "documentation":"

The current status of a domain.

" + }, + "DomainStatusList":{ + "type":"list", + "member":{"shape":"DomainStatus"}, + "documentation":"

A list that contains the status of each requested domain.

" + }, + "Double":{"type":"double"}, + "Duration":{ + "type":"structure", + "members":{ + "Value":{ + "shape":"DurationValue", + "documentation":"

Integer to specify the value of a maintenance schedule duration. See Auto-Tune for Amazon OpenSearch Service for more information.

" + }, + "Unit":{ + "shape":"TimeUnit", + "documentation":"

The unit of a maintenance schedule duration. Valid value is HOURS. See Auto-Tune for Amazon OpenSearch Service for more information.

" + } + }, + "documentation":"

The maintenance schedule duration: duration value and duration unit. See Auto-Tune for Amazon OpenSearch Service for more information.

" + }, + "DurationValue":{ + "type":"long", + "documentation":"

Integer to specify the value of a maintenance schedule duration. See Auto-Tune for Amazon OpenSearch Service for more information.

", + "max":24, + "min":1 + }, + "EBSOptions":{ + "type":"structure", + "members":{ + "EBSEnabled":{ + "shape":"Boolean", + "documentation":"

Whether EBS-based storage is enabled.

" + }, + "VolumeType":{ + "shape":"VolumeType", + "documentation":"

The volume type for EBS-based storage.

" + }, + "VolumeSize":{ + "shape":"IntegerClass", + "documentation":"

Integer to specify the size of an EBS volume.

" + }, + "Iops":{ + "shape":"IntegerClass", + "documentation":"

The IOPD for a Provisioned IOPS EBS volume (SSD).

" + } + }, + "documentation":"

Options to enable, disable, and specify the properties of EBS storage volumes.

" + }, + "EBSOptionsStatus":{ + "type":"structure", + "required":[ + "Options", + "Status" + ], + "members":{ + "Options":{ + "shape":"EBSOptions", + "documentation":"

The EBS options for the specified domain.

" + }, + "Status":{ + "shape":"OptionStatus", + "documentation":"

The status of the EBS options for the specified domain.

" + } + }, + "documentation":"

Status of the EBS options for the specified domain.

" + }, + "EncryptionAtRestOptions":{ + "type":"structure", + "members":{ + "Enabled":{ + "shape":"Boolean", + "documentation":"

The option to enable encryption at rest.

" + }, + "KmsKeyId":{ + "shape":"KmsKeyId", + "documentation":"

The KMS key ID for encryption at rest options.

" + } + }, + "documentation":"

Specifies encryption at rest options.

" + }, + "EncryptionAtRestOptionsStatus":{ + "type":"structure", + "required":[ + "Options", + "Status" + ], + "members":{ + "Options":{ + "shape":"EncryptionAtRestOptions", + "documentation":"

The Encryption At Rest options for the specified domain.

" + }, + "Status":{ + "shape":"OptionStatus", + "documentation":"

The status of the Encryption At Rest options for the specified domain.

" + } + }, + "documentation":"

Status of the encryption At Rest options for the specified domain.

" + }, + "EndpointsMap":{ + "type":"map", + "key":{"shape":"String"}, + "value":{"shape":"ServiceUrl"} + }, + "ErrorDetails":{ + "type":"structure", + "members":{ + "ErrorType":{"shape":"ErrorType"}, + "ErrorMessage":{"shape":"ErrorMessage"} + } + }, + "ErrorMessage":{"type":"string"}, + "ErrorType":{"type":"string"}, + "Filter":{ + "type":"structure", + "members":{ + "Name":{ + "shape":"NonEmptyString", + "documentation":"

The name of the filter.

" + }, + "Values":{ + "shape":"ValueStringList", + "documentation":"

Contains one or more values for the filter.

" + } + }, + "documentation":"

A filter used to limit results when describing inbound or outbound cross-cluster connections. Multiple values can be specified per filter. A cross-cluster connection must match at least one of the specified values for it to be returned from an operation.

" + }, + "FilterList":{ + "type":"list", + "member":{"shape":"Filter"} + }, + "GUID":{ + "type":"string", + "max":36, + "min":36, + "pattern":"\\p{XDigit}{8}-\\p{XDigit}{4}-\\p{XDigit}{4}-\\p{XDigit}{4}-\\p{XDigit}{12}" + }, + "GetCompatibleVersionsRequest":{ + "type":"structure", + "members":{ + "DomainName":{ + "shape":"DomainName", + "location":"querystring", + "locationName":"domainName" + } + }, + "documentation":"

Container for the request parameters to GetCompatibleVersions operation.

" + }, + "GetCompatibleVersionsResponse":{ + "type":"structure", + "members":{ + "CompatibleVersions":{ + "shape":"CompatibleVersionsList", + "documentation":"

A map of compatible OpenSearch versions returned as part of the GetCompatibleVersions operation.

" + } + }, + "documentation":"

Container for the response returned by the GetCompatibleVersions operation.

" + }, + "GetPackageVersionHistoryRequest":{ + "type":"structure", + "required":["PackageID"], + "members":{ + "PackageID":{ + "shape":"PackageID", + "documentation":"

Returns an audit history of package versions.

", + "location":"uri", + "locationName":"PackageID" + }, + "MaxResults":{ + "shape":"MaxResults", + "documentation":"

Limits results to a maximum number of package versions.

", + "location":"querystring", + "locationName":"maxResults" + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

Used for pagination. Only necessary if a previous API call includes a non-null NextToken value. If provided, returns results for the next page.

", + "location":"querystring", + "locationName":"nextToken" + } + }, + "documentation":"

Container for the request parameters to the GetPackageVersionHistory operation.

" + }, + "GetPackageVersionHistoryResponse":{ + "type":"structure", + "members":{ + "PackageID":{"shape":"PackageID"}, + "PackageVersionHistoryList":{ + "shape":"PackageVersionHistoryList", + "documentation":"

List of PackageVersionHistory objects.

" + }, + "NextToken":{"shape":"String"} + }, + "documentation":"

Container for response returned by GetPackageVersionHistory operation.

" + }, + "GetUpgradeHistoryRequest":{ + "type":"structure", + "required":["DomainName"], + "members":{ + "DomainName":{ + "shape":"DomainName", + "location":"uri", + "locationName":"DomainName" + }, + "MaxResults":{ + "shape":"MaxResults", + "location":"querystring", + "locationName":"maxResults" + }, + "NextToken":{ + "shape":"NextToken", + "location":"querystring", + "locationName":"nextToken" + } + }, + "documentation":"

Container for the request parameters to the GetUpgradeHistory operation.

" + }, + "GetUpgradeHistoryResponse":{ + "type":"structure", + "members":{ + "UpgradeHistories":{ + "shape":"UpgradeHistoryList", + "documentation":"

A list of UpgradeHistory objects corresponding to each upgrade or upgrade eligibility check performed on a domain returned as part of the GetUpgradeHistoryResponse object.

" + }, + "NextToken":{ + "shape":"String", + "documentation":"

Pagination token that needs to be supplied to the next call to get the next page of results.

" + } + }, + "documentation":"

Container for the response returned by the GetUpgradeHistory operation.

" + }, + "GetUpgradeStatusRequest":{ + "type":"structure", + "required":["DomainName"], + "members":{ + "DomainName":{ + "shape":"DomainName", + "location":"uri", + "locationName":"DomainName" + } + }, + "documentation":"

Container for the request parameters to the GetUpgradeStatus operation.

" + }, + "GetUpgradeStatusResponse":{ + "type":"structure", + "members":{ + "UpgradeStep":{ + "shape":"UpgradeStep", + "documentation":"

One of three steps an upgrade or upgrade eligibility check goes through:

" + }, + "StepStatus":{ + "shape":"UpgradeStatus", + "documentation":"

One of four statuses an upgrade have, returned as part of the GetUpgradeStatusResponse object. The status can take one of the following values:

" + }, + "UpgradeName":{ + "shape":"UpgradeName", + "documentation":"

A string that briefly describes the update.

" + } + }, + "documentation":"

Container for the response returned by the GetUpgradeStatus operation.

" + }, + "IdentityPoolId":{ + "type":"string", + "max":55, + "min":1, + "pattern":"[\\w-]+:[0-9a-f-]+" + }, + "InboundConnection":{ + "type":"structure", + "members":{ + "LocalDomainInfo":{ + "shape":"DomainInformationContainer", + "documentation":"

The AWSDomainInformation for the local OpenSearch domain.

" + }, + "RemoteDomainInfo":{ + "shape":"DomainInformationContainer", + "documentation":"

The AWSDomainInformation for the remote OpenSearch domain.

" + }, + "ConnectionId":{ + "shape":"ConnectionId", + "documentation":"

The connection ID for the inbound cross-cluster connection.

" + }, + "ConnectionStatus":{ + "shape":"InboundConnectionStatus", + "documentation":"

The InboundConnectionStatus for the outbound connection.

" + } + }, + "documentation":"

Details of an inbound connection.

" + }, + "InboundConnectionStatus":{ + "type":"structure", + "members":{ + "StatusCode":{ + "shape":"InboundConnectionStatusCode", + "documentation":"

The state code for the inbound connection. Can be one of the following:

" + }, + "Message":{ + "shape":"ConnectionStatusMessage", + "documentation":"

Verbose information for the inbound connection status.

" + } + }, + "documentation":"

The connection status of an inbound cross-cluster connection.

" + }, + "InboundConnectionStatusCode":{ + "type":"string", + "enum":[ + "PENDING_ACCEPTANCE", + "APPROVED", + "PROVISIONING", + "ACTIVE", + "REJECTING", + "REJECTED", + "DELETING", + "DELETED" + ] + }, + "InboundConnections":{ + "type":"list", + "member":{"shape":"InboundConnection"} + }, + "InstanceCount":{ + "type":"integer", + "documentation":"

The number of EC2 instances in the domain.

", + "min":1 + }, + "InstanceCountLimits":{ + "type":"structure", + "members":{ + "MinimumInstanceCount":{"shape":"MinimumInstanceCount"}, + "MaximumInstanceCount":{"shape":"MaximumInstanceCount"} + }, + "documentation":"

InstanceCountLimits represents the limits on the number of instances that can be created in Amazon OpenSearch Service for a given InstanceType.

" + }, + "InstanceLimits":{ + "type":"structure", + "members":{ + "InstanceCountLimits":{"shape":"InstanceCountLimits"} + }, + "documentation":"

InstanceLimits represents the list of instance-related attributes that are available for a given InstanceType.

" + }, + "InstanceRole":{"type":"string"}, + "InstanceRoleList":{ + "type":"list", + "member":{"shape":"InstanceRole"} + }, + "InstanceTypeDetails":{ + "type":"structure", + "members":{ + "InstanceType":{"shape":"OpenSearchPartitionInstanceType"}, + "EncryptionEnabled":{"shape":"Boolean"}, + "CognitoEnabled":{"shape":"Boolean"}, + "AppLogsEnabled":{"shape":"Boolean"}, + "AdvancedSecurityEnabled":{"shape":"Boolean"}, + "WarmEnabled":{"shape":"Boolean"}, + "InstanceRole":{"shape":"InstanceRoleList"} + } + }, + "InstanceTypeDetailsList":{ + "type":"list", + "member":{"shape":"InstanceTypeDetails"} + }, + "Integer":{"type":"integer"}, + "IntegerClass":{"type":"integer"}, + "Issue":{"type":"string"}, + "Issues":{ + "type":"list", + "member":{"shape":"Issue"} + }, + "KmsKeyId":{ + "type":"string", + "max":500, + "min":1, + "pattern":".*" + }, + "LastUpdated":{"type":"timestamp"}, + "LimitName":{"type":"string"}, + "LimitValue":{"type":"string"}, + "LimitValueList":{ + "type":"list", + "member":{"shape":"LimitValue"} + }, + "Limits":{ + "type":"structure", + "members":{ + "StorageTypes":{ + "shape":"StorageTypeList", + "documentation":"

Storage-related types and attributes that are available for a given InstanceType.

" + }, + "InstanceLimits":{"shape":"InstanceLimits"}, + "AdditionalLimits":{ + "shape":"AdditionalLimitList", + "documentation":"

List of additional limits that are specific to a given InstanceType and for each of its InstanceRole .

" + } + }, + "documentation":"

Limits for a given InstanceType and for each of its roles.
Limits contains the following: StorageTypes , InstanceLimits , and AdditionalLimits

" + }, + "LimitsByRole":{ + "type":"map", + "key":{"shape":"InstanceRole"}, + "value":{"shape":"Limits"}, + "documentation":"

The role of a given instance and all applicable limits. The role performed by a given OpenSearch instance can be one of the following:

" + }, + "ListDomainNamesResponse":{ + "type":"structure", + "members":{ + "DomainNames":{ + "shape":"DomainInfoList", + "documentation":"

List of domain names.

" + } + }, + "documentation":"

The result of a ListDomainNames operation. Contains the names of all domains owned by this account.

" + }, + "ListDomainsForPackageRequest":{ + "type":"structure", + "required":["PackageID"], + "members":{ + "PackageID":{ + "shape":"PackageID", + "documentation":"

The package for which to list associated domains.

", + "location":"uri", + "locationName":"PackageID" + }, + "MaxResults":{ + "shape":"MaxResults", + "documentation":"

Limits the results to a maximum number of domains.

", + "location":"querystring", + "locationName":"maxResults" + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

Used for pagination. Only necessary if a previous API call includes a non-null NextToken value. If provided, returns results for the next page.

", + "location":"querystring", + "locationName":"nextToken" + } + }, + "documentation":"

Container for the request parameters to the ListDomainsForPackage operation.

" + }, + "ListDomainsForPackageResponse":{ + "type":"structure", + "members":{ + "DomainPackageDetailsList":{ + "shape":"DomainPackageDetailsList", + "documentation":"

List of DomainPackageDetails objects.

" + }, + "NextToken":{"shape":"String"} + }, + "documentation":"

Container for the response parameters to the ListDomainsForPackage operation.

" + }, + "ListInstanceTypeDetailsRequest":{ + "type":"structure", + "required":["EngineVersion"], + "members":{ + "EngineVersion":{ + "shape":"VersionString", + "location":"uri", + "locationName":"EngineVersion" + }, + "DomainName":{ + "shape":"DomainName", + "location":"querystring", + "locationName":"domainName" + }, + "MaxResults":{ + "shape":"MaxResults", + "location":"querystring", + "locationName":"maxResults" + }, + "NextToken":{ + "shape":"NextToken", + "location":"querystring", + "locationName":"nextToken" + } + } + }, + "ListInstanceTypeDetailsResponse":{ + "type":"structure", + "members":{ + "InstanceTypeDetails":{"shape":"InstanceTypeDetailsList"}, + "NextToken":{"shape":"NextToken"} + } + }, + "ListPackagesForDomainRequest":{ + "type":"structure", + "required":["DomainName"], + "members":{ + "DomainName":{ + "shape":"DomainName", + "documentation":"

The name of the domain for which you want to list associated packages.

", + "location":"uri", + "locationName":"DomainName" + }, + "MaxResults":{ + "shape":"MaxResults", + "documentation":"

Limits results to a maximum number of packages.

", + "location":"querystring", + "locationName":"maxResults" + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

Used for pagination. Only necessary if a previous API call includes a non-null NextToken value. If provided, returns results for the next page.

", + "location":"querystring", + "locationName":"nextToken" + } + }, + "documentation":"

Container for the request parameters to the ListPackagesForDomain operation.

" + }, + "ListPackagesForDomainResponse":{ + "type":"structure", + "members":{ + "DomainPackageDetailsList":{ + "shape":"DomainPackageDetailsList", + "documentation":"

List of DomainPackageDetails objects.

" + }, + "NextToken":{ + "shape":"String", + "documentation":"

Pagination token to supply to the next call to get the next page of results.

" + } + }, + "documentation":"

Container for the response parameters to the ListPackagesForDomain operation.

" + }, + "ListTagsRequest":{ + "type":"structure", + "required":["ARN"], + "members":{ + "ARN":{ + "shape":"ARN", + "documentation":"

Specify the ARN of the domain that the tags you want to view are attached to.

", + "location":"querystring", + "locationName":"arn" + } + }, + "documentation":"

Container for the parameters to the ListTags operation. Specify the ARN of the domain that the tags you want to view are attached to.

" + }, + "ListTagsResponse":{ + "type":"structure", + "members":{ + "TagList":{ + "shape":"TagList", + "documentation":"

List of Tag for the requested domain.

" + } + }, + "documentation":"

The result of a ListTags operation. Contains tags for all requested domains.

" + }, + "ListVersionsRequest":{ + "type":"structure", + "members":{ + "MaxResults":{ + "shape":"MaxResults", + "documentation":"

Set this value to limit the number of results returned. Value must be greater than 10 or it won't be honored.

", + "location":"querystring", + "locationName":"maxResults" + }, + "NextToken":{ + "shape":"NextToken", + "location":"querystring", + "locationName":"nextToken" + } + }, + "documentation":"

Container for the parameters to the ListVersions operation.

Use MaxResults to control the maximum number of results to retrieve in a single call.

Use NextToken in response to retrieve more results. If the received response does not contain a NextToken, there are no more results to retrieve.

" + }, + "ListVersionsResponse":{ + "type":"structure", + "members":{ + "Versions":{"shape":"VersionList"}, + "NextToken":{"shape":"NextToken"} + }, + "documentation":"

Container for the parameters for response received from the ListVersions operation.

" + }, + "LogPublishingOption":{ + "type":"structure", + "members":{ + "CloudWatchLogsLogGroupArn":{"shape":"CloudWatchLogsLogGroupArn"}, + "Enabled":{ + "shape":"Boolean", + "documentation":"

Whether the given log publishing option is enabled or not.

" + } + }, + "documentation":"

Log Publishing option that is set for a given domain.
Attributes and their details:

" + }, + "LogPublishingOptions":{ + "type":"map", + "key":{"shape":"LogType"}, + "value":{"shape":"LogPublishingOption"} + }, + "LogPublishingOptionsStatus":{ + "type":"structure", + "members":{ + "Options":{ + "shape":"LogPublishingOptions", + "documentation":"

The log publishing options configured for the domain.

" + }, + "Status":{ + "shape":"OptionStatus", + "documentation":"

The status of the log publishing options for the domain. See OptionStatus for the status information that's included.

" + } + }, + "documentation":"

The configured log publishing options for the domain and their current status.

" + }, + "LogType":{ + "type":"string", + "documentation":"

Type of log file. Can be one of the following:

", + "enum":[ + "INDEX_SLOW_LOGS", + "SEARCH_SLOW_LOGS", + "ES_APPLICATION_LOGS", + "AUDIT_LOGS" + ] + }, + "Long":{"type":"long"}, + "MasterUserOptions":{ + "type":"structure", + "members":{ + "MasterUserARN":{ + "shape":"ARN", + "documentation":"

ARN for the master user (if IAM is enabled).

" + }, + "MasterUserName":{ + "shape":"Username", + "documentation":"

The master user's username, which is stored in the Amazon OpenSearch Service domain's internal database.

" + }, + "MasterUserPassword":{ + "shape":"Password", + "documentation":"

The master user's password, which is stored in the Amazon OpenSearch Service domain's internal database.

" + } + }, + "documentation":"

Credentials for the master user: username and password, ARN, or both.

" + }, + "MaxResults":{ + "type":"integer", + "documentation":"

Set this value to limit the number of results returned.

", + "max":100 + }, + "MaximumInstanceCount":{ + "type":"integer", + "documentation":"

Maximum number of instances that can be instantiated for a given InstanceType.

" + }, + "MinimumInstanceCount":{ + "type":"integer", + "documentation":"

Minimum number of instances that can be instantiated for a given InstanceType.

" + }, + "NextToken":{ + "type":"string", + "documentation":"

Paginated APIs accept the NextToken input to return the next page of results and provide a NextToken output in the response, which you can use to retrieve more results.

" + }, + "NodeToNodeEncryptionOptions":{ + "type":"structure", + "members":{ + "Enabled":{ + "shape":"Boolean", + "documentation":"

True to enable node-to-node encryption.

" + } + }, + "documentation":"

The node-to-node encryption options.

" + }, + "NodeToNodeEncryptionOptionsStatus":{ + "type":"structure", + "required":[ + "Options", + "Status" + ], + "members":{ + "Options":{ + "shape":"NodeToNodeEncryptionOptions", + "documentation":"

The node-to-node encryption options for the specified domain.

" + }, + "Status":{ + "shape":"OptionStatus", + "documentation":"

The status of the node-to-node encryption options for the specified domain.

" + } + }, + "documentation":"

Status of the node-to-node encryption options for the specified domain.

" + }, + "NonEmptyString":{ + "type":"string", + "max":100, + "min":1, + "pattern":"[a-zA-Z0-9\\-\\_\\.]+" + }, + "OpenSearchPartitionInstanceType":{ + "type":"string", + "enum":[ + "m3.medium.search", + "m3.large.search", + "m3.xlarge.search", + "m3.2xlarge.search", + "m4.large.search", + "m4.xlarge.search", + "m4.2xlarge.search", + "m4.4xlarge.search", + "m4.10xlarge.search", + "m5.large.search", + "m5.xlarge.search", + "m5.2xlarge.search", + "m5.4xlarge.search", + "m5.12xlarge.search", + "m5.24xlarge.search", + "r5.large.search", + "r5.xlarge.search", + "r5.2xlarge.search", + "r5.4xlarge.search", + "r5.12xlarge.search", + "r5.24xlarge.search", + "c5.large.search", + "c5.xlarge.search", + "c5.2xlarge.search", + "c5.4xlarge.search", + "c5.9xlarge.search", + "c5.18xlarge.search", + "t3.nano.search", + "t3.micro.search", + "t3.small.search", + "t3.medium.search", + "t3.large.search", + "t3.xlarge.search", + "t3.2xlarge.search", + "ultrawarm1.medium.search", + "ultrawarm1.large.search", + "ultrawarm1.xlarge.search", + "t2.micro.search", + "t2.small.search", + "t2.medium.search", + "r3.large.search", + "r3.xlarge.search", + "r3.2xlarge.search", + "r3.4xlarge.search", + "r3.8xlarge.search", + "i2.xlarge.search", + "i2.2xlarge.search", + "d2.xlarge.search", + "d2.2xlarge.search", + "d2.4xlarge.search", + "d2.8xlarge.search", + "c4.large.search", + "c4.xlarge.search", + "c4.2xlarge.search", + "c4.4xlarge.search", + "c4.8xlarge.search", + "r4.large.search", + "r4.xlarge.search", + "r4.2xlarge.search", + "r4.4xlarge.search", + "r4.8xlarge.search", + "r4.16xlarge.search", + "i3.large.search", + "i3.xlarge.search", + "i3.2xlarge.search", + "i3.4xlarge.search", + "i3.8xlarge.search", + "i3.16xlarge.search", + "r6g.large.search", + "r6g.xlarge.search", + "r6g.2xlarge.search", + "r6g.4xlarge.search", + "r6g.8xlarge.search", + "r6g.12xlarge.search", + "m6g.large.search", + "m6g.xlarge.search", + "m6g.2xlarge.search", + "m6g.4xlarge.search", + "m6g.8xlarge.search", + "m6g.12xlarge.search", + "c6g.large.search", + "c6g.xlarge.search", + "c6g.2xlarge.search", + "c6g.4xlarge.search", + "c6g.8xlarge.search", + "c6g.12xlarge.search", + "r6gd.large.search", + "r6gd.xlarge.search", + "r6gd.2xlarge.search", + "r6gd.4xlarge.search", + "r6gd.8xlarge.search", + "r6gd.12xlarge.search", + "r6gd.16xlarge.search", + "t4g.small.search", + "t4g.medium.search" + ] + }, + "OpenSearchWarmPartitionInstanceType":{ + "type":"string", + "enum":[ + "ultrawarm1.medium.search", + "ultrawarm1.large.search", + "ultrawarm1.xlarge.search" + ] + }, + "OptionState":{ + "type":"string", + "documentation":"

The state of a requested change. One of the following:

", + "enum":[ + "RequiresIndexDocuments", + "Processing", + "Active" + ] + }, + "OptionStatus":{ + "type":"structure", + "required":[ + "CreationDate", + "UpdateDate", + "State" + ], + "members":{ + "CreationDate":{ + "shape":"UpdateTimestamp", + "documentation":"

The timestamp of when the entity was created.

" + }, + "UpdateDate":{ + "shape":"UpdateTimestamp", + "documentation":"

The timestamp of the last time the entity was updated.

" + }, + "UpdateVersion":{ + "shape":"UIntValue", + "documentation":"

The latest version of the entity.

" + }, + "State":{ + "shape":"OptionState", + "documentation":"

Provides the OptionState for the domain.

" + }, + "PendingDeletion":{ + "shape":"Boolean", + "documentation":"

Indicates whether the domain is being deleted.

" + } + }, + "documentation":"

Provides the current status of the entity.

" + }, + "OutboundConnection":{ + "type":"structure", + "members":{ + "LocalDomainInfo":{ + "shape":"DomainInformationContainer", + "documentation":"

The DomainInformation for the local OpenSearch domain.

" + }, + "RemoteDomainInfo":{ + "shape":"DomainInformationContainer", + "documentation":"

The DomainInformation for the remote OpenSearch domain.

" + }, + "ConnectionId":{ + "shape":"ConnectionId", + "documentation":"

The connection ID for the outbound cross-cluster connection.

" + }, + "ConnectionAlias":{ + "shape":"ConnectionAlias", + "documentation":"

The connection alias for the outbound cross-cluster connection.

" + }, + "ConnectionStatus":{ + "shape":"OutboundConnectionStatus", + "documentation":"

The OutboundConnectionStatus for the outbound connection.

" + } + }, + "documentation":"

Specifies details about an outbound connection.

" + }, + "OutboundConnectionStatus":{ + "type":"structure", + "members":{ + "StatusCode":{ + "shape":"OutboundConnectionStatusCode", + "documentation":"

The state code for the outbound connection. Can be one of the following:

" + }, + "Message":{ + "shape":"ConnectionStatusMessage", + "documentation":"

Verbose information for the outbound connection status.

" + } + }, + "documentation":"

The connection status of an outbound cross-cluster connection.

" + }, + "OutboundConnectionStatusCode":{ + "type":"string", + "enum":[ + "VALIDATING", + "VALIDATION_FAILED", + "PENDING_ACCEPTANCE", + "APPROVED", + "PROVISIONING", + "ACTIVE", + "REJECTING", + "REJECTED", + "DELETING", + "DELETED" + ] + }, + "OutboundConnections":{ + "type":"list", + "member":{"shape":"OutboundConnection"} + }, + "OwnerId":{ + "type":"string", + "max":12, + "min":12, + "pattern":"[0-9]+" + }, + "PackageDescription":{ + "type":"string", + "max":1024 + }, + "PackageDetails":{ + "type":"structure", + "members":{ + "PackageID":{ + "shape":"PackageID", + "documentation":"

Internal ID of the package.

" + }, + "PackageName":{ + "shape":"PackageName", + "documentation":"

User-specified name of the package.

" + }, + "PackageType":{ + "shape":"PackageType", + "documentation":"

Currently supports only TXT-DICTIONARY.

" + }, + "PackageDescription":{ + "shape":"PackageDescription", + "documentation":"

User-specified description of the package.

" + }, + "PackageStatus":{ + "shape":"PackageStatus", + "documentation":"

Current state of the package. Values are COPYING, COPY_FAILED, AVAILABLE, DELETING, and DELETE_FAILED.

" + }, + "CreatedAt":{ + "shape":"CreatedAt", + "documentation":"

The timestamp of when the package was created.

" + }, + "LastUpdatedAt":{"shape":"LastUpdated"}, + "AvailablePackageVersion":{"shape":"PackageVersion"}, + "ErrorDetails":{ + "shape":"ErrorDetails", + "documentation":"

Additional information if the package is in an error state. Null otherwise.

" + } + }, + "documentation":"

Basic information about a package.

" + }, + "PackageDetailsList":{ + "type":"list", + "member":{"shape":"PackageDetails"} + }, + "PackageID":{"type":"string"}, + "PackageName":{ + "type":"string", + "max":28, + "min":3, + "pattern":"[a-z][a-z0-9\\-]+" + }, + "PackageSource":{ + "type":"structure", + "members":{ + "S3BucketName":{ + "shape":"S3BucketName", + "documentation":"

The name of the Amazon S3 bucket containing the package.

" + }, + "S3Key":{ + "shape":"S3Key", + "documentation":"

Key (file name) of the package.

" + } + }, + "documentation":"

The Amazon S3 location for importing the package specified as S3BucketName and S3Key

" + }, + "PackageStatus":{ + "type":"string", + "enum":[ + "COPYING", + "COPY_FAILED", + "VALIDATING", + "VALIDATION_FAILED", + "AVAILABLE", + "DELETING", + "DELETED", + "DELETE_FAILED" + ] + }, + "PackageType":{ + "type":"string", + "enum":["TXT-DICTIONARY"] + }, + "PackageVersion":{"type":"string"}, + "PackageVersionHistory":{ + "type":"structure", + "members":{ + "PackageVersion":{ + "shape":"PackageVersion", + "documentation":"

The package version.

" + }, + "CommitMessage":{ + "shape":"CommitMessage", + "documentation":"

A message associated with the package version.

" + }, + "CreatedAt":{ + "shape":"CreatedAt", + "documentation":"

The timestamp of when the package was created.

" + } + }, + "documentation":"

Details of a package version.

" + }, + "PackageVersionHistoryList":{ + "type":"list", + "member":{"shape":"PackageVersionHistory"} + }, + "Password":{ + "type":"string", + "max":128, + "min":8, + "pattern":".*", + "sensitive":true + }, + "PolicyDocument":{ + "type":"string", + "documentation":"

Access policy rules for a domain service endpoints. For more information, see Configuring access policies . The maximum size of a policy document is 100 KB.

", + "max":102400, + "min":0, + "pattern":".*" + }, + "PurchaseReservedInstanceOfferingRequest":{ + "type":"structure", + "required":[ + "ReservedInstanceOfferingId", + "ReservationName" + ], + "members":{ + "ReservedInstanceOfferingId":{ + "shape":"GUID", + "documentation":"

The ID of the reserved OpenSearch instance offering to purchase.

" + }, + "ReservationName":{ + "shape":"ReservationToken", + "documentation":"

A customer-specified identifier to track this reservation.

" + }, + "InstanceCount":{ + "shape":"InstanceCount", + "documentation":"

The number of OpenSearch instances to reserve.

" + } + }, + "documentation":"

Container for parameters to PurchaseReservedInstanceOffering

" + }, + "PurchaseReservedInstanceOfferingResponse":{ + "type":"structure", + "members":{ + "ReservedInstanceId":{ + "shape":"GUID", + "documentation":"

Details of the reserved OpenSearch instance which was purchased.

" + }, + "ReservationName":{ + "shape":"ReservationToken", + "documentation":"

The customer-specified identifier used to track this reservation.

" + } + }, + "documentation":"

Represents the output of a PurchaseReservedInstanceOffering operation.

" + }, + "RecurringCharge":{ + "type":"structure", + "members":{ + "RecurringChargeAmount":{ + "shape":"Double", + "documentation":"

The monetary amount of the recurring charge.

" + }, + "RecurringChargeFrequency":{ + "shape":"String", + "documentation":"

The frequency of the recurring charge.

" + } + }, + "documentation":"

Contains the specific price and frequency of a recurring charges for a reserved OpenSearch instance, or for a reserved OpenSearch instance offering.

" + }, + "RecurringChargeList":{ + "type":"list", + "member":{"shape":"RecurringCharge"} + }, + "ReferencePath":{"type":"string"}, + "Region":{ + "type":"string", + "max":30, + "min":5, + "pattern":"[a-z][a-z0-9\\-]+" + }, + "RejectInboundConnectionRequest":{ + "type":"structure", + "required":["ConnectionId"], + "members":{ + "ConnectionId":{ + "shape":"ConnectionId", + "documentation":"

The ID of the inbound connection to reject.

", + "location":"uri", + "locationName":"ConnectionId" + } + }, + "documentation":"

Container for the parameters to the RejectInboundConnection operation.

" + }, + "RejectInboundConnectionResponse":{ + "type":"structure", + "members":{ + "Connection":{ + "shape":"InboundConnection", + "documentation":"

The InboundConnection of the rejected inbound connection.

" + } + }, + "documentation":"

The result of a RejectInboundConnection operation. Contains details about the rejected inbound connection.

" + }, + "RemoveTagsRequest":{ + "type":"structure", + "required":[ + "ARN", + "TagKeys" + ], + "members":{ + "ARN":{ + "shape":"ARN", + "documentation":"

The ARN of the domain from which you want to delete the specified tags.

" + }, + "TagKeys":{ + "shape":"StringList", + "documentation":"

The TagKey list you want to remove from the domain.

" + } + }, + "documentation":"

Container for the parameters to the RemoveTags operation. Specify the ARN for the domain from which you want to remove the specified TagKey.

" + }, + "ReservationToken":{ + "type":"string", + "max":64, + "min":5, + "pattern":".*" + }, + "ReservedInstance":{ + "type":"structure", + "members":{ + "ReservationName":{ + "shape":"ReservationToken", + "documentation":"

The customer-specified identifier to track this reservation.

" + }, + "ReservedInstanceId":{ + "shape":"GUID", + "documentation":"

The unique identifier for the reservation.

" + }, + "BillingSubscriptionId":{"shape":"Long"}, + "ReservedInstanceOfferingId":{ + "shape":"String", + "documentation":"

The offering identifier.

" + }, + "InstanceType":{ + "shape":"OpenSearchPartitionInstanceType", + "documentation":"

The OpenSearch instance type offered by the reserved instance offering.

" + }, + "StartTime":{ + "shape":"UpdateTimestamp", + "documentation":"

The time the reservation started.

" + }, + "Duration":{ + "shape":"Integer", + "documentation":"

The duration, in seconds, for which the OpenSearch instance is reserved.

" + }, + "FixedPrice":{ + "shape":"Double", + "documentation":"

The upfront fixed charge you will paid to purchase the specific reserved OpenSearch instance offering.

" + }, + "UsagePrice":{ + "shape":"Double", + "documentation":"

The rate you are charged for each hour for the domain that is using this reserved instance.

" + }, + "CurrencyCode":{ + "shape":"String", + "documentation":"

The currency code for the reserved OpenSearch instance offering.

" + }, + "InstanceCount":{ + "shape":"Integer", + "documentation":"

The number of OpenSearch instances that have been reserved.

" + }, + "State":{ + "shape":"String", + "documentation":"

The state of the reserved OpenSearch instance.

" + }, + "PaymentOption":{ + "shape":"ReservedInstancePaymentOption", + "documentation":"

The payment option as defined in the reserved OpenSearch instance offering.

" + }, + "RecurringCharges":{ + "shape":"RecurringChargeList", + "documentation":"

The charge to your account regardless of whether you are creating any domains using the instance offering.

" + } + }, + "documentation":"

Details of a reserved OpenSearch instance.

" + }, + "ReservedInstanceList":{ + "type":"list", + "member":{"shape":"ReservedInstance"} + }, + "ReservedInstanceOffering":{ + "type":"structure", + "members":{ + "ReservedInstanceOfferingId":{ + "shape":"GUID", + "documentation":"

The OpenSearch reserved instance offering identifier.

" + }, + "InstanceType":{ + "shape":"OpenSearchPartitionInstanceType", + "documentation":"

The OpenSearch instance type offered by the reserved instance offering.

" + }, + "Duration":{ + "shape":"Integer", + "documentation":"

The duration, in seconds, for which the offering will reserve the OpenSearch instance.

" + }, + "FixedPrice":{ + "shape":"Double", + "documentation":"

The upfront fixed charge you will pay to purchase the specific reserved OpenSearch instance offering.

" + }, + "UsagePrice":{ + "shape":"Double", + "documentation":"

The rate you are charged for each hour the domain that is using the offering is running.

" + }, + "CurrencyCode":{ + "shape":"String", + "documentation":"

The currency code for the reserved OpenSearch instance offering.

" + }, + "PaymentOption":{ + "shape":"ReservedInstancePaymentOption", + "documentation":"

Payment option for the reserved OpenSearch instance offering

" + }, + "RecurringCharges":{ + "shape":"RecurringChargeList", + "documentation":"

The charge to your account regardless of whether you are creating any domains using the instance offering.

" + } + }, + "documentation":"

Details of a reserved OpenSearch instance offering.

" + }, + "ReservedInstanceOfferingList":{ + "type":"list", + "member":{"shape":"ReservedInstanceOffering"} + }, + "ReservedInstancePaymentOption":{ + "type":"string", + "enum":[ + "ALL_UPFRONT", + "PARTIAL_UPFRONT", + "NO_UPFRONT" + ] + }, + "RoleArn":{ + "type":"string", + "max":2048, + "min":20, + "pattern":"arn:(aws|aws\\-cn|aws\\-us\\-gov|aws\\-iso|aws\\-iso\\-b):iam::[0-9]+:role\\/.*" + }, + "RollbackOnDisable":{ + "type":"string", + "documentation":"

The rollback state while disabling Auto-Tune for the domain. Valid values are NO_ROLLBACK and DEFAULT_ROLLBACK.

", + "enum":[ + "NO_ROLLBACK", + "DEFAULT_ROLLBACK" + ] + }, + "S3BucketName":{ + "type":"string", + "max":63, + "min":3 + }, + "S3Key":{ + "type":"string", + "max":1024, + "min":1 + }, + "SAMLEntityId":{ + "type":"string", + "max":512, + "min":8 + }, + "SAMLIdp":{ + "type":"structure", + "required":[ + "MetadataContent", + "EntityId" + ], + "members":{ + "MetadataContent":{ + "shape":"SAMLMetadata", + "documentation":"

The metadata of the SAML application in XML format.

" + }, + "EntityId":{ + "shape":"SAMLEntityId", + "documentation":"

The unique entity ID of the application in SAML identity provider.

" + } + }, + "documentation":"

The SAML identity povider's information.

" + }, + "SAMLMetadata":{ + "type":"string", + "max":1048576, + "min":1 + }, + "SAMLOptionsInput":{ + "type":"structure", + "members":{ + "Enabled":{ + "shape":"Boolean", + "documentation":"

True if SAML is enabled.

" + }, + "Idp":{ + "shape":"SAMLIdp", + "documentation":"

The SAML Identity Provider's information.

" + }, + "MasterUserName":{ + "shape":"Username", + "documentation":"

The SAML master username, which is stored in the Amazon OpenSearch Service domain's internal database.

" + }, + "MasterBackendRole":{ + "shape":"BackendRole", + "documentation":"

The backend role that the SAML master user is mapped to.

" + }, + "SubjectKey":{ + "shape":"String", + "documentation":"

Element of the SAML assertion to use for username. Default is NameID.

" + }, + "RolesKey":{ + "shape":"String", + "documentation":"

Element of the SAML assertion to use for backend roles. Default is roles.

" + }, + "SessionTimeoutMinutes":{ + "shape":"IntegerClass", + "documentation":"

The duration, in minutes, after which a user session becomes inactive. Acceptable values are between 1 and 1440, and the default value is 60.

" + } + }, + "documentation":"

The SAML application configuration for the domain.

" + }, + "SAMLOptionsOutput":{ + "type":"structure", + "members":{ + "Enabled":{ + "shape":"Boolean", + "documentation":"

True if SAML is enabled.

" + }, + "Idp":{ + "shape":"SAMLIdp", + "documentation":"

Describes the SAML identity provider's information.

" + }, + "SubjectKey":{ + "shape":"String", + "documentation":"

The key used for matching the SAML subject attribute.

" + }, + "RolesKey":{ + "shape":"String", + "documentation":"

The key used for matching the SAML roles attribute.

" + }, + "SessionTimeoutMinutes":{ + "shape":"IntegerClass", + "documentation":"

The duration, in minutes, after which a user session becomes inactive.

" + } + }, + "documentation":"

Describes the SAML application configured for the domain.

" + }, + "ScheduledAutoTuneActionType":{ + "type":"string", + "documentation":"

The Auto-Tune action type. Valid values are JVM_HEAP_SIZE_TUNING, and JVM_YOUNG_GEN_TUNING.

", + "enum":[ + "JVM_HEAP_SIZE_TUNING", + "JVM_YOUNG_GEN_TUNING" + ] + }, + "ScheduledAutoTuneDescription":{ + "type":"string", + "documentation":"

The Auto-Tune action description.

" + }, + "ScheduledAutoTuneDetails":{ + "type":"structure", + "members":{ + "Date":{ + "shape":"AutoTuneDate", + "documentation":"

The timestamp of the Auto-Tune action scheduled for the domain.

" + }, + "ActionType":{ + "shape":"ScheduledAutoTuneActionType", + "documentation":"

The Auto-Tune action type. Valid values are JVM_HEAP_SIZE_TUNING and JVM_YOUNG_GEN_TUNING.

" + }, + "Action":{ + "shape":"ScheduledAutoTuneDescription", + "documentation":"

The Auto-Tune action description.

" + }, + "Severity":{ + "shape":"ScheduledAutoTuneSeverityType", + "documentation":"

The Auto-Tune action severity. Valid values are LOW, MEDIUM, and HIGH.

" + } + }, + "documentation":"

Specifies details about the scheduled Auto-Tune action. See Auto-Tune for Amazon OpenSearch Service for more information.

" + }, + "ScheduledAutoTuneSeverityType":{ + "type":"string", + "documentation":"

The Auto-Tune action severity. Valid values are LOW, MEDIUM, and HIGH.

", + "enum":[ + "LOW", + "MEDIUM", + "HIGH" + ] + }, + "ServiceSoftwareOptions":{ + "type":"structure", + "members":{ + "CurrentVersion":{ + "shape":"String", + "documentation":"

The current service software version present on the domain.

" + }, + "NewVersion":{ + "shape":"String", + "documentation":"

The new service software version if one is available.

" + }, + "UpdateAvailable":{ + "shape":"Boolean", + "documentation":"

True if you're able to update your service software version. False if you can't update your service software version.

" + }, + "Cancellable":{ + "shape":"Boolean", + "documentation":"

True if you're able to cancel your service software version update. False if you can't cancel your service software update.

" + }, + "UpdateStatus":{ + "shape":"DeploymentStatus", + "documentation":"

The status of your service software update. This field can take the following values: ELIGIBLE, PENDING_UPDATE, IN_PROGRESS, COMPLETED, and NOT_ELIGIBLE.

" + }, + "Description":{ + "shape":"String", + "documentation":"

The description of the UpdateStatus.

" + }, + "AutomatedUpdateDate":{ + "shape":"DeploymentCloseDateTimeStamp", + "documentation":"

The timestamp, in Epoch time, until which you can manually request a service software update. After this date, we automatically update your service software.

" + }, + "OptionalDeployment":{ + "shape":"Boolean", + "documentation":"

True if a service software is never automatically updated. False if a service software is automatically updated after AutomatedUpdateDate.

" + } + }, + "documentation":"

The current options of an domain service software options.

" + }, + "ServiceUrl":{ + "type":"string", + "documentation":"

The endpoint to which service requests are submitted. For example, search-imdb-movies-oopcnjfn6ugofer3zx5iadxxca.eu-west-1.es.amazonaws.com or doc-imdb-movies-oopcnjfn6ugofer3zx5iadxxca.eu-west-1.es.amazonaws.com.

" + }, + "SnapshotOptions":{ + "type":"structure", + "members":{ + "AutomatedSnapshotStartHour":{ + "shape":"IntegerClass", + "documentation":"

The time, in UTC format, when the service takes a daily automated snapshot of the specified domain. Default is 0 hours.

" + } + }, + "documentation":"

The time, in UTC format, when the service takes a daily automated snapshot of the specified domain. Default is 0 hours.

" + }, + "SnapshotOptionsStatus":{ + "type":"structure", + "required":[ + "Options", + "Status" + ], + "members":{ + "Options":{ + "shape":"SnapshotOptions", + "documentation":"

The daily snapshot options specified for the domain.

" + }, + "Status":{ + "shape":"OptionStatus", + "documentation":"

The status of a daily automated snapshot.

" + } + }, + "documentation":"

Status of a daily automated snapshot.

" + }, + "StartAt":{"type":"timestamp"}, + "StartServiceSoftwareUpdateRequest":{ + "type":"structure", + "required":["DomainName"], + "members":{ + "DomainName":{ + "shape":"DomainName", + "documentation":"

The name of the domain that you want to update to the latest service software.

" + } + }, + "documentation":"

Container for the parameters to the StartServiceSoftwareUpdate operation. Specifies the name of the domain to schedule a service software update for.

" + }, + "StartServiceSoftwareUpdateResponse":{ + "type":"structure", + "members":{ + "ServiceSoftwareOptions":{ + "shape":"ServiceSoftwareOptions", + "documentation":"

The current status of the OpenSearch service software update.

" + } + }, + "documentation":"

The result of a StartServiceSoftwareUpdate operation. Contains the status of the update.

" + }, + "StartTimestamp":{"type":"timestamp"}, + "StorageSubTypeName":{ + "type":"string", + "documentation":"

Sub-type of the given storage type. List of available sub-storage options: \"instance\" storageType has no storageSubType. \"ebs\" storageType has the following valid storageSubTypes:

  1. standard
  2. gp2
  3. io1
See VolumeType for more information regarding each EBS storage option.

" + }, + "StorageType":{ + "type":"structure", + "members":{ + "StorageTypeName":{"shape":"StorageTypeName"}, + "StorageSubTypeName":{"shape":"StorageSubTypeName"}, + "StorageTypeLimits":{ + "shape":"StorageTypeLimitList", + "documentation":"

Limits that are applicable for the given storage type.

" + } + }, + "documentation":"

StorageTypes represents the list of storage-related types and their attributes that are available for a given InstanceType.

" + }, + "StorageTypeLimit":{ + "type":"structure", + "members":{ + "LimitName":{ + "shape":"LimitName", + "documentation":"

Name of storage limits that are applicable for the given storage type. If StorageType is \"ebs\", the following storage options are applicable:

  1. MinimumVolumeSize
  2. Minimum amount of volume size that is applicable for the given storage type. Can be empty if not applicable.
  3. MaximumVolumeSize
  4. Maximum amount of volume size that is applicable for the given storage type. Can be empty if not applicable.
  5. MaximumIops
  6. Maximum amount of Iops that is applicable for given the storage type. Can be empty if not applicable.
  7. MinimumIops
  8. Minimum amount of Iops that is applicable for given the storage type. Can be empty if not applicable.

" + }, + "LimitValues":{ + "shape":"LimitValueList", + "documentation":"

Values for the StorageTypeLimit$LimitName .

" + } + }, + "documentation":"

Limits that are applicable for the given storage type.

" + }, + "StorageTypeLimitList":{ + "type":"list", + "member":{"shape":"StorageTypeLimit"} + }, + "StorageTypeList":{ + "type":"list", + "member":{"shape":"StorageType"} + }, + "StorageTypeName":{ + "type":"string", + "documentation":"

Type of storage. List of available storage options:

  1. instance
  2. Built-in storage available for the instance
  3. ebs
  4. Elastic block storage attached to the instance

" + }, + "String":{"type":"string"}, + "StringList":{ + "type":"list", + "member":{"shape":"String"} + }, + "TLSSecurityPolicy":{ + "type":"string", + "enum":[ + "Policy-Min-TLS-1-0-2019-07", + "Policy-Min-TLS-1-2-2019-07" + ] + }, + "Tag":{ + "type":"structure", + "required":[ + "Key", + "Value" + ], + "members":{ + "Key":{ + "shape":"TagKey", + "documentation":"

The TagKey, the name of the tag. Tag keys must be unique for the domain to which they are attached.

" + }, + "Value":{ + "shape":"TagValue", + "documentation":"

The TagValue, the value assigned to the corresponding tag key. Tag values can be null and don't have to be unique in a tag set. For example, you can have a key value pair in a tag set of project : Trinity and cost-center : Trinity

" + } + }, + "documentation":"

A key value pair for a resource tag.

" + }, + "TagKey":{ + "type":"string", + "documentation":"

A string of length from 1 to 128 characters that specifies the key for a tag. Tag keys must be unique for the domain to which they're attached.

", + "max":128, + "min":1, + "pattern":".*" + }, + "TagList":{ + "type":"list", + "member":{"shape":"Tag"}, + "documentation":"

A list of Tag.

" + }, + "TagValue":{ + "type":"string", + "documentation":"

A string of length from 0 to 256 characters that specifies the value for a tag. Tag values can be null and don't have to be unique in a tag set.

", + "max":256, + "min":0, + "pattern":".*" + }, + "TimeUnit":{ + "type":"string", + "documentation":"

The unit of a maintenance schedule duration. Valid value is HOUR. See Auto-Tune for Amazon OpenSearch Service for more information.

", + "enum":["HOURS"] + }, + "UIntValue":{ + "type":"integer", + "min":0 + }, + "UpdateDomainConfigRequest":{ + "type":"structure", + "required":["DomainName"], + "members":{ + "DomainName":{ + "shape":"DomainName", + "documentation":"

The name of the domain you're updating.

", + "location":"uri", + "locationName":"DomainName" + }, + "ClusterConfig":{ + "shape":"ClusterConfig", + "documentation":"

The type and number of instances to instantiate for the domain cluster.

" + }, + "EBSOptions":{ + "shape":"EBSOptions", + "documentation":"

Specify the type and size of the EBS volume to use.

" + }, + "SnapshotOptions":{ + "shape":"SnapshotOptions", + "documentation":"

Option to set the time, in UTC format, for the daily automated snapshot. Default value is 0 hours.

" + }, + "VPCOptions":{ + "shape":"VPCOptions", + "documentation":"

Options to specify the subnets and security groups for the VPC endpoint. For more information, see Launching your Amazon OpenSearch Service domains using a VPC .

" + }, + "CognitoOptions":{ + "shape":"CognitoOptions", + "documentation":"

Options to specify the Cognito user and identity pools for OpenSearch Dashboards authentication. For more information, see Configuring Amazon Cognito authentication for OpenSearch Dashboards.

" + }, + "AdvancedOptions":{ + "shape":"AdvancedOptions", + "documentation":"

Modifies the advanced option to allow references to indices in an HTTP request body. Must be false when configuring access to individual sub-resources. By default, the value is true. See Advanced options for more information.

" + }, + "AccessPolicies":{ + "shape":"PolicyDocument", + "documentation":"

IAM access policy as a JSON-formatted string.

" + }, + "LogPublishingOptions":{ + "shape":"LogPublishingOptions", + "documentation":"

Map of LogType and LogPublishingOption, each containing options to publish a given type of OpenSearch log.

" + }, + "EncryptionAtRestOptions":{ + "shape":"EncryptionAtRestOptions", + "documentation":"

Specifies encryption of data at rest options.

" + }, + "DomainEndpointOptions":{ + "shape":"DomainEndpointOptions", + "documentation":"

Options to specify configuration that will be applied to the domain endpoint.

" + }, + "NodeToNodeEncryptionOptions":{ + "shape":"NodeToNodeEncryptionOptions", + "documentation":"

Specifies node-to-node encryption options.

" + }, + "AdvancedSecurityOptions":{ + "shape":"AdvancedSecurityOptionsInput", + "documentation":"

Specifies advanced security options.

" + }, + "AutoTuneOptions":{ + "shape":"AutoTuneOptions", + "documentation":"

Specifies Auto-Tune options.

" + } + }, + "documentation":"

Container for the parameters to the UpdateDomain operation. Specifies the type and number of instances in the domain cluster.

" + }, + "UpdateDomainConfigResponse":{ + "type":"structure", + "required":["DomainConfig"], + "members":{ + "DomainConfig":{ + "shape":"DomainConfig", + "documentation":"

The status of the updated domain.

" + } + }, + "documentation":"

The result of an UpdateDomain request. Contains the status of the domain being updated.

" + }, + "UpdatePackageRequest":{ + "type":"structure", + "required":[ + "PackageID", + "PackageSource" + ], + "members":{ + "PackageID":{ + "shape":"PackageID", + "documentation":"

The unique identifier for the package.

" + }, + "PackageSource":{"shape":"PackageSource"}, + "PackageDescription":{ + "shape":"PackageDescription", + "documentation":"

A new description of the package.

" + }, + "CommitMessage":{ + "shape":"CommitMessage", + "documentation":"

A commit message for the new version which is shown as part of GetPackageVersionHistoryResponse.

" + } + }, + "documentation":"

Container for request parameters to the UpdatePackage operation.

" + }, + "UpdatePackageResponse":{ + "type":"structure", + "members":{ + "PackageDetails":{ + "shape":"PackageDetails", + "documentation":"

Information about the package.

" + } + }, + "documentation":"

Container for the response returned by the UpdatePackage operation.

" + }, + "UpdateTimestamp":{"type":"timestamp"}, + "UpgradeDomainRequest":{ + "type":"structure", + "required":[ + "DomainName", + "TargetVersion" + ], + "members":{ + "DomainName":{"shape":"DomainName"}, + "TargetVersion":{ + "shape":"VersionString", + "documentation":"

The version of OpenSearch you intend to upgrade the domain to.

" + }, + "PerformCheckOnly":{ + "shape":"Boolean", + "documentation":"

When true, indicates that an upgrade eligibility check needs to be performed. Does not actually perform the upgrade.

" + }, + "AdvancedOptions":{"shape":"AdvancedOptions"} + }, + "documentation":"

Container for the request parameters to UpgradeDomain operation.

" + }, + "UpgradeDomainResponse":{ + "type":"structure", + "members":{ + "UpgradeId":{"shape":"String"}, + "DomainName":{"shape":"DomainName"}, + "TargetVersion":{ + "shape":"VersionString", + "documentation":"

The version of OpenSearch that you intend to upgrade the domain to.

" + }, + "PerformCheckOnly":{ + "shape":"Boolean", + "documentation":"

When true, indicates that an upgrade eligibility check needs to be performed. Does not actually perform the upgrade.

" + }, + "AdvancedOptions":{"shape":"AdvancedOptions"} + }, + "documentation":"

Container for response returned by UpgradeDomain operation.

" + }, + "UpgradeHistory":{ + "type":"structure", + "members":{ + "UpgradeName":{ + "shape":"UpgradeName", + "documentation":"

A string that briefly describes the upgrade.

" + }, + "StartTimestamp":{ + "shape":"StartTimestamp", + "documentation":"

UTC timestamp at which the upgrade API call was made in \"yyyy-MM-ddTHH:mm:ssZ\" format.

" + }, + "UpgradeStatus":{ + "shape":"UpgradeStatus", + "documentation":"

The current status of the upgrade. The status can take one of the following values:

" + }, + "StepsList":{ + "shape":"UpgradeStepsList", + "documentation":"

A list of UpgradeStepItem s representing information about each step performed as part of a specific upgrade or upgrade eligibility check.

" + } + }, + "documentation":"

History of the last 10 upgrades and upgrade eligibility checks.

" + }, + "UpgradeHistoryList":{ + "type":"list", + "member":{"shape":"UpgradeHistory"} + }, + "UpgradeName":{"type":"string"}, + "UpgradeStatus":{ + "type":"string", + "enum":[ + "IN_PROGRESS", + "SUCCEEDED", + "SUCCEEDED_WITH_ISSUES", + "FAILED" + ] + }, + "UpgradeStep":{ + "type":"string", + "enum":[ + "PRE_UPGRADE_CHECK", + "SNAPSHOT", + "UPGRADE" + ] + }, + "UpgradeStepItem":{ + "type":"structure", + "members":{ + "UpgradeStep":{ + "shape":"UpgradeStep", + "documentation":"

One of three steps an upgrade or upgrade eligibility check goes through:

" + }, + "UpgradeStepStatus":{ + "shape":"UpgradeStatus", + "documentation":"

The current status of the upgrade. The status can take one of the following values:

" + }, + "Issues":{ + "shape":"Issues", + "documentation":"

A list of strings containing detailed information about the errors encountered in a particular step.

" + }, + "ProgressPercent":{ + "shape":"Double", + "documentation":"

The floating point value representing the progress percentage of a particular step.

" + } + }, + "documentation":"

Represents a single step of the upgrade or upgrade eligibility check workflow.

" + }, + "UpgradeStepsList":{ + "type":"list", + "member":{"shape":"UpgradeStepItem"} + }, + "UserPoolId":{ + "type":"string", + "max":55, + "min":1, + "pattern":"[\\w-]+_[0-9a-zA-Z]+" + }, + "Username":{ + "type":"string", + "max":64, + "min":1, + "pattern":".*", + "sensitive":true + }, + "VPCDerivedInfo":{ + "type":"structure", + "members":{ + "VPCId":{ + "shape":"String", + "documentation":"

The VPC ID for the domain. Exists only if the domain was created with VPCOptions.

" + }, + "SubnetIds":{ + "shape":"StringList", + "documentation":"

The subnets for the VPC endpoint.

" + }, + "AvailabilityZones":{ + "shape":"StringList", + "documentation":"

The Availability Zones for the domain. Exists only if the domain was created with VPCOptions.

" + }, + "SecurityGroupIds":{ + "shape":"StringList", + "documentation":"

The security groups for the VPC endpoint.

" + } + }, + "documentation":"

Options to specify the subnets and security groups for the VPC endpoint. For more information, see Launching your Amazon OpenSearch Service domains using a VPC.

" + }, + "VPCDerivedInfoStatus":{ + "type":"structure", + "required":[ + "Options", + "Status" + ], + "members":{ + "Options":{ + "shape":"VPCDerivedInfo", + "documentation":"

The VPC options for the specified domain.

" + }, + "Status":{ + "shape":"OptionStatus", + "documentation":"

The status of the VPC options for the specified domain.

" + } + }, + "documentation":"

Status of the VPC options for the specified domain.

" + }, + "VPCOptions":{ + "type":"structure", + "members":{ + "SubnetIds":{ + "shape":"StringList", + "documentation":"

The subnets for the VPC endpoint.

" + }, + "SecurityGroupIds":{ + "shape":"StringList", + "documentation":"

The security groups for the VPC endpoint.

" + } + }, + "documentation":"

Options to specify the subnets and security groups for the VPC endpoint. For more information, see Launching your Amazon OpenSearch Service domains using a VPC.

" + }, + "ValueStringList":{ + "type":"list", + "member":{"shape":"NonEmptyString"}, + "min":1 + }, + "VersionList":{ + "type":"list", + "member":{"shape":"VersionString"}, + "documentation":"

List of supported OpenSearch versions.

" + }, + "VersionStatus":{ + "type":"structure", + "required":[ + "Options", + "Status" + ], + "members":{ + "Options":{ + "shape":"VersionString", + "documentation":"

The OpenSearch version for the specified OpenSearch domain.

" + }, + "Status":{ + "shape":"OptionStatus", + "documentation":"

The status of the OpenSearch version options for the specified OpenSearch domain.

" + } + }, + "documentation":"

The status of the OpenSearch version options for the specified OpenSearch domain.

" + }, + "VersionString":{ + "type":"string", + "max":18, + "min":14, + "pattern":"^Elasticsearch_[0-9]{1}\\.[0-9]{1,2}$|^OpenSearch_[0-9]{1,2}\\.[0-9]{1,2}$" + }, + "VolumeType":{ + "type":"string", + "documentation":"

The type of EBS volume, standard, gp2, or io1. See Configuring EBS-based Storage for more information.

", + "enum":[ + "standard", + "gp2", + "io1" + ] + }, + "ZoneAwarenessConfig":{ + "type":"structure", + "members":{ + "AvailabilityZoneCount":{ + "shape":"IntegerClass", + "documentation":"

An integer value to indicate the number of availability zones for a domain when zone awareness is enabled. This should be equal to number of subnets if VPC endpoints is enabled.

" + } + }, + "documentation":"

The zone awareness configuration for the domain cluster, such as the number of availability zones.

" + } + }, + "documentation":"Amazon OpenSearch Configuration Service

Use the Amazon OpenSearch configuration API to create, configure, and manage Amazon OpenSearch Service domains.

For sample code that uses the configuration API, see the Amazon OpenSearch Service Developer Guide. The guide also contains sample code for sending signed HTTP requests to the OpenSearch APIs.

The endpoint for configuration service requests is region-specific: es.region.amazonaws.com. For example, es.us-east-1.amazonaws.com. For a current list of supported regions and endpoints, see Regions and Endpoints.

" +} diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/aws-ecs-integ.template.json b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/aws-ecs-integ.template.json new file mode 100644 index 0000000000000..8cf5b0a33d524 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/aws-ecs-integ.template.json @@ -0,0 +1,1263 @@ +{ + "Resources": { + "vpcA2121C38": { + "Type": "AWS::EC2::VPC", + "Properties": { + "CidrBlock": "10.0.0.0/16", + "EnableDnsHostnames": true, + "EnableDnsSupport": true, + "InstanceTenancy": "default", + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/vpc" + } + ] + } + }, + "vpcpublicSubnet1SubnetA635257E": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "vpcA2121C38" + }, + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.0.0/24", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "public" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Public" + }, + { + "Key": "Name", + "Value": "aws-ecs-integ/vpc/publicSubnet1" + } + ] + } + }, + "vpcpublicSubnet1RouteTableA38152FE": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "vpcA2121C38" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/vpc/publicSubnet1" + } + ] + } + }, + "vpcpublicSubnet1RouteTableAssociationB46101B8": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "vpcpublicSubnet1RouteTableA38152FE" + }, + "SubnetId": { + "Ref": "vpcpublicSubnet1SubnetA635257E" + } + } + }, + "vpcpublicSubnet1DefaultRouteF0973989": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "vpcpublicSubnet1RouteTableA38152FE" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "vpcIGWE57CBDCA" + } + }, + "DependsOn": [ + "vpcVPCGW7984C166" + ] + }, + "vpcpublicSubnet2Subnet027D165B": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "vpcA2121C38" + }, + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.1.0/24", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "public" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Public" + }, + { + "Key": "Name", + "Value": "aws-ecs-integ/vpc/publicSubnet2" + } + ] + } + }, + "vpcpublicSubnet2RouteTableA6135437": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "vpcA2121C38" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/vpc/publicSubnet2" + } + ] + } + }, + "vpcpublicSubnet2RouteTableAssociation73F6478A": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "vpcpublicSubnet2RouteTableA6135437" + }, + "SubnetId": { + "Ref": "vpcpublicSubnet2Subnet027D165B" + } + } + }, + "vpcpublicSubnet2DefaultRoute13685A07": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "vpcpublicSubnet2RouteTableA6135437" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "vpcIGWE57CBDCA" + } + }, + "DependsOn": [ + "vpcVPCGW7984C166" + ] + }, + "vpcIGWE57CBDCA": { + "Type": "AWS::EC2::InternetGateway", + "Properties": { + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/vpc" + } + ] + } + }, + "vpcVPCGW7984C166": { + "Type": "AWS::EC2::VPCGatewayAttachment", + "Properties": { + "VpcId": { + "Ref": "vpcA2121C38" + }, + "InternetGatewayId": { + "Ref": "vpcIGWE57CBDCA" + } + } + }, + "zoneEB40FF1E": { + "Type": "AWS::Route53::HostedZone", + "Properties": { + "Name": "myexample.com." + } + }, + "laterRecordD393EDE6": { + "Type": "AWS::Route53::RecordSet", + "Properties": { + "Name": "u-record.myexample.com.", + "Type": "CNAME", + "HostedZoneId": { + "Ref": "zoneEB40FF1E" + }, + "ResourceRecords": [ + "console.aws.amazon.com" + ], + "TTL": "1800" + } + }, + "productionenvironmentclusterC6599D2D": { + "Type": "AWS::ECS::Cluster" + }, + "nametaskdefinitionTaskRole50FE844E": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + }, + "DependsOn": [ + "nameserviceTaskRecordManagerCleanupE19F1043", + "nameserviceTaskRecordManagerRuleRunningCD85F46F", + "nameserviceTaskRecordManagerRuleStopped66D08B70" + ] + }, + "nametaskdefinition690762BB": { + "Type": "AWS::ECS::TaskDefinition", + "Properties": { + "ContainerDefinitions": [ + { + "Cpu": 256, + "Environment": [ + { + "Name": "PORT", + "Value": "80" + } + ], + "Essential": true, + "Image": "nathanpeck/name", + "Memory": 512, + "Name": "app", + "PortMappings": [ + { + "ContainerPort": 80, + "Protocol": "tcp" + } + ], + "Ulimits": [ + { + "HardLimit": 1024000, + "Name": "nofile", + "SoftLimit": 1024000 + } + ] + } + ], + "Cpu": "256", + "Family": "awsecsintegnametaskdefinition0EA6A1A0", + "Memory": "512", + "NetworkMode": "awsvpc", + "RequiresCompatibilities": [ + "EC2", + "FARGATE" + ], + "TaskRoleArn": { + "Fn::GetAtt": [ + "nametaskdefinitionTaskRole50FE844E", + "Arn" + ] + } + }, + "DependsOn": [ + "nameserviceTaskRecordManagerCleanupE19F1043", + "nameserviceTaskRecordManagerRuleRunningCD85F46F", + "nameserviceTaskRecordManagerRuleStopped66D08B70" + ] + }, + "nameserviceService8015C8D6": { + "Type": "AWS::ECS::Service", + "Properties": { + "Cluster": { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "DeploymentConfiguration": { + "MaximumPercent": 200, + "MinimumHealthyPercent": 100 + }, + "DesiredCount": 1, + "EnableECSManagedTags": false, + "LaunchType": "FARGATE", + "NetworkConfiguration": { + "AwsvpcConfiguration": { + "AssignPublicIp": "ENABLED", + "SecurityGroups": [ + { + "Fn::GetAtt": [ + "nameserviceSecurityGroup33F4662C", + "GroupId" + ] + } + ], + "Subnets": [ + { + "Ref": "vpcpublicSubnet1SubnetA635257E" + }, + { + "Ref": "vpcpublicSubnet2Subnet027D165B" + } + ] + } + }, + "TaskDefinition": { + "Ref": "nametaskdefinition690762BB" + } + } + }, + "nameserviceSecurityGroup33F4662C": { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "aws-ecs-integ/name-service/SecurityGroup", + "SecurityGroupEgress": [ + { + "CidrIp": "0.0.0.0/0", + "Description": "Allow all outbound traffic by default", + "IpProtocol": "-1" + } + ], + "SecurityGroupIngress": [ + { + "CidrIp": "0.0.0.0/0", + "Description": "Accept inbound traffic on traffic port from anywhere", + "FromPort": 80, + "IpProtocol": "tcp", + "ToPort": 80 + } + ], + "VpcId": { + "Ref": "vpcA2121C38" + } + } + }, + "nameserviceTaskRecordManagerEventsDLB8F13E1E": { + "Type": "AWS::SQS::Queue", + "Properties": { + "MessageRetentionPeriod": 1209600 + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "nameserviceTaskRecordManagerEventsQueueF805A6C1": { + "Type": "AWS::SQS::Queue", + "Properties": { + "RedrivePolicy": { + "deadLetterTargetArn": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerEventsDLB8F13E1E", + "Arn" + ] + }, + "maxReceiveCount": 500 + }, + "VisibilityTimeout": 30 + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "nameserviceTaskRecordManagerEventsQueuePolicy65CC6F9E": { + "Type": "AWS::SQS::QueuePolicy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl" + ], + "Condition": { + "ArnEquals": { + "aws:SourceArn": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerRuleRunningCD85F46F", + "Arn" + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "events.amazonaws.com" + }, + "Resource": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerEventsQueueF805A6C1", + "Arn" + ] + } + }, + { + "Action": [ + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl" + ], + "Condition": { + "ArnEquals": { + "aws:SourceArn": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerRuleStopped66D08B70", + "Arn" + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "events.amazonaws.com" + }, + "Resource": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerEventsQueueF805A6C1", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "Queues": [ + { + "Ref": "nameserviceTaskRecordManagerEventsQueueF805A6C1" + } + ] + } + }, + "nameserviceTaskRecordManagerRecordsA4648C6E": { + "Type": "AWS::DynamoDB::Table", + "Properties": { + "KeySchema": [ + { + "AttributeName": "cluster_service", + "KeyType": "HASH" + } + ], + "AttributeDefinitions": [ + { + "AttributeName": "cluster_service", + "AttributeType": "S" + } + ], + "BillingMode": "PAY_PER_REQUEST" + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "nameserviceTaskRecordManagerRuleRunningCD85F46F": { + "Type": "AWS::Events::Rule", + "Properties": { + "EventPattern": { + "source": [ + "aws.ecs" + ], + "detail-type": [ + "ECS Task State Change" + ], + "detail": { + "clusterArn": [ + { + "Fn::GetAtt": [ + "productionenvironmentclusterC6599D2D", + "Arn" + ] + } + ], + "lastStatus": [ + "RUNNING" + ], + "desiredStatus": [ + "RUNNING" + ] + } + }, + "State": "ENABLED", + "Targets": [ + { + "Arn": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerEventsQueueF805A6C1", + "Arn" + ] + }, + "Id": "Target0" + } + ] + } + }, + "nameserviceTaskRecordManagerRuleStopped66D08B70": { + "Type": "AWS::Events::Rule", + "Properties": { + "EventPattern": { + "source": [ + "aws.ecs" + ], + "detail-type": [ + "ECS Task State Change" + ], + "detail": { + "clusterArn": [ + { + "Fn::GetAtt": [ + "productionenvironmentclusterC6599D2D", + "Arn" + ] + } + ], + "lastStatus": [ + "STOPPED" + ], + "desiredStatus": [ + "STOPPED" + ] + } + }, + "State": "ENABLED", + "Targets": [ + { + "Arn": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerEventsQueueF805A6C1", + "Arn" + ] + }, + "Id": "Target0" + } + ] + } + }, + "nameserviceTaskRecordManagerEventHandlerServiceRoleE66EE52A": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "nameserviceTaskRecordManagerEventHandlerServiceRoleDefaultPolicy96DD8140": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "ec2:DescribeNetworkInterfaces", + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": [ + "route53:ChangeResourceRecordSets", + "route53:ListResourceRecordSets" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":route53:::hostedzone/", + { + "Ref": "zoneEB40FF1E" + } + ] + ] + } + }, + { + "Action": [ + "sqs:ReceiveMessage", + "sqs:ChangeMessageVisibility", + "sqs:GetQueueUrl", + "sqs:DeleteMessage", + "sqs:GetQueueAttributes" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerEventsQueueF805A6C1", + "Arn" + ] + } + }, + { + "Action": [ + "dynamodb:BatchGetItem", + "dynamodb:GetRecords", + "dynamodb:GetShardIterator", + "dynamodb:Query", + "dynamodb:GetItem", + "dynamodb:Scan", + "dynamodb:ConditionCheckItem", + "dynamodb:BatchWriteItem", + "dynamodb:PutItem", + "dynamodb:UpdateItem", + "dynamodb:DeleteItem", + "dynamodb:DescribeTable" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerRecordsA4648C6E", + "Arn" + ] + }, + { + "Ref": "AWS::NoValue" + } + ] + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "nameserviceTaskRecordManagerEventHandlerServiceRoleDefaultPolicy96DD8140", + "Roles": [ + { + "Ref": "nameserviceTaskRecordManagerEventHandlerServiceRoleE66EE52A" + } + ] + } + }, + "nameserviceTaskRecordManagerEventHandler4B8C6905": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Ref": "AssetParameters8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725dS3Bucket1E7F92B6" + }, + "S3Key": { + "Fn::Join": [ + "", + [ + { + "Fn::Select": [ + 0, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParameters8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725dS3VersionKey86FCA825" + } + ] + } + ] + }, + { + "Fn::Select": [ + 1, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParameters8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725dS3VersionKey86FCA825" + } + ] + } + ] + } + ] + ] + } + }, + "Role": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerEventHandlerServiceRoleE66EE52A", + "Arn" + ] + }, + "Environment": { + "Variables": { + "HOSTED_ZONE_ID": { + "Ref": "zoneEB40FF1E" + }, + "RECORD_NAME": "test-record.myexample.com", + "RECORDS_TABLE": { + "Ref": "nameserviceTaskRecordManagerRecordsA4648C6E" + }, + "CLUSTER_ARN": { + "Fn::GetAtt": [ + "productionenvironmentclusterC6599D2D", + "Arn" + ] + }, + "SERVICE_NAME": { + "Fn::GetAtt": [ + "nameserviceService8015C8D6", + "Name" + ] + } + } + }, + "Handler": "index.queue_handler", + "ReservedConcurrentExecutions": 1, + "Runtime": "python3.8", + "Timeout": 30 + }, + "DependsOn": [ + "nameserviceTaskRecordManagerEventHandlerServiceRoleDefaultPolicy96DD8140", + "nameserviceTaskRecordManagerEventHandlerServiceRoleE66EE52A" + ] + }, + "nameserviceTaskRecordManagerEventHandlerSqsEventSourceawsecsintegnameserviceTaskRecordManagerEventsQueueC5EE9A869F1EB155": { + "Type": "AWS::Lambda::EventSourceMapping", + "Properties": { + "FunctionName": { + "Ref": "nameserviceTaskRecordManagerEventHandler4B8C6905" + }, + "EventSourceArn": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerEventsQueueF805A6C1", + "Arn" + ] + } + } + }, + "nameserviceTaskRecordManagerCleanupResourceProviderHandlerServiceRoleCCA462F0": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "nameserviceTaskRecordManagerCleanupResourceProviderHandlerServiceRoleDefaultPolicy7D095576": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "route53:ChangeResourceRecordSets", + "route53:ListResourceRecordSets" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":route53:::hostedzone/", + { + "Ref": "zoneEB40FF1E" + } + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "nameserviceTaskRecordManagerCleanupResourceProviderHandlerServiceRoleDefaultPolicy7D095576", + "Roles": [ + { + "Ref": "nameserviceTaskRecordManagerCleanupResourceProviderHandlerServiceRoleCCA462F0" + } + ] + } + }, + "nameserviceTaskRecordManagerCleanupResourceProviderHandler08068F99": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Ref": "AssetParameters8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725dS3Bucket1E7F92B6" + }, + "S3Key": { + "Fn::Join": [ + "", + [ + { + "Fn::Select": [ + 0, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParameters8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725dS3VersionKey86FCA825" + } + ] + } + ] + }, + { + "Fn::Select": [ + 1, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParameters8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725dS3VersionKey86FCA825" + } + ] + } + ] + } + ] + ] + } + }, + "Role": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerCleanupResourceProviderHandlerServiceRoleCCA462F0", + "Arn" + ] + }, + "Handler": "index.cleanup_resource_handler", + "Runtime": "python3.8", + "Timeout": 300 + }, + "DependsOn": [ + "nameserviceTaskRecordManagerCleanupResourceProviderHandlerServiceRoleDefaultPolicy7D095576", + "nameserviceTaskRecordManagerCleanupResourceProviderHandlerServiceRoleCCA462F0" + ] + }, + "nameserviceTaskRecordManagerCleanupResourceProviderframeworkonEventServiceRoleF0570BD0": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "nameserviceTaskRecordManagerCleanupResourceProviderframeworkonEventServiceRoleDefaultPolicy350D6FAC": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerCleanupResourceProviderHandler08068F99", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerCleanupResourceProviderHandler08068F99", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "nameserviceTaskRecordManagerCleanupResourceProviderframeworkonEventServiceRoleDefaultPolicy350D6FAC", + "Roles": [ + { + "Ref": "nameserviceTaskRecordManagerCleanupResourceProviderframeworkonEventServiceRoleF0570BD0" + } + ] + } + }, + "nameserviceTaskRecordManagerCleanupResourceProviderframeworkonEvent9B27C899": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Ref": "AssetParameters8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9S3Bucket40DFAF90" + }, + "S3Key": { + "Fn::Join": [ + "", + [ + { + "Fn::Select": [ + 0, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParameters8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9S3VersionKey36104212" + } + ] + } + ] + }, + { + "Fn::Select": [ + 1, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParameters8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9S3VersionKey36104212" + } + ] + } + ] + } + ] + ] + } + }, + "Role": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerCleanupResourceProviderframeworkonEventServiceRoleF0570BD0", + "Arn" + ] + }, + "Description": "AWS CDK resource provider framework - onEvent (aws-ecs-integ/name-service/TaskRecordManager/CleanupResourceProvider)", + "Environment": { + "Variables": { + "USER_ON_EVENT_FUNCTION_ARN": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerCleanupResourceProviderHandler08068F99", + "Arn" + ] + } + } + }, + "Handler": "framework.onEvent", + "Runtime": "nodejs12.x", + "Timeout": 900 + }, + "DependsOn": [ + "nameserviceTaskRecordManagerCleanupResourceProviderframeworkonEventServiceRoleDefaultPolicy350D6FAC", + "nameserviceTaskRecordManagerCleanupResourceProviderframeworkonEventServiceRoleF0570BD0" + ] + }, + "nameserviceTaskRecordManagerCleanupE19F1043": { + "Type": "AWS::CloudFormation::CustomResource", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerCleanupResourceProviderframeworkonEvent9B27C899", + "Arn" + ] + }, + "HostedZoneId": { + "Ref": "zoneEB40FF1E" + }, + "RecordName": "test-record.myexample.com" + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "nameserviceTaskRecordManagerPrimingCallCustomResourcePolicy376F02F0": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "sqs:SendMessage", + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerEventsQueueF805A6C1", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "nameserviceTaskRecordManagerPrimingCallCustomResourcePolicy376F02F0", + "Roles": [ + { + "Ref": "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2" + } + ] + }, + "DependsOn": [ + "nameserviceTaskRecordManagerEventHandler4B8C6905", + "nameserviceTaskRecordManagerEventHandlerServiceRoleDefaultPolicy96DD8140", + "nameserviceTaskRecordManagerEventHandlerServiceRoleE66EE52A", + "nameserviceTaskRecordManagerEventHandlerSqsEventSourceawsecsintegnameserviceTaskRecordManagerEventsQueueC5EE9A869F1EB155" + ] + }, + "nameserviceTaskRecordManagerPrimingCallE6113369": { + "Type": "Custom::AWS", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "AWS679f53fac002430cb0da5b7982bd22872D164C4C", + "Arn" + ] + }, + "Create": { + "Fn::Join": [ + "", + [ + "{\"service\":\"SQS\",\"action\":\"sendMessage\",\"parameters\":{\"QueueUrl\":\"", + { + "Ref": "nameserviceTaskRecordManagerEventsQueueF805A6C1" + }, + "\",\"DelaySeconds\":10,\"MessageBody\":\"{ \\\"prime\\\": true }\",\"MessageAttributes\":{\"HostedZoneId\":{\"DataType\":\"String\",\"StringValue\":\"", + { + "Ref": "zoneEB40FF1E" + }, + "\"},\"RecordName\":{\"DataType\":\"String\",\"StringValue\":\"test-record\"}}},\"physicalResourceId\":{\"responsePath\":\"MessageId\"}}" + ] + ] + }, + "Update": { + "Fn::Join": [ + "", + [ + "{\"service\":\"SQS\",\"action\":\"sendMessage\",\"parameters\":{\"QueueUrl\":\"", + { + "Ref": "nameserviceTaskRecordManagerEventsQueueF805A6C1" + }, + "\",\"DelaySeconds\":10,\"MessageBody\":\"{ \\\"prime\\\": true }\",\"MessageAttributes\":{\"HostedZoneId\":{\"DataType\":\"String\",\"StringValue\":\"", + { + "Ref": "zoneEB40FF1E" + }, + "\"},\"RecordName\":{\"DataType\":\"String\",\"StringValue\":\"test-record\"}}},\"physicalResourceId\":{\"responsePath\":\"MessageId\"}}" + ] + ] + }, + "InstallLatestAwsSdk": true + }, + "DependsOn": [ + "nameserviceTaskRecordManagerEventHandler4B8C6905", + "nameserviceTaskRecordManagerEventHandlerServiceRoleDefaultPolicy96DD8140", + "nameserviceTaskRecordManagerEventHandlerServiceRoleE66EE52A", + "nameserviceTaskRecordManagerEventHandlerSqsEventSourceawsecsintegnameserviceTaskRecordManagerEventsQueueC5EE9A869F1EB155", + "nameserviceTaskRecordManagerPrimingCallCustomResourcePolicy376F02F0" + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "AWS679f53fac002430cb0da5b7982bd22872D164C4C": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Ref": "AssetParametersdad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981S3Bucket0C90C820" + }, + "S3Key": { + "Fn::Join": [ + "", + [ + { + "Fn::Select": [ + 0, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParametersdad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981S3VersionKey2007A749" + } + ] + } + ] + }, + { + "Fn::Select": [ + 1, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParametersdad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981S3VersionKey2007A749" + } + ] + } + ] + } + ] + ] + } + }, + "Role": { + "Fn::GetAtt": [ + "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2", + "Arn" + ] + }, + "Handler": "index.handler", + "Runtime": "nodejs12.x", + "Timeout": 120 + }, + "DependsOn": [ + "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2" + ] + } + }, + "Parameters": { + "AssetParameters8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725dS3Bucket1E7F92B6": { + "Type": "String", + "Description": "S3 bucket for asset \"8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d\"" + }, + "AssetParameters8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725dS3VersionKey86FCA825": { + "Type": "String", + "Description": "S3 key for asset version \"8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d\"" + }, + "AssetParameters8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725dArtifactHash0F81F2AB": { + "Type": "String", + "Description": "Artifact hash for asset \"8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d\"" + }, + "AssetParameters8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9S3Bucket40DFAF90": { + "Type": "String", + "Description": "S3 bucket for asset \"8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9\"" + }, + "AssetParameters8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9S3VersionKey36104212": { + "Type": "String", + "Description": "S3 key for asset version \"8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9\"" + }, + "AssetParameters8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9ArtifactHash26B5BCAA": { + "Type": "String", + "Description": "Artifact hash for asset \"8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9\"" + }, + "AssetParametersdad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981S3Bucket0C90C820": { + "Type": "String", + "Description": "S3 bucket for asset \"dad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981\"" + }, + "AssetParametersdad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981S3VersionKey2007A749": { + "Type": "String", + "Description": "S3 key for asset version \"dad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981\"" + }, + "AssetParametersdad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981ArtifactHash0C4FC28E": { + "Type": "String", + "Description": "Artifact hash for asset \"dad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981\"" + } + }, + "Outputs": { + "DnsName": { + "Value": "test-record.myexample.com" + }, + "DnsServer": { + "Value": { + "Fn::Select": [ + 0, + { + "Fn::GetAtt": [ + "zoneEB40FF1E", + "NameServers" + ] + } + ] + } + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/cdk.out b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/cdk.out new file mode 100644 index 0000000000000..90bef2e09ad39 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"17.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/manifest.json b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/manifest.json new file mode 100644 index 0000000000000..b701f7b86340d --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/manifest.json @@ -0,0 +1,361 @@ +{ + "version": "17.0.0", + "artifacts": { + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + }, + "metadata": {} + }, + "aws-ecs-integ": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-ecs-integ.template.json", + "validateOnSynth": false + }, + "metadata": { + "/aws-ecs-integ": [ + { + "type": "aws:cdk:asset", + "data": { + "path": "asset.8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d", + "id": "8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d", + "packaging": "zip", + "sourceHash": "8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d", + "s3BucketParameter": "AssetParameters8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725dS3Bucket1E7F92B6", + "s3KeyParameter": "AssetParameters8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725dS3VersionKey86FCA825", + "artifactHashParameter": "AssetParameters8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725dArtifactHash0F81F2AB" + } + }, + { + "type": "aws:cdk:asset", + "data": { + "path": "asset.8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9", + "id": "8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9", + "packaging": "zip", + "sourceHash": "8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9", + "s3BucketParameter": "AssetParameters8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9S3Bucket40DFAF90", + "s3KeyParameter": "AssetParameters8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9S3VersionKey36104212", + "artifactHashParameter": "AssetParameters8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9ArtifactHash26B5BCAA" + } + }, + { + "type": "aws:cdk:asset", + "data": { + "path": "asset.dad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981", + "id": "dad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981", + "packaging": "zip", + "sourceHash": "dad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981", + "s3BucketParameter": "AssetParametersdad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981S3Bucket0C90C820", + "s3KeyParameter": "AssetParametersdad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981S3VersionKey2007A749", + "artifactHashParameter": "AssetParametersdad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981ArtifactHash0C4FC28E" + } + } + ], + "/aws-ecs-integ/vpc/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "vpcA2121C38" + } + ], + "/aws-ecs-integ/vpc/publicSubnet1/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "vpcpublicSubnet1SubnetA635257E" + } + ], + "/aws-ecs-integ/vpc/publicSubnet1/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "vpcpublicSubnet1RouteTableA38152FE" + } + ], + "/aws-ecs-integ/vpc/publicSubnet1/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "vpcpublicSubnet1RouteTableAssociationB46101B8" + } + ], + "/aws-ecs-integ/vpc/publicSubnet1/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "vpcpublicSubnet1DefaultRouteF0973989" + } + ], + "/aws-ecs-integ/vpc/publicSubnet2/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "vpcpublicSubnet2Subnet027D165B" + } + ], + "/aws-ecs-integ/vpc/publicSubnet2/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "vpcpublicSubnet2RouteTableA6135437" + } + ], + "/aws-ecs-integ/vpc/publicSubnet2/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "vpcpublicSubnet2RouteTableAssociation73F6478A" + } + ], + "/aws-ecs-integ/vpc/publicSubnet2/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "vpcpublicSubnet2DefaultRoute13685A07" + } + ], + "/aws-ecs-integ/vpc/IGW": [ + { + "type": "aws:cdk:logicalId", + "data": "vpcIGWE57CBDCA" + } + ], + "/aws-ecs-integ/vpc/VPCGW": [ + { + "type": "aws:cdk:logicalId", + "data": "vpcVPCGW7984C166" + } + ], + "/aws-ecs-integ/zone/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "zoneEB40FF1E" + } + ], + "/aws-ecs-integ/laterRecord/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "laterRecordD393EDE6" + } + ], + "/aws-ecs-integ/production-environment-cluster/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentclusterC6599D2D" + } + ], + "/aws-ecs-integ/name-task-definition/TaskRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nametaskdefinitionTaskRole50FE844E" + } + ], + "/aws-ecs-integ/name-task-definition/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nametaskdefinition690762BB" + } + ], + "/aws-ecs-integ/name-service/Service": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceService8015C8D6" + } + ], + "/aws-ecs-integ/name-service/SecurityGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceSecurityGroup33F4662C" + } + ], + "/aws-ecs-integ/name-service/TaskRecordManager/EventsDL/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceTaskRecordManagerEventsDLB8F13E1E" + } + ], + "/aws-ecs-integ/name-service/TaskRecordManager/EventsQueue/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceTaskRecordManagerEventsQueueF805A6C1" + } + ], + "/aws-ecs-integ/name-service/TaskRecordManager/EventsQueue/Policy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceTaskRecordManagerEventsQueuePolicy65CC6F9E" + } + ], + "/aws-ecs-integ/name-service/TaskRecordManager/Records/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceTaskRecordManagerRecordsA4648C6E" + } + ], + "/aws-ecs-integ/name-service/TaskRecordManager/RuleRunning/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceTaskRecordManagerRuleRunningCD85F46F" + } + ], + "/aws-ecs-integ/name-service/TaskRecordManager/RuleStopped/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceTaskRecordManagerRuleStopped66D08B70" + } + ], + "/aws-ecs-integ/name-service/TaskRecordManager/EventHandler/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceTaskRecordManagerEventHandlerServiceRoleE66EE52A" + } + ], + "/aws-ecs-integ/name-service/TaskRecordManager/EventHandler/ServiceRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceTaskRecordManagerEventHandlerServiceRoleDefaultPolicy96DD8140" + } + ], + "/aws-ecs-integ/name-service/TaskRecordManager/EventHandler/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceTaskRecordManagerEventHandler4B8C6905" + } + ], + "/aws-ecs-integ/name-service/TaskRecordManager/EventHandler/SqsEventSource:awsecsintegnameserviceTaskRecordManagerEventsQueueC5EE9A86/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceTaskRecordManagerEventHandlerSqsEventSourceawsecsintegnameserviceTaskRecordManagerEventsQueueC5EE9A869F1EB155" + } + ], + "/aws-ecs-integ/name-service/TaskRecordManager/CleanupResourceProviderHandler/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceTaskRecordManagerCleanupResourceProviderHandlerServiceRoleCCA462F0" + } + ], + "/aws-ecs-integ/name-service/TaskRecordManager/CleanupResourceProviderHandler/ServiceRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceTaskRecordManagerCleanupResourceProviderHandlerServiceRoleDefaultPolicy7D095576" + } + ], + "/aws-ecs-integ/name-service/TaskRecordManager/CleanupResourceProviderHandler/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceTaskRecordManagerCleanupResourceProviderHandler08068F99" + } + ], + "/aws-ecs-integ/name-service/TaskRecordManager/CleanupResourceProvider/framework-onEvent/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceTaskRecordManagerCleanupResourceProviderframeworkonEventServiceRoleF0570BD0" + } + ], + "/aws-ecs-integ/name-service/TaskRecordManager/CleanupResourceProvider/framework-onEvent/ServiceRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceTaskRecordManagerCleanupResourceProviderframeworkonEventServiceRoleDefaultPolicy350D6FAC" + } + ], + "/aws-ecs-integ/name-service/TaskRecordManager/CleanupResourceProvider/framework-onEvent/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceTaskRecordManagerCleanupResourceProviderframeworkonEvent9B27C899" + } + ], + "/aws-ecs-integ/name-service/TaskRecordManager/Cleanup/Default": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceTaskRecordManagerCleanupE19F1043" + } + ], + "/aws-ecs-integ/name-service/TaskRecordManager/PrimingCall/CustomResourcePolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceTaskRecordManagerPrimingCallCustomResourcePolicy376F02F0" + } + ], + "/aws-ecs-integ/name-service/TaskRecordManager/PrimingCall/Resource/Default": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceTaskRecordManagerPrimingCallE6113369" + } + ], + "/aws-ecs-integ/AssetParameters/8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/S3Bucket": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetParameters8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725dS3Bucket1E7F92B6" + } + ], + "/aws-ecs-integ/AssetParameters/8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/S3VersionKey": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetParameters8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725dS3VersionKey86FCA825" + } + ], + "/aws-ecs-integ/AssetParameters/8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/ArtifactHash": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetParameters8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725dArtifactHash0F81F2AB" + } + ], + "/aws-ecs-integ/AssetParameters/8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9/S3Bucket": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetParameters8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9S3Bucket40DFAF90" + } + ], + "/aws-ecs-integ/AssetParameters/8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9/S3VersionKey": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetParameters8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9S3VersionKey36104212" + } + ], + "/aws-ecs-integ/AssetParameters/8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9/ArtifactHash": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetParameters8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9ArtifactHash26B5BCAA" + } + ], + "/aws-ecs-integ/AssetParameters/dad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981/S3Bucket": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetParametersdad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981S3Bucket0C90C820" + } + ], + "/aws-ecs-integ/AssetParameters/dad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981/S3VersionKey": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetParametersdad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981S3VersionKey2007A749" + } + ], + "/aws-ecs-integ/AssetParameters/dad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981/ArtifactHash": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetParametersdad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981ArtifactHash0C4FC28E" + } + ], + "/aws-ecs-integ/AWS679f53fac002430cb0da5b7982bd2287/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2" + } + ], + "/aws-ecs-integ/AWS679f53fac002430cb0da5b7982bd2287/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AWS679f53fac002430cb0da5b7982bd22872D164C4C" + } + ], + "/aws-ecs-integ/DnsName": [ + { + "type": "aws:cdk:logicalId", + "data": "DnsName" + } + ], + "/aws-ecs-integ/DnsServer": [ + { + "type": "aws:cdk:logicalId", + "data": "DnsServer" + } + ] + }, + "displayName": "aws-ecs-integ" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/tree.json b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/tree.json new file mode 100644 index 0000000000000..ac161912535d9 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/assign-public-ip.integ.snapshot/tree.json @@ -0,0 +1,2036 @@ +{ + "version": "tree-0.1", + "tree": { + "id": "App", + "path": "", + "children": { + "Tree": { + "id": "Tree", + "path": "Tree", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "aws-ecs-integ": { + "id": "aws-ecs-integ", + "path": "aws-ecs-integ", + "children": { + "vpc": { + "id": "vpc", + "path": "aws-ecs-integ/vpc", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/vpc/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::VPC", + "aws:cdk:cloudformation:props": { + "cidrBlock": "10.0.0.0/16", + "enableDnsHostnames": true, + "enableDnsSupport": true, + "instanceTenancy": "default", + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/vpc" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "publicSubnet1": { + "id": "publicSubnet1", + "path": "aws-ecs-integ/vpc/publicSubnet1", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-ecs-integ/vpc/publicSubnet1/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "vpcA2121C38" + }, + "availabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.0.0/24", + "mapPublicIpOnLaunch": true, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "public" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Public" + }, + { + "key": "Name", + "value": "aws-ecs-integ/vpc/publicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-ecs-integ/vpc/publicSubnet1/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-ecs-integ/vpc/publicSubnet1/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "vpcA2121C38" + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/vpc/publicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-ecs-integ/vpc/publicSubnet1/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "vpcpublicSubnet1RouteTableA38152FE" + }, + "subnetId": { + "Ref": "vpcpublicSubnet1SubnetA635257E" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-ecs-integ/vpc/publicSubnet1/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "vpcpublicSubnet1RouteTableA38152FE" + }, + "destinationCidrBlock": "0.0.0.0/0", + "gatewayId": { + "Ref": "vpcIGWE57CBDCA" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "publicSubnet2": { + "id": "publicSubnet2", + "path": "aws-ecs-integ/vpc/publicSubnet2", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-ecs-integ/vpc/publicSubnet2/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "vpcA2121C38" + }, + "availabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.1.0/24", + "mapPublicIpOnLaunch": true, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "public" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Public" + }, + { + "key": "Name", + "value": "aws-ecs-integ/vpc/publicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-ecs-integ/vpc/publicSubnet2/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-ecs-integ/vpc/publicSubnet2/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "vpcA2121C38" + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/vpc/publicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-ecs-integ/vpc/publicSubnet2/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "vpcpublicSubnet2RouteTableA6135437" + }, + "subnetId": { + "Ref": "vpcpublicSubnet2Subnet027D165B" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-ecs-integ/vpc/publicSubnet2/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "vpcpublicSubnet2RouteTableA6135437" + }, + "destinationCidrBlock": "0.0.0.0/0", + "gatewayId": { + "Ref": "vpcIGWE57CBDCA" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "IGW": { + "id": "IGW", + "path": "aws-ecs-integ/vpc/IGW", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::InternetGateway", + "aws:cdk:cloudformation:props": { + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/vpc" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "VPCGW": { + "id": "VPCGW", + "path": "aws-ecs-integ/vpc/VPCGW", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::VPCGatewayAttachment", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "vpcA2121C38" + }, + "internetGatewayId": { + "Ref": "vpcIGWE57CBDCA" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "zone": { + "id": "zone", + "path": "aws-ecs-integ/zone", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/zone/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Route53::HostedZone", + "aws:cdk:cloudformation:props": { + "name": "myexample.com." + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "laterRecord": { + "id": "laterRecord", + "path": "aws-ecs-integ/laterRecord", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/laterRecord/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Route53::RecordSet", + "aws:cdk:cloudformation:props": { + "name": "u-record.myexample.com.", + "type": "CNAME", + "hostedZoneId": { + "Ref": "zoneEB40FF1E" + }, + "resourceRecords": [ + "console.aws.amazon.com" + ], + "ttl": "1800" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "production": { + "id": "production", + "path": "aws-ecs-integ/production", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "production-environment-cluster": { + "id": "production-environment-cluster", + "path": "aws-ecs-integ/production-environment-cluster", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/production-environment-cluster/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::Cluster", + "aws:cdk:cloudformation:props": {} + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "name": { + "id": "name", + "path": "aws-ecs-integ/name", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "name-task-definition": { + "id": "name-task-definition", + "path": "aws-ecs-integ/name-task-definition", + "children": { + "TaskRole": { + "id": "TaskRole", + "path": "aws-ecs-integ/name-task-definition/TaskRole", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-task-definition/TaskRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-task-definition/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::TaskDefinition", + "aws:cdk:cloudformation:props": { + "containerDefinitions": [ + { + "cpu": 256, + "essential": true, + "image": "nathanpeck/name", + "memory": 512, + "name": "app", + "portMappings": [ + { + "containerPort": 80, + "protocol": "tcp" + } + ], + "ulimits": [ + { + "name": "nofile", + "softLimit": 1024000, + "hardLimit": 1024000 + } + ], + "environment": [ + { + "name": "PORT", + "value": "80" + } + ] + } + ], + "cpu": "256", + "family": "awsecsintegnametaskdefinition0EA6A1A0", + "memory": "512", + "networkMode": "awsvpc", + "requiresCompatibilities": [ + "EC2", + "FARGATE" + ], + "taskRoleArn": { + "Fn::GetAtt": [ + "nametaskdefinitionTaskRole50FE844E", + "Arn" + ] + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "app": { + "id": "app", + "path": "aws-ecs-integ/name-task-definition/app", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "name-service": { + "id": "name-service", + "path": "aws-ecs-integ/name-service", + "children": { + "Service": { + "id": "Service", + "path": "aws-ecs-integ/name-service/Service", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::Service", + "aws:cdk:cloudformation:props": { + "cluster": { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "deploymentConfiguration": { + "maximumPercent": 200, + "minimumHealthyPercent": 100 + }, + "desiredCount": 1, + "enableEcsManagedTags": false, + "launchType": "FARGATE", + "networkConfiguration": { + "awsvpcConfiguration": { + "assignPublicIp": "ENABLED", + "subnets": [ + { + "Ref": "vpcpublicSubnet1SubnetA635257E" + }, + { + "Ref": "vpcpublicSubnet2Subnet027D165B" + } + ], + "securityGroups": [ + { + "Fn::GetAtt": [ + "nameserviceSecurityGroup33F4662C", + "GroupId" + ] + } + ] + } + }, + "taskDefinition": { + "Ref": "nametaskdefinition690762BB" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "SecurityGroup": { + "id": "SecurityGroup", + "path": "aws-ecs-integ/name-service/SecurityGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-service/SecurityGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroup", + "aws:cdk:cloudformation:props": { + "groupDescription": "aws-ecs-integ/name-service/SecurityGroup", + "securityGroupEgress": [ + { + "cidrIp": "0.0.0.0/0", + "description": "Allow all outbound traffic by default", + "ipProtocol": "-1" + } + ], + "securityGroupIngress": [ + { + "cidrIp": "0.0.0.0/0", + "ipProtocol": "tcp", + "fromPort": 80, + "toPort": 80, + "description": "Accept inbound traffic on traffic port from anywhere" + } + ], + "vpcId": { + "Ref": "vpcA2121C38" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "TaskRecordManager": { + "id": "TaskRecordManager", + "path": "aws-ecs-integ/name-service/TaskRecordManager", + "children": { + "EventsDL": { + "id": "EventsDL", + "path": "aws-ecs-integ/name-service/TaskRecordManager/EventsDL", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-service/TaskRecordManager/EventsDL/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::SQS::Queue", + "aws:cdk:cloudformation:props": { + "messageRetentionPeriod": 1209600 + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "EventsQueue": { + "id": "EventsQueue", + "path": "aws-ecs-integ/name-service/TaskRecordManager/EventsQueue", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-service/TaskRecordManager/EventsQueue/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::SQS::Queue", + "aws:cdk:cloudformation:props": { + "redrivePolicy": { + "deadLetterTargetArn": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerEventsDLB8F13E1E", + "Arn" + ] + }, + "maxReceiveCount": 500 + }, + "visibilityTimeout": 30 + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Policy": { + "id": "Policy", + "path": "aws-ecs-integ/name-service/TaskRecordManager/EventsQueue/Policy", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-service/TaskRecordManager/EventsQueue/Policy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::SQS::QueuePolicy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": [ + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl" + ], + "Condition": { + "ArnEquals": { + "aws:SourceArn": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerRuleRunningCD85F46F", + "Arn" + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "events.amazonaws.com" + }, + "Resource": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerEventsQueueF805A6C1", + "Arn" + ] + } + }, + { + "Action": [ + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl" + ], + "Condition": { + "ArnEquals": { + "aws:SourceArn": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerRuleStopped66D08B70", + "Arn" + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "events.amazonaws.com" + }, + "Resource": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerEventsQueueF805A6C1", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "queues": [ + { + "Ref": "nameserviceTaskRecordManagerEventsQueueF805A6C1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Records": { + "id": "Records", + "path": "aws-ecs-integ/name-service/TaskRecordManager/Records", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-service/TaskRecordManager/Records/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::DynamoDB::Table", + "aws:cdk:cloudformation:props": { + "keySchema": [ + { + "attributeName": "cluster_service", + "keyType": "HASH" + } + ], + "attributeDefinitions": [ + { + "attributeName": "cluster_service", + "attributeType": "S" + } + ], + "billingMode": "PAY_PER_REQUEST" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "ScalingRole": { + "id": "ScalingRole", + "path": "aws-ecs-integ/name-service/TaskRecordManager/Records/ScalingRole", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RuleRunning": { + "id": "RuleRunning", + "path": "aws-ecs-integ/name-service/TaskRecordManager/RuleRunning", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-service/TaskRecordManager/RuleRunning/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Events::Rule", + "aws:cdk:cloudformation:props": { + "eventPattern": { + "source": [ + "aws.ecs" + ], + "detail-type": [ + "ECS Task State Change" + ], + "detail": { + "clusterArn": [ + { + "Fn::GetAtt": [ + "productionenvironmentclusterC6599D2D", + "Arn" + ] + } + ], + "lastStatus": [ + "RUNNING" + ], + "desiredStatus": [ + "RUNNING" + ] + } + }, + "state": "ENABLED", + "targets": [ + { + "id": "Target0", + "arn": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerEventsQueueF805A6C1", + "Arn" + ] + } + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RuleStopped": { + "id": "RuleStopped", + "path": "aws-ecs-integ/name-service/TaskRecordManager/RuleStopped", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-service/TaskRecordManager/RuleStopped/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Events::Rule", + "aws:cdk:cloudformation:props": { + "eventPattern": { + "source": [ + "aws.ecs" + ], + "detail-type": [ + "ECS Task State Change" + ], + "detail": { + "clusterArn": [ + { + "Fn::GetAtt": [ + "productionenvironmentclusterC6599D2D", + "Arn" + ] + } + ], + "lastStatus": [ + "STOPPED" + ], + "desiredStatus": [ + "STOPPED" + ] + } + }, + "state": "ENABLED", + "targets": [ + { + "id": "Target0", + "arn": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerEventsQueueF805A6C1", + "Arn" + ] + } + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "EventHandler": { + "id": "EventHandler", + "path": "aws-ecs-integ/name-service/TaskRecordManager/EventHandler", + "children": { + "ServiceRole": { + "id": "ServiceRole", + "path": "aws-ecs-integ/name-service/TaskRecordManager/EventHandler/ServiceRole", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-service/TaskRecordManager/EventHandler/ServiceRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "managedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultPolicy": { + "id": "DefaultPolicy", + "path": "aws-ecs-integ/name-service/TaskRecordManager/EventHandler/ServiceRole/DefaultPolicy", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-service/TaskRecordManager/EventHandler/ServiceRole/DefaultPolicy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": "ec2:DescribeNetworkInterfaces", + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": [ + "route53:ChangeResourceRecordSets", + "route53:ListResourceRecordSets" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":route53:::hostedzone/", + { + "Ref": "zoneEB40FF1E" + } + ] + ] + } + }, + { + "Action": [ + "sqs:ReceiveMessage", + "sqs:ChangeMessageVisibility", + "sqs:GetQueueUrl", + "sqs:DeleteMessage", + "sqs:GetQueueAttributes" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerEventsQueueF805A6C1", + "Arn" + ] + } + }, + { + "Action": [ + "dynamodb:BatchGetItem", + "dynamodb:GetRecords", + "dynamodb:GetShardIterator", + "dynamodb:Query", + "dynamodb:GetItem", + "dynamodb:Scan", + "dynamodb:ConditionCheckItem", + "dynamodb:BatchWriteItem", + "dynamodb:PutItem", + "dynamodb:UpdateItem", + "dynamodb:DeleteItem", + "dynamodb:DescribeTable" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerRecordsA4648C6E", + "Arn" + ] + }, + { + "Ref": "AWS::NoValue" + } + ] + } + ], + "Version": "2012-10-17" + }, + "policyName": "nameserviceTaskRecordManagerEventHandlerServiceRoleDefaultPolicy96DD8140", + "roles": [ + { + "Ref": "nameserviceTaskRecordManagerEventHandlerServiceRoleE66EE52A" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Code": { + "id": "Code", + "path": "aws-ecs-integ/name-service/TaskRecordManager/EventHandler/Code", + "children": { + "Stage": { + "id": "Stage", + "path": "aws-ecs-integ/name-service/TaskRecordManager/EventHandler/Code/Stage", + "constructInfo": { + "fqn": "@aws-cdk/core.AssetStaging", + "version": "0.0.0" + } + }, + "AssetBucket": { + "id": "AssetBucket", + "path": "aws-ecs-integ/name-service/TaskRecordManager/EventHandler/Code/AssetBucket", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-service/TaskRecordManager/EventHandler/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Lambda::Function", + "aws:cdk:cloudformation:props": { + "code": { + "s3Bucket": { + "Ref": "AssetParameters8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725dS3Bucket1E7F92B6" + }, + "s3Key": { + "Fn::Join": [ + "", + [ + { + "Fn::Select": [ + 0, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParameters8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725dS3VersionKey86FCA825" + } + ] + } + ] + }, + { + "Fn::Select": [ + 1, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParameters8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725dS3VersionKey86FCA825" + } + ] + } + ] + } + ] + ] + } + }, + "role": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerEventHandlerServiceRoleE66EE52A", + "Arn" + ] + }, + "environment": { + "variables": { + "HOSTED_ZONE_ID": { + "Ref": "zoneEB40FF1E" + }, + "RECORD_NAME": "test-record.myexample.com", + "RECORDS_TABLE": { + "Ref": "nameserviceTaskRecordManagerRecordsA4648C6E" + }, + "CLUSTER_ARN": { + "Fn::GetAtt": [ + "productionenvironmentclusterC6599D2D", + "Arn" + ] + }, + "SERVICE_NAME": { + "Fn::GetAtt": [ + "nameserviceService8015C8D6", + "Name" + ] + } + } + }, + "handler": "index.queue_handler", + "reservedConcurrentExecutions": 1, + "runtime": "python3.8", + "timeout": 30 + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "SqsEventSource:awsecsintegnameserviceTaskRecordManagerEventsQueueC5EE9A86": { + "id": "SqsEventSource:awsecsintegnameserviceTaskRecordManagerEventsQueueC5EE9A86", + "path": "aws-ecs-integ/name-service/TaskRecordManager/EventHandler/SqsEventSource:awsecsintegnameserviceTaskRecordManagerEventsQueueC5EE9A86", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-service/TaskRecordManager/EventHandler/SqsEventSource:awsecsintegnameserviceTaskRecordManagerEventsQueueC5EE9A86/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Lambda::EventSourceMapping", + "aws:cdk:cloudformation:props": { + "functionName": { + "Ref": "nameserviceTaskRecordManagerEventHandler4B8C6905" + }, + "eventSourceArn": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerEventsQueueF805A6C1", + "Arn" + ] + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "CleanupResourceProviderHandler": { + "id": "CleanupResourceProviderHandler", + "path": "aws-ecs-integ/name-service/TaskRecordManager/CleanupResourceProviderHandler", + "children": { + "ServiceRole": { + "id": "ServiceRole", + "path": "aws-ecs-integ/name-service/TaskRecordManager/CleanupResourceProviderHandler/ServiceRole", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-service/TaskRecordManager/CleanupResourceProviderHandler/ServiceRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "managedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultPolicy": { + "id": "DefaultPolicy", + "path": "aws-ecs-integ/name-service/TaskRecordManager/CleanupResourceProviderHandler/ServiceRole/DefaultPolicy", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-service/TaskRecordManager/CleanupResourceProviderHandler/ServiceRole/DefaultPolicy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": [ + "route53:ChangeResourceRecordSets", + "route53:ListResourceRecordSets" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":route53:::hostedzone/", + { + "Ref": "zoneEB40FF1E" + } + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "policyName": "nameserviceTaskRecordManagerCleanupResourceProviderHandlerServiceRoleDefaultPolicy7D095576", + "roles": [ + { + "Ref": "nameserviceTaskRecordManagerCleanupResourceProviderHandlerServiceRoleCCA462F0" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-service/TaskRecordManager/CleanupResourceProviderHandler/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Lambda::Function", + "aws:cdk:cloudformation:props": { + "code": { + "s3Bucket": { + "Ref": "AssetParameters8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725dS3Bucket1E7F92B6" + }, + "s3Key": { + "Fn::Join": [ + "", + [ + { + "Fn::Select": [ + 0, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParameters8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725dS3VersionKey86FCA825" + } + ] + } + ] + }, + { + "Fn::Select": [ + 1, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParameters8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725dS3VersionKey86FCA825" + } + ] + } + ] + } + ] + ] + } + }, + "role": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerCleanupResourceProviderHandlerServiceRoleCCA462F0", + "Arn" + ] + }, + "handler": "index.cleanup_resource_handler", + "runtime": "python3.8", + "timeout": 300 + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "CleanupResourceProvider": { + "id": "CleanupResourceProvider", + "path": "aws-ecs-integ/name-service/TaskRecordManager/CleanupResourceProvider", + "children": { + "framework-onEvent": { + "id": "framework-onEvent", + "path": "aws-ecs-integ/name-service/TaskRecordManager/CleanupResourceProvider/framework-onEvent", + "children": { + "ServiceRole": { + "id": "ServiceRole", + "path": "aws-ecs-integ/name-service/TaskRecordManager/CleanupResourceProvider/framework-onEvent/ServiceRole", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-service/TaskRecordManager/CleanupResourceProvider/framework-onEvent/ServiceRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "managedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultPolicy": { + "id": "DefaultPolicy", + "path": "aws-ecs-integ/name-service/TaskRecordManager/CleanupResourceProvider/framework-onEvent/ServiceRole/DefaultPolicy", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-service/TaskRecordManager/CleanupResourceProvider/framework-onEvent/ServiceRole/DefaultPolicy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerCleanupResourceProviderHandler08068F99", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerCleanupResourceProviderHandler08068F99", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + }, + "policyName": "nameserviceTaskRecordManagerCleanupResourceProviderframeworkonEventServiceRoleDefaultPolicy350D6FAC", + "roles": [ + { + "Ref": "nameserviceTaskRecordManagerCleanupResourceProviderframeworkonEventServiceRoleF0570BD0" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Code": { + "id": "Code", + "path": "aws-ecs-integ/name-service/TaskRecordManager/CleanupResourceProvider/framework-onEvent/Code", + "children": { + "Stage": { + "id": "Stage", + "path": "aws-ecs-integ/name-service/TaskRecordManager/CleanupResourceProvider/framework-onEvent/Code/Stage", + "constructInfo": { + "fqn": "@aws-cdk/core.AssetStaging", + "version": "0.0.0" + } + }, + "AssetBucket": { + "id": "AssetBucket", + "path": "aws-ecs-integ/name-service/TaskRecordManager/CleanupResourceProvider/framework-onEvent/Code/AssetBucket", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-service/TaskRecordManager/CleanupResourceProvider/framework-onEvent/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Lambda::Function", + "aws:cdk:cloudformation:props": { + "code": { + "s3Bucket": { + "Ref": "AssetParameters8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9S3Bucket40DFAF90" + }, + "s3Key": { + "Fn::Join": [ + "", + [ + { + "Fn::Select": [ + 0, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParameters8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9S3VersionKey36104212" + } + ] + } + ] + }, + { + "Fn::Select": [ + 1, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParameters8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9S3VersionKey36104212" + } + ] + } + ] + } + ] + ] + } + }, + "role": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerCleanupResourceProviderframeworkonEventServiceRoleF0570BD0", + "Arn" + ] + }, + "description": "AWS CDK resource provider framework - onEvent (aws-ecs-integ/name-service/TaskRecordManager/CleanupResourceProvider)", + "environment": { + "variables": { + "USER_ON_EVENT_FUNCTION_ARN": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerCleanupResourceProviderHandler08068F99", + "Arn" + ] + } + } + }, + "handler": "framework.onEvent", + "runtime": "nodejs12.x", + "timeout": 900 + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "Cleanup": { + "id": "Cleanup", + "path": "aws-ecs-integ/name-service/TaskRecordManager/Cleanup", + "children": { + "Default": { + "id": "Default", + "path": "aws-ecs-integ/name-service/TaskRecordManager/Cleanup/Default", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CustomResource", + "version": "0.0.0" + } + }, + "PrimingCall": { + "id": "PrimingCall", + "path": "aws-ecs-integ/name-service/TaskRecordManager/PrimingCall", + "children": { + "Provider": { + "id": "Provider", + "path": "aws-ecs-integ/name-service/TaskRecordManager/PrimingCall/Provider", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "CustomResourcePolicy": { + "id": "CustomResourcePolicy", + "path": "aws-ecs-integ/name-service/TaskRecordManager/PrimingCall/CustomResourcePolicy", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-service/TaskRecordManager/PrimingCall/CustomResourcePolicy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": "sqs:SendMessage", + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "nameserviceTaskRecordManagerEventsQueueF805A6C1", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "policyName": "nameserviceTaskRecordManagerPrimingCallCustomResourcePolicy376F02F0", + "roles": [ + { + "Ref": "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-service/TaskRecordManager/PrimingCall/Resource", + "children": { + "Default": { + "id": "Default", + "path": "aws-ecs-integ/name-service/TaskRecordManager/PrimingCall/Resource/Default", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CustomResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "AssetParameters": { + "id": "AssetParameters", + "path": "aws-ecs-integ/AssetParameters", + "children": { + "8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d": { + "id": "8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d", + "path": "aws-ecs-integ/AssetParameters/8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d", + "children": { + "S3Bucket": { + "id": "S3Bucket", + "path": "aws-ecs-integ/AssetParameters/8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/S3Bucket", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnParameter", + "version": "0.0.0" + } + }, + "S3VersionKey": { + "id": "S3VersionKey", + "path": "aws-ecs-integ/AssetParameters/8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/S3VersionKey", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnParameter", + "version": "0.0.0" + } + }, + "ArtifactHash": { + "id": "ArtifactHash", + "path": "aws-ecs-integ/AssetParameters/8f06a3db22794ebc7ff89b4745fd706afd46e17816fe46da72e5125cabae725d/ArtifactHash", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnParameter", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9": { + "id": "8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9", + "path": "aws-ecs-integ/AssetParameters/8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9", + "children": { + "S3Bucket": { + "id": "S3Bucket", + "path": "aws-ecs-integ/AssetParameters/8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9/S3Bucket", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnParameter", + "version": "0.0.0" + } + }, + "S3VersionKey": { + "id": "S3VersionKey", + "path": "aws-ecs-integ/AssetParameters/8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9/S3VersionKey", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnParameter", + "version": "0.0.0" + } + }, + "ArtifactHash": { + "id": "ArtifactHash", + "path": "aws-ecs-integ/AssetParameters/8dd02cc4ac473ca5b08800e92edaa31a1a7db4005928021d029c5363584f11b9/ArtifactHash", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnParameter", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "dad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981": { + "id": "dad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981", + "path": "aws-ecs-integ/AssetParameters/dad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981", + "children": { + "S3Bucket": { + "id": "S3Bucket", + "path": "aws-ecs-integ/AssetParameters/dad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981/S3Bucket", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnParameter", + "version": "0.0.0" + } + }, + "S3VersionKey": { + "id": "S3VersionKey", + "path": "aws-ecs-integ/AssetParameters/dad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981/S3VersionKey", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnParameter", + "version": "0.0.0" + } + }, + "ArtifactHash": { + "id": "ArtifactHash", + "path": "aws-ecs-integ/AssetParameters/dad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981/ArtifactHash", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnParameter", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "AWS679f53fac002430cb0da5b7982bd2287": { + "id": "AWS679f53fac002430cb0da5b7982bd2287", + "path": "aws-ecs-integ/AWS679f53fac002430cb0da5b7982bd2287", + "children": { + "ServiceRole": { + "id": "ServiceRole", + "path": "aws-ecs-integ/AWS679f53fac002430cb0da5b7982bd2287/ServiceRole", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/AWS679f53fac002430cb0da5b7982bd2287/ServiceRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "managedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Code": { + "id": "Code", + "path": "aws-ecs-integ/AWS679f53fac002430cb0da5b7982bd2287/Code", + "children": { + "Stage": { + "id": "Stage", + "path": "aws-ecs-integ/AWS679f53fac002430cb0da5b7982bd2287/Code/Stage", + "constructInfo": { + "fqn": "@aws-cdk/core.AssetStaging", + "version": "0.0.0" + } + }, + "AssetBucket": { + "id": "AssetBucket", + "path": "aws-ecs-integ/AWS679f53fac002430cb0da5b7982bd2287/Code/AssetBucket", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/AWS679f53fac002430cb0da5b7982bd2287/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Lambda::Function", + "aws:cdk:cloudformation:props": { + "code": { + "s3Bucket": { + "Ref": "AssetParametersdad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981S3Bucket0C90C820" + }, + "s3Key": { + "Fn::Join": [ + "", + [ + { + "Fn::Select": [ + 0, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParametersdad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981S3VersionKey2007A749" + } + ] + } + ] + }, + { + "Fn::Select": [ + 1, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParametersdad5595646c3e39df600f872d08887f9fb408c42b22f568bc66c22979f476981S3VersionKey2007A749" + } + ] + } + ] + } + ] + ] + } + }, + "role": { + "Fn::GetAtt": [ + "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2", + "Arn" + ] + }, + "handler": "index.handler", + "runtime": "nodejs12.x", + "timeout": 120 + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "DnsName": { + "id": "DnsName", + "path": "aws-ecs-integ/DnsName", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnOutput", + "version": "0.0.0" + } + }, + "DnsServer": { + "id": "DnsServer", + "path": "aws-ecs-integ/DnsServer", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnOutput", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Stack", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.App", + "version": "0.0.0" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/custom-service-extension.integ.snapshot/aws-ecs-integ.template.json b/packages/@aws-cdk-containers/ecs-service-extensions/test/custom-service-extension.integ.snapshot/aws-ecs-integ.template.json new file mode 100644 index 0000000000000..51d6fbeaa5af2 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/custom-service-extension.integ.snapshot/aws-ecs-integ.template.json @@ -0,0 +1,570 @@ +{ + "Resources": { + "productionenvironmentvpcAEB47DF7": { + "Type": "AWS::EC2::VPC", + "Properties": { + "CidrBlock": "10.0.0.0/16", + "EnableDnsHostnames": true, + "EnableDnsSupport": true, + "InstanceTenancy": "default", + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet1Subnet8D92C089": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.0.0/18", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Public" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Public" + }, + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet1RouteTable6E9ABC21": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet1RouteTableAssociationA8117374": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPublicSubnet1RouteTable6E9ABC21" + }, + "SubnetId": { + "Ref": "productionenvironmentvpcPublicSubnet1Subnet8D92C089" + } + } + }, + "productionenvironmentvpcPublicSubnet1DefaultRoute524C894D": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPublicSubnet1RouteTable6E9ABC21" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "productionenvironmentvpcIGWE7C39890" + } + }, + "DependsOn": [ + "productionenvironmentvpcVPCGW1B428D07" + ] + }, + "productionenvironmentvpcPublicSubnet1EIP54BA88DB": { + "Type": "AWS::EC2::EIP", + "Properties": { + "Domain": "vpc", + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet1NATGateway6075E4CA": { + "Type": "AWS::EC2::NatGateway", + "Properties": { + "SubnetId": { + "Ref": "productionenvironmentvpcPublicSubnet1Subnet8D92C089" + }, + "AllocationId": { + "Fn::GetAtt": [ + "productionenvironmentvpcPublicSubnet1EIP54BA88DB", + "AllocationId" + ] + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet2Subnet298E6C31": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.64.0/18", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Public" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Public" + }, + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet2RouteTable842A68D7": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet2RouteTableAssociation0A7549F3": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPublicSubnet2RouteTable842A68D7" + }, + "SubnetId": { + "Ref": "productionenvironmentvpcPublicSubnet2Subnet298E6C31" + } + } + }, + "productionenvironmentvpcPublicSubnet2DefaultRoute92CD697D": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPublicSubnet2RouteTable842A68D7" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "productionenvironmentvpcIGWE7C39890" + } + }, + "DependsOn": [ + "productionenvironmentvpcVPCGW1B428D07" + ] + }, + "productionenvironmentvpcPublicSubnet2EIP14CA46AA": { + "Type": "AWS::EC2::EIP", + "Properties": { + "Domain": "vpc", + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet2NATGatewayE1850FCC": { + "Type": "AWS::EC2::NatGateway", + "Properties": { + "SubnetId": { + "Ref": "productionenvironmentvpcPublicSubnet2Subnet298E6C31" + }, + "AllocationId": { + "Fn::GetAtt": [ + "productionenvironmentvpcPublicSubnet2EIP14CA46AA", + "AllocationId" + ] + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "productionenvironmentvpcPrivateSubnet1Subnet53F632E6": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.128.0/18", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Private" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Private" + }, + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1" + } + ] + } + }, + "productionenvironmentvpcPrivateSubnet1RouteTable2C6DFF0C": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1" + } + ] + } + }, + "productionenvironmentvpcPrivateSubnet1RouteTableAssociation8BA32463": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet1RouteTable2C6DFF0C" + }, + "SubnetId": { + "Ref": "productionenvironmentvpcPrivateSubnet1Subnet53F632E6" + } + } + }, + "productionenvironmentvpcPrivateSubnet1DefaultRouteFBB3DE6C": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet1RouteTable2C6DFF0C" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "NatGatewayId": { + "Ref": "productionenvironmentvpcPublicSubnet1NATGateway6075E4CA" + } + } + }, + "productionenvironmentvpcPrivateSubnet2Subnet756FB93C": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.192.0/18", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Private" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Private" + }, + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2" + } + ] + } + }, + "productionenvironmentvpcPrivateSubnet2RouteTable2F77D0D2": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2" + } + ] + } + }, + "productionenvironmentvpcPrivateSubnet2RouteTableAssociation09188261": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet2RouteTable2F77D0D2" + }, + "SubnetId": { + "Ref": "productionenvironmentvpcPrivateSubnet2Subnet756FB93C" + } + } + }, + "productionenvironmentvpcPrivateSubnet2DefaultRoute5F9AB6C1": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet2RouteTable2F77D0D2" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "NatGatewayId": { + "Ref": "productionenvironmentvpcPublicSubnet2NATGatewayE1850FCC" + } + } + }, + "productionenvironmentvpcIGWE7C39890": { + "Type": "AWS::EC2::InternetGateway", + "Properties": { + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc" + } + ] + } + }, + "productionenvironmentvpcVPCGW1B428D07": { + "Type": "AWS::EC2::VPCGatewayAttachment", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "InternetGatewayId": { + "Ref": "productionenvironmentvpcIGWE7C39890" + } + } + }, + "productionenvironmentclusterC6599D2D": { + "Type": "AWS::ECS::Cluster" + }, + "nametaskdefinitionTaskRole50FE844E": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "nametaskdefinition690762BB": { + "Type": "AWS::ECS::TaskDefinition", + "Properties": { + "ContainerDefinitions": [ + { + "Cpu": 1024, + "Environment": [ + { + "Name": "PORT", + "Value": "80" + } + ], + "Essential": true, + "Image": "nathanpeck/name", + "Memory": 2048, + "Name": "app", + "PortMappings": [ + { + "ContainerPort": 80, + "Protocol": "tcp" + } + ], + "Ulimits": [ + { + "HardLimit": 1024000, + "Name": "nofile", + "SoftLimit": 1024000 + } + ] + } + ], + "Cpu": "1024", + "Family": "awsecsintegnametaskdefinition0EA6A1A0", + "Memory": "2048", + "NetworkMode": "awsvpc", + "RequiresCompatibilities": [ + "EC2", + "FARGATE" + ], + "TaskRoleArn": { + "Fn::GetAtt": [ + "nametaskdefinitionTaskRole50FE844E", + "Arn" + ] + } + } + }, + "nameserviceService8015C8D6": { + "Type": "AWS::ECS::Service", + "Properties": { + "Cluster": { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "DeploymentConfiguration": { + "MaximumPercent": 200, + "MinimumHealthyPercent": 100 + }, + "DesiredCount": 10, + "EnableECSManagedTags": false, + "LaunchType": "FARGATE", + "NetworkConfiguration": { + "AwsvpcConfiguration": { + "AssignPublicIp": "DISABLED", + "SecurityGroups": [ + { + "Fn::GetAtt": [ + "nameserviceSecurityGroup33F4662C", + "GroupId" + ] + } + ], + "Subnets": [ + { + "Ref": "productionenvironmentvpcPrivateSubnet1Subnet53F632E6" + }, + { + "Ref": "productionenvironmentvpcPrivateSubnet2Subnet756FB93C" + } + ] + } + }, + "TaskDefinition": { + "Ref": "nametaskdefinition690762BB" + } + } + }, + "nameserviceSecurityGroup33F4662C": { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "aws-ecs-integ/name-service/SecurityGroup", + "SecurityGroupEgress": [ + { + "CidrIp": "0.0.0.0/0", + "Description": "Allow all outbound traffic by default", + "IpProtocol": "-1" + } + ], + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + } + } + }, + "nameserviceTaskCountTarget366C2B3A": { + "Type": "AWS::ApplicationAutoScaling::ScalableTarget", + "Properties": { + "MaxCapacity": 20, + "MinCapacity": 5, + "ResourceId": { + "Fn::Join": [ + "", + [ + "service/", + { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "/", + { + "Fn::GetAtt": [ + "nameserviceService8015C8D6", + "Name" + ] + } + ] + ] + }, + "RoleARN": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/aws-service-role/ecs.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ECSService" + ] + ] + }, + "ScalableDimension": "ecs:service:DesiredCount", + "ServiceNamespace": "ecs" + } + }, + "nameserviceTaskCountTargetTargetCpuUtilization50E2840097": { + "Type": "AWS::ApplicationAutoScaling::ScalingPolicy", + "Properties": { + "PolicyName": "awsecsintegnameserviceTaskCountTargetTargetCpuUtilization508522EB56", + "PolicyType": "TargetTrackingScaling", + "ScalingTargetId": { + "Ref": "nameserviceTaskCountTarget366C2B3A" + }, + "TargetTrackingScalingPolicyConfiguration": { + "PredefinedMetricSpecification": { + "PredefinedMetricType": "ECSServiceAverageCPUUtilization" + }, + "ScaleInCooldown": 60, + "ScaleOutCooldown": 60, + "TargetValue": 50 + } + } + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/custom-service-extension.integ.snapshot/cdk.out b/packages/@aws-cdk-containers/ecs-service-extensions/test/custom-service-extension.integ.snapshot/cdk.out new file mode 100644 index 0000000000000..90bef2e09ad39 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/custom-service-extension.integ.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"17.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/custom-service-extension.integ.snapshot/manifest.json b/packages/@aws-cdk-containers/ecs-service-extensions/test/custom-service-extension.integ.snapshot/manifest.json new file mode 100644 index 0000000000000..c0892c54c1e04 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/custom-service-extension.integ.snapshot/manifest.json @@ -0,0 +1,203 @@ +{ + "version": "17.0.0", + "artifacts": { + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + }, + "metadata": {} + }, + "aws-ecs-integ": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-ecs-integ.template.json", + "validateOnSynth": false + }, + "metadata": { + "/aws-ecs-integ/production-environment-vpc/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcAEB47DF7" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet1/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet1Subnet8D92C089" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet1/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet1RouteTable6E9ABC21" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet1/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet1RouteTableAssociationA8117374" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet1/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet1DefaultRoute524C894D" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet1/EIP": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet1EIP54BA88DB" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet1/NATGateway": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet1NATGateway6075E4CA" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet2/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet2Subnet298E6C31" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet2/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet2RouteTable842A68D7" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet2/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet2RouteTableAssociation0A7549F3" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet2/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet2DefaultRoute92CD697D" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet2/EIP": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet2EIP14CA46AA" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet2/NATGateway": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet2NATGatewayE1850FCC" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet1/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet1Subnet53F632E6" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet1/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet1RouteTable2C6DFF0C" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet1/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet1RouteTableAssociation8BA32463" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet1/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet1DefaultRouteFBB3DE6C" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet2/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet2Subnet756FB93C" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet2/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet2RouteTable2F77D0D2" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet2/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet2RouteTableAssociation09188261" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet2/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet2DefaultRoute5F9AB6C1" + } + ], + "/aws-ecs-integ/production-environment-vpc/IGW": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcIGWE7C39890" + } + ], + "/aws-ecs-integ/production-environment-vpc/VPCGW": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcVPCGW1B428D07" + } + ], + "/aws-ecs-integ/production-environment-cluster/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentclusterC6599D2D" + } + ], + "/aws-ecs-integ/name-task-definition/TaskRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nametaskdefinitionTaskRole50FE844E" + } + ], + "/aws-ecs-integ/name-task-definition/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nametaskdefinition690762BB" + } + ], + "/aws-ecs-integ/name-service/Service": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceService8015C8D6" + } + ], + "/aws-ecs-integ/name-service/SecurityGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceSecurityGroup33F4662C" + } + ], + "/aws-ecs-integ/name-service/TaskCount/Target/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceTaskCountTarget366C2B3A" + } + ], + "/aws-ecs-integ/name-service/TaskCount/Target/TargetCpuUtilization50/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameserviceTaskCountTargetTargetCpuUtilization50E2840097" + } + ] + }, + "displayName": "aws-ecs-integ" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/custom-service-extension.integ.snapshot/tree.json b/packages/@aws-cdk-containers/ecs-service-extensions/test/custom-service-extension.integ.snapshot/tree.json new file mode 100644 index 0000000000000..9d86b33f73f3f --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/custom-service-extension.integ.snapshot/tree.json @@ -0,0 +1,1026 @@ +{ + "version": "tree-0.1", + "tree": { + "id": "App", + "path": "", + "children": { + "Tree": { + "id": "Tree", + "path": "Tree", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "aws-ecs-integ": { + "id": "aws-ecs-integ", + "path": "aws-ecs-integ", + "children": { + "production": { + "id": "production", + "path": "aws-ecs-integ/production", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "production-environment-vpc": { + "id": "production-environment-vpc", + "path": "aws-ecs-integ/production-environment-vpc", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/production-environment-vpc/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::VPC", + "aws:cdk:cloudformation:props": { + "cidrBlock": "10.0.0.0/16", + "enableDnsHostnames": true, + "enableDnsSupport": true, + "instanceTenancy": "default", + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "PublicSubnet1": { + "id": "PublicSubnet1", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "availabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.0.0/18", + "mapPublicIpOnLaunch": true, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Public" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Public" + }, + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPublicSubnet1RouteTable6E9ABC21" + }, + "subnetId": { + "Ref": "productionenvironmentvpcPublicSubnet1Subnet8D92C089" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPublicSubnet1RouteTable6E9ABC21" + }, + "destinationCidrBlock": "0.0.0.0/0", + "gatewayId": { + "Ref": "productionenvironmentvpcIGWE7C39890" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "EIP": { + "id": "EIP", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/EIP", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::EIP", + "aws:cdk:cloudformation:props": { + "domain": "vpc", + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "NATGateway": { + "id": "NATGateway", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/NATGateway", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::NatGateway", + "aws:cdk:cloudformation:props": { + "subnetId": { + "Ref": "productionenvironmentvpcPublicSubnet1Subnet8D92C089" + }, + "allocationId": { + "Fn::GetAtt": [ + "productionenvironmentvpcPublicSubnet1EIP54BA88DB", + "AllocationId" + ] + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "PublicSubnet2": { + "id": "PublicSubnet2", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "availabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.64.0/18", + "mapPublicIpOnLaunch": true, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Public" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Public" + }, + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPublicSubnet2RouteTable842A68D7" + }, + "subnetId": { + "Ref": "productionenvironmentvpcPublicSubnet2Subnet298E6C31" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPublicSubnet2RouteTable842A68D7" + }, + "destinationCidrBlock": "0.0.0.0/0", + "gatewayId": { + "Ref": "productionenvironmentvpcIGWE7C39890" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "EIP": { + "id": "EIP", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/EIP", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::EIP", + "aws:cdk:cloudformation:props": { + "domain": "vpc", + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "NATGateway": { + "id": "NATGateway", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/NATGateway", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::NatGateway", + "aws:cdk:cloudformation:props": { + "subnetId": { + "Ref": "productionenvironmentvpcPublicSubnet2Subnet298E6C31" + }, + "allocationId": { + "Fn::GetAtt": [ + "productionenvironmentvpcPublicSubnet2EIP14CA46AA", + "AllocationId" + ] + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "PrivateSubnet1": { + "id": "PrivateSubnet1", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "availabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.128.0/18", + "mapPublicIpOnLaunch": false, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Private" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Private" + }, + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet1RouteTable2C6DFF0C" + }, + "subnetId": { + "Ref": "productionenvironmentvpcPrivateSubnet1Subnet53F632E6" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet1RouteTable2C6DFF0C" + }, + "destinationCidrBlock": "0.0.0.0/0", + "natGatewayId": { + "Ref": "productionenvironmentvpcPublicSubnet1NATGateway6075E4CA" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "PrivateSubnet2": { + "id": "PrivateSubnet2", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "availabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.192.0/18", + "mapPublicIpOnLaunch": false, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Private" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Private" + }, + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet2RouteTable2F77D0D2" + }, + "subnetId": { + "Ref": "productionenvironmentvpcPrivateSubnet2Subnet756FB93C" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet2RouteTable2F77D0D2" + }, + "destinationCidrBlock": "0.0.0.0/0", + "natGatewayId": { + "Ref": "productionenvironmentvpcPublicSubnet2NATGatewayE1850FCC" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "IGW": { + "id": "IGW", + "path": "aws-ecs-integ/production-environment-vpc/IGW", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::InternetGateway", + "aws:cdk:cloudformation:props": { + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "VPCGW": { + "id": "VPCGW", + "path": "aws-ecs-integ/production-environment-vpc/VPCGW", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::VPCGatewayAttachment", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "internetGatewayId": { + "Ref": "productionenvironmentvpcIGWE7C39890" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "production-environment-cluster": { + "id": "production-environment-cluster", + "path": "aws-ecs-integ/production-environment-cluster", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/production-environment-cluster/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::Cluster", + "aws:cdk:cloudformation:props": {} + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "name": { + "id": "name", + "path": "aws-ecs-integ/name", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "name-task-definition": { + "id": "name-task-definition", + "path": "aws-ecs-integ/name-task-definition", + "children": { + "TaskRole": { + "id": "TaskRole", + "path": "aws-ecs-integ/name-task-definition/TaskRole", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-task-definition/TaskRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-task-definition/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::TaskDefinition", + "aws:cdk:cloudformation:props": { + "containerDefinitions": [ + { + "cpu": 1024, + "essential": true, + "image": "nathanpeck/name", + "memory": 2048, + "name": "app", + "portMappings": [ + { + "containerPort": 80, + "protocol": "tcp" + } + ], + "ulimits": [ + { + "name": "nofile", + "softLimit": 1024000, + "hardLimit": 1024000 + } + ], + "environment": [ + { + "name": "PORT", + "value": "80" + } + ] + } + ], + "cpu": "1024", + "family": "awsecsintegnametaskdefinition0EA6A1A0", + "memory": "2048", + "networkMode": "awsvpc", + "requiresCompatibilities": [ + "EC2", + "FARGATE" + ], + "taskRoleArn": { + "Fn::GetAtt": [ + "nametaskdefinitionTaskRole50FE844E", + "Arn" + ] + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "app": { + "id": "app", + "path": "aws-ecs-integ/name-task-definition/app", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "name-service": { + "id": "name-service", + "path": "aws-ecs-integ/name-service", + "children": { + "Service": { + "id": "Service", + "path": "aws-ecs-integ/name-service/Service", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::Service", + "aws:cdk:cloudformation:props": { + "cluster": { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "deploymentConfiguration": { + "maximumPercent": 200, + "minimumHealthyPercent": 100 + }, + "desiredCount": 10, + "enableEcsManagedTags": false, + "launchType": "FARGATE", + "networkConfiguration": { + "awsvpcConfiguration": { + "assignPublicIp": "DISABLED", + "subnets": [ + { + "Ref": "productionenvironmentvpcPrivateSubnet1Subnet53F632E6" + }, + { + "Ref": "productionenvironmentvpcPrivateSubnet2Subnet756FB93C" + } + ], + "securityGroups": [ + { + "Fn::GetAtt": [ + "nameserviceSecurityGroup33F4662C", + "GroupId" + ] + } + ] + } + }, + "taskDefinition": { + "Ref": "nametaskdefinition690762BB" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "SecurityGroup": { + "id": "SecurityGroup", + "path": "aws-ecs-integ/name-service/SecurityGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-service/SecurityGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroup", + "aws:cdk:cloudformation:props": { + "groupDescription": "aws-ecs-integ/name-service/SecurityGroup", + "securityGroupEgress": [ + { + "cidrIp": "0.0.0.0/0", + "description": "Allow all outbound traffic by default", + "ipProtocol": "-1" + } + ], + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "ScalingRole": { + "id": "ScalingRole", + "path": "aws-ecs-integ/name-service/ScalingRole", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "TaskCount": { + "id": "TaskCount", + "path": "aws-ecs-integ/name-service/TaskCount", + "children": { + "Target": { + "id": "Target", + "path": "aws-ecs-integ/name-service/TaskCount/Target", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-service/TaskCount/Target/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ApplicationAutoScaling::ScalableTarget", + "aws:cdk:cloudformation:props": { + "maxCapacity": 20, + "minCapacity": 5, + "resourceId": { + "Fn::Join": [ + "", + [ + "service/", + { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "/", + { + "Fn::GetAtt": [ + "nameserviceService8015C8D6", + "Name" + ] + } + ] + ] + }, + "roleArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/aws-service-role/ecs.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ECSService" + ] + ] + }, + "scalableDimension": "ecs:service:DesiredCount", + "serviceNamespace": "ecs" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "TargetCpuUtilization50": { + "id": "TargetCpuUtilization50", + "path": "aws-ecs-integ/name-service/TaskCount/Target/TargetCpuUtilization50", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-service/TaskCount/Target/TargetCpuUtilization50/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ApplicationAutoScaling::ScalingPolicy", + "aws:cdk:cloudformation:props": { + "policyName": "awsecsintegnameserviceTaskCountTargetTargetCpuUtilization508522EB56", + "policyType": "TargetTrackingScaling", + "scalingTargetId": { + "Ref": "nameserviceTaskCountTarget366C2B3A" + }, + "targetTrackingScalingPolicyConfiguration": { + "predefinedMetricSpecification": { + "predefinedMetricType": "ECSServiceAverageCPUUtilization" + }, + "scaleInCooldown": 60, + "scaleOutCooldown": 60, + "targetValue": 50 + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Stack", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.App", + "version": "0.0.0" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/imported-environment.integ.snapshot/cdk.out b/packages/@aws-cdk-containers/ecs-service-extensions/test/imported-environment.integ.snapshot/cdk.out new file mode 100644 index 0000000000000..90bef2e09ad39 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/imported-environment.integ.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"17.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/imported-environment.integ.snapshot/imported-environment-integ.template.json b/packages/@aws-cdk-containers/ecs-service-extensions/test/imported-environment.integ.snapshot/imported-environment-integ.template.json new file mode 100644 index 0000000000000..bee03c82cc17a --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/imported-environment.integ.snapshot/imported-environment-integ.template.json @@ -0,0 +1,366 @@ +{ + "Resources": { + "ResourcesNestedStackResourcesNestedStackResourceCDA26E60": { + "Type": "AWS::CloudFormation::Stack", + "Properties": { + "TemplateURL": { + "Fn::Join": [ + "", + [ + "https://s3.", + { + "Ref": "AWS::Region" + }, + ".", + { + "Ref": "AWS::URLSuffix" + }, + "/", + { + "Ref": "AssetParameters78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01S3Bucket64585C1B" + }, + "/", + { + "Fn::Select": [ + 0, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParameters78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01S3VersionKey41670582" + } + ] + } + ] + }, + { + "Fn::Select": [ + 1, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParameters78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01S3VersionKey41670582" + } + ] + } + ] + } + ] + ] + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "ServiceloadbalancerD5D60894": { + "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", + "Properties": { + "LoadBalancerAttributes": [ + { + "Key": "deletion_protection.enabled", + "Value": "false" + } + ], + "Scheme": "internet-facing", + "SecurityGroups": [ + { + "Fn::GetAtt": [ + "ServiceloadbalancerSecurityGroup2DA3E8D6", + "GroupId" + ] + } + ], + "Subnets": [ + { + "Fn::GetAtt": [ + "ResourcesNestedStackResourcesNestedStackResourceCDA26E60", + "Outputs.importedenvironmentintegResourcesEnvironmentenvironmentvpcPublicSubnet1Subnet0D15D382Ref" + ] + }, + { + "Fn::GetAtt": [ + "ResourcesNestedStackResourcesNestedStackResourceCDA26E60", + "Outputs.importedenvironmentintegResourcesEnvironmentenvironmentvpcPublicSubnet2Subnet68645ACARef" + ] + } + ], + "Type": "application" + } + }, + "ServiceloadbalancerSecurityGroup2DA3E8D6": { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Automatically created Security Group for ELB importedenvironmentintegServiceloadbalancerFAE8A5FA", + "SecurityGroupIngress": [ + { + "CidrIp": "0.0.0.0/0", + "Description": "Allow from anyone on port 80", + "FromPort": 80, + "IpProtocol": "tcp", + "ToPort": 80 + } + ], + "VpcId": { + "Fn::GetAtt": [ + "ResourcesNestedStackResourcesNestedStackResourceCDA26E60", + "Outputs.importedenvironmentintegResourcesEnvironmentenvironmentvpcDC34D4D3Ref" + ] + } + } + }, + "ServiceloadbalancerSecurityGrouptoimportedenvironmentintegServiceserviceSecurityGroup2BE90F7480B17EB7CA": { + "Type": "AWS::EC2::SecurityGroupEgress", + "Properties": { + "GroupId": { + "Fn::GetAtt": [ + "ServiceloadbalancerSecurityGroup2DA3E8D6", + "GroupId" + ] + }, + "IpProtocol": "tcp", + "Description": "Load balancer to target", + "DestinationSecurityGroupId": { + "Fn::GetAtt": [ + "ServiceserviceSecurityGroup1915660F", + "GroupId" + ] + }, + "FromPort": 80, + "ToPort": 80 + } + }, + "ServiceloadbalancerServicelistenerC862F722": { + "Type": "AWS::ElasticLoadBalancingV2::Listener", + "Properties": { + "DefaultActions": [ + { + "TargetGroupArn": { + "Ref": "ServiceloadbalancerServicelistenerServiceGroup844B51E6" + }, + "Type": "forward" + } + ], + "LoadBalancerArn": { + "Ref": "ServiceloadbalancerD5D60894" + }, + "Port": 80, + "Protocol": "HTTP" + } + }, + "ServiceloadbalancerServicelistenerServiceGroup844B51E6": { + "Type": "AWS::ElasticLoadBalancingV2::TargetGroup", + "Properties": { + "Port": 80, + "Protocol": "HTTP", + "TargetGroupAttributes": [ + { + "Key": "deregistration_delay.timeout_seconds", + "Value": "10" + }, + { + "Key": "stickiness.enabled", + "Value": "false" + } + ], + "TargetType": "ip", + "VpcId": { + "Fn::GetAtt": [ + "ResourcesNestedStackResourcesNestedStackResourceCDA26E60", + "Outputs.importedenvironmentintegResourcesEnvironmentenvironmentvpcDC34D4D3Ref" + ] + } + } + }, + "ServicetaskdefinitionTaskRole5B4B60A4": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "Servicetaskdefinition0CEAD834": { + "Type": "AWS::ECS::TaskDefinition", + "Properties": { + "ContainerDefinitions": [ + { + "Cpu": 256, + "Environment": [ + { + "Name": "PORT", + "Value": "80" + } + ], + "Essential": true, + "Image": "nathanpeck/name", + "Memory": 512, + "Name": "app", + "PortMappings": [ + { + "ContainerPort": 80, + "Protocol": "tcp" + } + ], + "Ulimits": [ + { + "HardLimit": 1024000, + "Name": "nofile", + "SoftLimit": 1024000 + } + ] + } + ], + "Cpu": "256", + "Family": "importedenvironmentintegServicetaskdefinition63936B87", + "Memory": "512", + "NetworkMode": "awsvpc", + "RequiresCompatibilities": [ + "EC2", + "FARGATE" + ], + "TaskRoleArn": { + "Fn::GetAtt": [ + "ServicetaskdefinitionTaskRole5B4B60A4", + "Arn" + ] + } + } + }, + "ServiceserviceService6A153CB8": { + "Type": "AWS::ECS::Service", + "Properties": { + "Cluster": { + "Fn::GetAtt": [ + "ResourcesNestedStackResourcesNestedStackResourceCDA26E60", + "Outputs.importedenvironmentintegResourcesEnvironmentenvironmentcluster594A3DCARef" + ] + }, + "DeploymentConfiguration": { + "MaximumPercent": 200, + "MinimumHealthyPercent": 100 + }, + "DesiredCount": 1, + "EnableECSManagedTags": false, + "HealthCheckGracePeriodSeconds": 60, + "LaunchType": "FARGATE", + "LoadBalancers": [ + { + "ContainerName": "app", + "ContainerPort": 80, + "TargetGroupArn": { + "Ref": "ServiceloadbalancerServicelistenerServiceGroup844B51E6" + } + } + ], + "NetworkConfiguration": { + "AwsvpcConfiguration": { + "AssignPublicIp": "DISABLED", + "SecurityGroups": [ + { + "Fn::GetAtt": [ + "ServiceserviceSecurityGroup1915660F", + "GroupId" + ] + } + ], + "Subnets": [ + { + "Fn::GetAtt": [ + "ResourcesNestedStackResourcesNestedStackResourceCDA26E60", + "Outputs.importedenvironmentintegResourcesEnvironmentenvironmentvpcPrivateSubnet1Subnet7309E967Ref" + ] + }, + { + "Fn::GetAtt": [ + "ResourcesNestedStackResourcesNestedStackResourceCDA26E60", + "Outputs.importedenvironmentintegResourcesEnvironmentenvironmentvpcPrivateSubnet2Subnet55014443Ref" + ] + } + ] + } + }, + "TaskDefinition": { + "Ref": "Servicetaskdefinition0CEAD834" + } + }, + "DependsOn": [ + "ServiceloadbalancerServicelistenerC862F722", + "ServiceloadbalancerServicelistenerServiceGroup844B51E6" + ] + }, + "ServiceserviceSecurityGroup1915660F": { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "imported-environment-integ/Service-service/SecurityGroup", + "SecurityGroupEgress": [ + { + "CidrIp": "0.0.0.0/0", + "Description": "Allow all outbound traffic by default", + "IpProtocol": "-1" + } + ], + "VpcId": { + "Fn::GetAtt": [ + "ResourcesNestedStackResourcesNestedStackResourceCDA26E60", + "Outputs.importedenvironmentintegResourcesEnvironmentenvironmentvpcDC34D4D3Ref" + ] + } + } + }, + "ServiceserviceSecurityGroupfromimportedenvironmentintegServiceloadbalancerSecurityGroup68EE533C8070FCF629": { + "Type": "AWS::EC2::SecurityGroupIngress", + "Properties": { + "IpProtocol": "tcp", + "Description": "Load balancer to target", + "FromPort": 80, + "GroupId": { + "Fn::GetAtt": [ + "ServiceserviceSecurityGroup1915660F", + "GroupId" + ] + }, + "SourceSecurityGroupId": { + "Fn::GetAtt": [ + "ServiceloadbalancerSecurityGroup2DA3E8D6", + "GroupId" + ] + }, + "ToPort": 80 + } + } + }, + "Outputs": { + "Serviceloadbalancerdnsoutput": { + "Value": { + "Fn::GetAtt": [ + "ServiceloadbalancerD5D60894", + "DNSName" + ] + } + } + }, + "Parameters": { + "AssetParameters78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01S3Bucket64585C1B": { + "Type": "String", + "Description": "S3 bucket for asset \"78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01\"" + }, + "AssetParameters78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01S3VersionKey41670582": { + "Type": "String", + "Description": "S3 key for asset version \"78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01\"" + }, + "AssetParameters78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01ArtifactHashF1155D65": { + "Type": "String", + "Description": "Artifact hash for asset \"78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01\"" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/imported-environment.integ.snapshot/importedenvironmentintegResourcesAB23EBEF.nested.template.json b/packages/@aws-cdk-containers/ecs-service-extensions/test/imported-environment.integ.snapshot/importedenvironmentintegResourcesAB23EBEF.nested.template.json new file mode 100644 index 0000000000000..31aa8b1dd95d4 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/imported-environment.integ.snapshot/importedenvironmentintegResourcesAB23EBEF.nested.template.json @@ -0,0 +1,422 @@ +{ + "Resources": { + "Environmentenvironmentvpc02635CAD": { + "Type": "AWS::EC2::VPC", + "Properties": { + "CidrBlock": "10.0.0.0/16", + "EnableDnsHostnames": true, + "EnableDnsSupport": true, + "InstanceTenancy": "default", + "Tags": [ + { + "Key": "Name", + "Value": "imported-environment-integ/Resources/Environment-environment-vpc" + } + ] + } + }, + "EnvironmentenvironmentvpcPublicSubnet1Subnet90FA3050": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "Environmentenvironmentvpc02635CAD" + }, + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.0.0/18", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Public" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Public" + }, + { + "Key": "Name", + "Value": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet1" + } + ] + } + }, + "EnvironmentenvironmentvpcPublicSubnet1RouteTableF562A242": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "Environmentenvironmentvpc02635CAD" + }, + "Tags": [ + { + "Key": "Name", + "Value": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet1" + } + ] + } + }, + "EnvironmentenvironmentvpcPublicSubnet1RouteTableAssociationFDE85030": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "EnvironmentenvironmentvpcPublicSubnet1RouteTableF562A242" + }, + "SubnetId": { + "Ref": "EnvironmentenvironmentvpcPublicSubnet1Subnet90FA3050" + } + } + }, + "EnvironmentenvironmentvpcPublicSubnet1DefaultRoute4171CB3F": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "EnvironmentenvironmentvpcPublicSubnet1RouteTableF562A242" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "EnvironmentenvironmentvpcIGWD3352EF8" + } + }, + "DependsOn": [ + "EnvironmentenvironmentvpcVPCGWD59F3C86" + ] + }, + "EnvironmentenvironmentvpcPublicSubnet1EIP0B5752AE": { + "Type": "AWS::EC2::EIP", + "Properties": { + "Domain": "vpc", + "Tags": [ + { + "Key": "Name", + "Value": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet1" + } + ] + } + }, + "EnvironmentenvironmentvpcPublicSubnet1NATGateway65E8E64D": { + "Type": "AWS::EC2::NatGateway", + "Properties": { + "SubnetId": { + "Ref": "EnvironmentenvironmentvpcPublicSubnet1Subnet90FA3050" + }, + "AllocationId": { + "Fn::GetAtt": [ + "EnvironmentenvironmentvpcPublicSubnet1EIP0B5752AE", + "AllocationId" + ] + }, + "Tags": [ + { + "Key": "Name", + "Value": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet1" + } + ] + } + }, + "EnvironmentenvironmentvpcPublicSubnet2Subnet80565813": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "Environmentenvironmentvpc02635CAD" + }, + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.64.0/18", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Public" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Public" + }, + { + "Key": "Name", + "Value": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet2" + } + ] + } + }, + "EnvironmentenvironmentvpcPublicSubnet2RouteTableCC311A3A": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "Environmentenvironmentvpc02635CAD" + }, + "Tags": [ + { + "Key": "Name", + "Value": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet2" + } + ] + } + }, + "EnvironmentenvironmentvpcPublicSubnet2RouteTableAssociation54B3A48A": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "EnvironmentenvironmentvpcPublicSubnet2RouteTableCC311A3A" + }, + "SubnetId": { + "Ref": "EnvironmentenvironmentvpcPublicSubnet2Subnet80565813" + } + } + }, + "EnvironmentenvironmentvpcPublicSubnet2DefaultRouteCA3995A5": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "EnvironmentenvironmentvpcPublicSubnet2RouteTableCC311A3A" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "EnvironmentenvironmentvpcIGWD3352EF8" + } + }, + "DependsOn": [ + "EnvironmentenvironmentvpcVPCGWD59F3C86" + ] + }, + "EnvironmentenvironmentvpcPublicSubnet2EIP54A162E2": { + "Type": "AWS::EC2::EIP", + "Properties": { + "Domain": "vpc", + "Tags": [ + { + "Key": "Name", + "Value": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet2" + } + ] + } + }, + "EnvironmentenvironmentvpcPublicSubnet2NATGatewayEDDF81A3": { + "Type": "AWS::EC2::NatGateway", + "Properties": { + "SubnetId": { + "Ref": "EnvironmentenvironmentvpcPublicSubnet2Subnet80565813" + }, + "AllocationId": { + "Fn::GetAtt": [ + "EnvironmentenvironmentvpcPublicSubnet2EIP54A162E2", + "AllocationId" + ] + }, + "Tags": [ + { + "Key": "Name", + "Value": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet2" + } + ] + } + }, + "EnvironmentenvironmentvpcPrivateSubnet1SubnetE66B59C1": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "Environmentenvironmentvpc02635CAD" + }, + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.128.0/18", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Private" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Private" + }, + { + "Key": "Name", + "Value": "imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet1" + } + ] + } + }, + "EnvironmentenvironmentvpcPrivateSubnet1RouteTable2FAF7412": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "Environmentenvironmentvpc02635CAD" + }, + "Tags": [ + { + "Key": "Name", + "Value": "imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet1" + } + ] + } + }, + "EnvironmentenvironmentvpcPrivateSubnet1RouteTableAssociation46A426C7": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "EnvironmentenvironmentvpcPrivateSubnet1RouteTable2FAF7412" + }, + "SubnetId": { + "Ref": "EnvironmentenvironmentvpcPrivateSubnet1SubnetE66B59C1" + } + } + }, + "EnvironmentenvironmentvpcPrivateSubnet1DefaultRoute1AFA55BA": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "EnvironmentenvironmentvpcPrivateSubnet1RouteTable2FAF7412" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "NatGatewayId": { + "Ref": "EnvironmentenvironmentvpcPublicSubnet1NATGateway65E8E64D" + } + } + }, + "EnvironmentenvironmentvpcPrivateSubnet2SubnetD38DAD67": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "Environmentenvironmentvpc02635CAD" + }, + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.192.0/18", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Private" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Private" + }, + { + "Key": "Name", + "Value": "imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet2" + } + ] + } + }, + "EnvironmentenvironmentvpcPrivateSubnet2RouteTable244FED3F": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "Environmentenvironmentvpc02635CAD" + }, + "Tags": [ + { + "Key": "Name", + "Value": "imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet2" + } + ] + } + }, + "EnvironmentenvironmentvpcPrivateSubnet2RouteTableAssociation9FE6BFCD": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "EnvironmentenvironmentvpcPrivateSubnet2RouteTable244FED3F" + }, + "SubnetId": { + "Ref": "EnvironmentenvironmentvpcPrivateSubnet2SubnetD38DAD67" + } + } + }, + "EnvironmentenvironmentvpcPrivateSubnet2DefaultRouteF5A23DA3": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "EnvironmentenvironmentvpcPrivateSubnet2RouteTable244FED3F" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "NatGatewayId": { + "Ref": "EnvironmentenvironmentvpcPublicSubnet2NATGatewayEDDF81A3" + } + } + }, + "EnvironmentenvironmentvpcIGWD3352EF8": { + "Type": "AWS::EC2::InternetGateway", + "Properties": { + "Tags": [ + { + "Key": "Name", + "Value": "imported-environment-integ/Resources/Environment-environment-vpc" + } + ] + } + }, + "EnvironmentenvironmentvpcVPCGWD59F3C86": { + "Type": "AWS::EC2::VPCGatewayAttachment", + "Properties": { + "VpcId": { + "Ref": "Environmentenvironmentvpc02635CAD" + }, + "InternetGatewayId": { + "Ref": "EnvironmentenvironmentvpcIGWD3352EF8" + } + } + }, + "EnvironmentenvironmentclusterA67A8E69": { + "Type": "AWS::ECS::Cluster" + } + }, + "Outputs": { + "importedenvironmentintegResourcesEnvironmentenvironmentvpcPublicSubnet1Subnet0D15D382Ref": { + "Value": { + "Ref": "EnvironmentenvironmentvpcPublicSubnet1Subnet90FA3050" + } + }, + "importedenvironmentintegResourcesEnvironmentenvironmentvpcPublicSubnet2Subnet68645ACARef": { + "Value": { + "Ref": "EnvironmentenvironmentvpcPublicSubnet2Subnet80565813" + } + }, + "importedenvironmentintegResourcesEnvironmentenvironmentvpcDC34D4D3Ref": { + "Value": { + "Ref": "Environmentenvironmentvpc02635CAD" + } + }, + "importedenvironmentintegResourcesEnvironmentenvironmentcluster594A3DCARef": { + "Value": { + "Ref": "EnvironmentenvironmentclusterA67A8E69" + } + }, + "importedenvironmentintegResourcesEnvironmentenvironmentvpcPrivateSubnet1Subnet7309E967Ref": { + "Value": { + "Ref": "EnvironmentenvironmentvpcPrivateSubnet1SubnetE66B59C1" + } + }, + "importedenvironmentintegResourcesEnvironmentenvironmentvpcPrivateSubnet2Subnet55014443Ref": { + "Value": { + "Ref": "EnvironmentenvironmentvpcPrivateSubnet2SubnetD38DAD67" + } + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/imported-environment.integ.snapshot/manifest.json b/packages/@aws-cdk-containers/ecs-service-extensions/test/imported-environment.integ.snapshot/manifest.json new file mode 100644 index 0000000000000..bbb6f0867cb91 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/imported-environment.integ.snapshot/manifest.json @@ -0,0 +1,331 @@ +{ + "version": "17.0.0", + "artifacts": { + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + }, + "metadata": {} + }, + "imported-environment-integ": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "imported-environment-integ.template.json", + "validateOnSynth": false + }, + "metadata": { + "/imported-environment-integ": [ + { + "type": "aws:cdk:asset", + "data": { + "path": "importedenvironmentintegResourcesAB23EBEF.nested.template.json", + "id": "78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01", + "packaging": "file", + "sourceHash": "78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01", + "s3BucketParameter": "AssetParameters78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01S3Bucket64585C1B", + "s3KeyParameter": "AssetParameters78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01S3VersionKey41670582", + "artifactHashParameter": "AssetParameters78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01ArtifactHashF1155D65" + } + } + ], + "/imported-environment-integ/Resources/Environment-environment-vpc/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "Environmentenvironmentvpc02635CAD" + } + ], + "/imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet1/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "EnvironmentenvironmentvpcPublicSubnet1Subnet90FA3050" + } + ], + "/imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet1/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "EnvironmentenvironmentvpcPublicSubnet1RouteTableF562A242" + } + ], + "/imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet1/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "EnvironmentenvironmentvpcPublicSubnet1RouteTableAssociationFDE85030" + } + ], + "/imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet1/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "EnvironmentenvironmentvpcPublicSubnet1DefaultRoute4171CB3F" + } + ], + "/imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet1/EIP": [ + { + "type": "aws:cdk:logicalId", + "data": "EnvironmentenvironmentvpcPublicSubnet1EIP0B5752AE" + } + ], + "/imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet1/NATGateway": [ + { + "type": "aws:cdk:logicalId", + "data": "EnvironmentenvironmentvpcPublicSubnet1NATGateway65E8E64D" + } + ], + "/imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet2/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "EnvironmentenvironmentvpcPublicSubnet2Subnet80565813" + } + ], + "/imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet2/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "EnvironmentenvironmentvpcPublicSubnet2RouteTableCC311A3A" + } + ], + "/imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet2/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "EnvironmentenvironmentvpcPublicSubnet2RouteTableAssociation54B3A48A" + } + ], + "/imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet2/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "EnvironmentenvironmentvpcPublicSubnet2DefaultRouteCA3995A5" + } + ], + "/imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet2/EIP": [ + { + "type": "aws:cdk:logicalId", + "data": "EnvironmentenvironmentvpcPublicSubnet2EIP54A162E2" + } + ], + "/imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet2/NATGateway": [ + { + "type": "aws:cdk:logicalId", + "data": "EnvironmentenvironmentvpcPublicSubnet2NATGatewayEDDF81A3" + } + ], + "/imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet1/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "EnvironmentenvironmentvpcPrivateSubnet1SubnetE66B59C1" + } + ], + "/imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet1/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "EnvironmentenvironmentvpcPrivateSubnet1RouteTable2FAF7412" + } + ], + "/imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet1/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "EnvironmentenvironmentvpcPrivateSubnet1RouteTableAssociation46A426C7" + } + ], + "/imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet1/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "EnvironmentenvironmentvpcPrivateSubnet1DefaultRoute1AFA55BA" + } + ], + "/imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet2/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "EnvironmentenvironmentvpcPrivateSubnet2SubnetD38DAD67" + } + ], + "/imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet2/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "EnvironmentenvironmentvpcPrivateSubnet2RouteTable244FED3F" + } + ], + "/imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet2/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "EnvironmentenvironmentvpcPrivateSubnet2RouteTableAssociation9FE6BFCD" + } + ], + "/imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet2/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "EnvironmentenvironmentvpcPrivateSubnet2DefaultRouteF5A23DA3" + } + ], + "/imported-environment-integ/Resources/Environment-environment-vpc/IGW": [ + { + "type": "aws:cdk:logicalId", + "data": "EnvironmentenvironmentvpcIGWD3352EF8" + } + ], + "/imported-environment-integ/Resources/Environment-environment-vpc/VPCGW": [ + { + "type": "aws:cdk:logicalId", + "data": "EnvironmentenvironmentvpcVPCGWD59F3C86" + } + ], + "/imported-environment-integ/Resources/Environment-environment-cluster/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "EnvironmentenvironmentclusterA67A8E69" + } + ], + "/imported-environment-integ/Resources/importedenvironmentintegResourcesEnvironmentenvironmentvpcPublicSubnet1Subnet0D15D382Ref": [ + { + "type": "aws:cdk:logicalId", + "data": "importedenvironmentintegResourcesEnvironmentenvironmentvpcPublicSubnet1Subnet0D15D382Ref" + } + ], + "/imported-environment-integ/Resources/importedenvironmentintegResourcesEnvironmentenvironmentvpcPublicSubnet2Subnet68645ACARef": [ + { + "type": "aws:cdk:logicalId", + "data": "importedenvironmentintegResourcesEnvironmentenvironmentvpcPublicSubnet2Subnet68645ACARef" + } + ], + "/imported-environment-integ/Resources/importedenvironmentintegResourcesEnvironmentenvironmentvpcDC34D4D3Ref": [ + { + "type": "aws:cdk:logicalId", + "data": "importedenvironmentintegResourcesEnvironmentenvironmentvpcDC34D4D3Ref" + } + ], + "/imported-environment-integ/Resources/importedenvironmentintegResourcesEnvironmentenvironmentcluster594A3DCARef": [ + { + "type": "aws:cdk:logicalId", + "data": "importedenvironmentintegResourcesEnvironmentenvironmentcluster594A3DCARef" + } + ], + "/imported-environment-integ/Resources/importedenvironmentintegResourcesEnvironmentenvironmentvpcPrivateSubnet1Subnet7309E967Ref": [ + { + "type": "aws:cdk:logicalId", + "data": "importedenvironmentintegResourcesEnvironmentenvironmentvpcPrivateSubnet1Subnet7309E967Ref" + } + ], + "/imported-environment-integ/Resources/importedenvironmentintegResourcesEnvironmentenvironmentvpcPrivateSubnet2Subnet55014443Ref": [ + { + "type": "aws:cdk:logicalId", + "data": "importedenvironmentintegResourcesEnvironmentenvironmentvpcPrivateSubnet2Subnet55014443Ref" + } + ], + "/imported-environment-integ/Resources.NestedStack/Resources.NestedStackResource": [ + { + "type": "aws:cdk:logicalId", + "data": "ResourcesNestedStackResourcesNestedStackResourceCDA26E60" + } + ], + "/imported-environment-integ/Vpc/PublicSubnet1": [ + { + "type": "aws:cdk:warning", + "data": "No routeTableId was provided to the subnet at 'imported-environment-integ/Vpc/PublicSubnet1'. Attempting to read its .routeTable.routeTableId will return null/undefined. (More info: https://github.com/aws/aws-cdk/pull/3171)" + } + ], + "/imported-environment-integ/Vpc/PublicSubnet2": [ + { + "type": "aws:cdk:warning", + "data": "No routeTableId was provided to the subnet at 'imported-environment-integ/Vpc/PublicSubnet2'. Attempting to read its .routeTable.routeTableId will return null/undefined. (More info: https://github.com/aws/aws-cdk/pull/3171)" + } + ], + "/imported-environment-integ/Vpc/PrivateSubnet1": [ + { + "type": "aws:cdk:warning", + "data": "No routeTableId was provided to the subnet at 'imported-environment-integ/Vpc/PrivateSubnet1'. Attempting to read its .routeTable.routeTableId will return null/undefined. (More info: https://github.com/aws/aws-cdk/pull/3171)" + } + ], + "/imported-environment-integ/Vpc/PrivateSubnet2": [ + { + "type": "aws:cdk:warning", + "data": "No routeTableId was provided to the subnet at 'imported-environment-integ/Vpc/PrivateSubnet2'. Attempting to read its .routeTable.routeTableId will return null/undefined. (More info: https://github.com/aws/aws-cdk/pull/3171)" + } + ], + "/imported-environment-integ/Service-load-balancer/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ServiceloadbalancerD5D60894" + } + ], + "/imported-environment-integ/Service-load-balancer/SecurityGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ServiceloadbalancerSecurityGroup2DA3E8D6" + } + ], + "/imported-environment-integ/Service-load-balancer/SecurityGroup/to importedenvironmentintegServiceserviceSecurityGroup2BE90F74:80": [ + { + "type": "aws:cdk:logicalId", + "data": "ServiceloadbalancerSecurityGrouptoimportedenvironmentintegServiceserviceSecurityGroup2BE90F7480B17EB7CA" + } + ], + "/imported-environment-integ/Service-load-balancer/Service-listener/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ServiceloadbalancerServicelistenerC862F722" + } + ], + "/imported-environment-integ/Service-load-balancer/Service-listener/ServiceGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ServiceloadbalancerServicelistenerServiceGroup844B51E6" + } + ], + "/imported-environment-integ/Service-load-balancer-dns-output": [ + { + "type": "aws:cdk:logicalId", + "data": "Serviceloadbalancerdnsoutput" + } + ], + "/imported-environment-integ/Service-task-definition/TaskRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ServicetaskdefinitionTaskRole5B4B60A4" + } + ], + "/imported-environment-integ/Service-task-definition/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "Servicetaskdefinition0CEAD834" + } + ], + "/imported-environment-integ/Service-service/Service": [ + { + "type": "aws:cdk:logicalId", + "data": "ServiceserviceService6A153CB8" + } + ], + "/imported-environment-integ/Service-service/SecurityGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ServiceserviceSecurityGroup1915660F" + } + ], + "/imported-environment-integ/Service-service/SecurityGroup/from importedenvironmentintegServiceloadbalancerSecurityGroup68EE533C:80": [ + { + "type": "aws:cdk:logicalId", + "data": "ServiceserviceSecurityGroupfromimportedenvironmentintegServiceloadbalancerSecurityGroup68EE533C8070FCF629" + } + ], + "/imported-environment-integ/AssetParameters/78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01/S3Bucket": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetParameters78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01S3Bucket64585C1B" + } + ], + "/imported-environment-integ/AssetParameters/78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01/S3VersionKey": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetParameters78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01S3VersionKey41670582" + } + ], + "/imported-environment-integ/AssetParameters/78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01/ArtifactHash": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetParameters78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01ArtifactHashF1155D65" + } + ] + }, + "displayName": "imported-environment-integ" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/imported-environment.integ.snapshot/tree.json b/packages/@aws-cdk-containers/ecs-service-extensions/test/imported-environment.integ.snapshot/tree.json new file mode 100644 index 0000000000000..c44ae38708f4d --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/imported-environment.integ.snapshot/tree.json @@ -0,0 +1,1398 @@ +{ + "version": "tree-0.1", + "tree": { + "id": "App", + "path": "", + "children": { + "Tree": { + "id": "Tree", + "path": "Tree", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "imported-environment-integ": { + "id": "imported-environment-integ", + "path": "imported-environment-integ", + "children": { + "Resources": { + "id": "Resources", + "path": "imported-environment-integ/Resources", + "children": { + "Environment": { + "id": "Environment", + "path": "imported-environment-integ/Resources/Environment", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "Environment-environment-vpc": { + "id": "Environment-environment-vpc", + "path": "imported-environment-integ/Resources/Environment-environment-vpc", + "children": { + "Resource": { + "id": "Resource", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::VPC", + "aws:cdk:cloudformation:props": { + "cidrBlock": "10.0.0.0/16", + "enableDnsHostnames": true, + "enableDnsSupport": true, + "instanceTenancy": "default", + "tags": [ + { + "key": "Name", + "value": "imported-environment-integ/Resources/Environment-environment-vpc" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "PublicSubnet1": { + "id": "PublicSubnet1", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet1", + "children": { + "Subnet": { + "id": "Subnet", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet1/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "Environmentenvironmentvpc02635CAD" + }, + "availabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.0.0/18", + "mapPublicIpOnLaunch": true, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Public" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Public" + }, + { + "key": "Name", + "value": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet1/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet1/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "Environmentenvironmentvpc02635CAD" + }, + "tags": [ + { + "key": "Name", + "value": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet1/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "EnvironmentenvironmentvpcPublicSubnet1RouteTableF562A242" + }, + "subnetId": { + "Ref": "EnvironmentenvironmentvpcPublicSubnet1Subnet90FA3050" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet1/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "EnvironmentenvironmentvpcPublicSubnet1RouteTableF562A242" + }, + "destinationCidrBlock": "0.0.0.0/0", + "gatewayId": { + "Ref": "EnvironmentenvironmentvpcIGWD3352EF8" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "EIP": { + "id": "EIP", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet1/EIP", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::EIP", + "aws:cdk:cloudformation:props": { + "domain": "vpc", + "tags": [ + { + "key": "Name", + "value": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "NATGateway": { + "id": "NATGateway", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet1/NATGateway", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::NatGateway", + "aws:cdk:cloudformation:props": { + "subnetId": { + "Ref": "EnvironmentenvironmentvpcPublicSubnet1Subnet90FA3050" + }, + "allocationId": { + "Fn::GetAtt": [ + "EnvironmentenvironmentvpcPublicSubnet1EIP0B5752AE", + "AllocationId" + ] + }, + "tags": [ + { + "key": "Name", + "value": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "PublicSubnet2": { + "id": "PublicSubnet2", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet2", + "children": { + "Subnet": { + "id": "Subnet", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet2/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "Environmentenvironmentvpc02635CAD" + }, + "availabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.64.0/18", + "mapPublicIpOnLaunch": true, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Public" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Public" + }, + { + "key": "Name", + "value": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet2/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet2/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "Environmentenvironmentvpc02635CAD" + }, + "tags": [ + { + "key": "Name", + "value": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet2/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "EnvironmentenvironmentvpcPublicSubnet2RouteTableCC311A3A" + }, + "subnetId": { + "Ref": "EnvironmentenvironmentvpcPublicSubnet2Subnet80565813" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet2/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "EnvironmentenvironmentvpcPublicSubnet2RouteTableCC311A3A" + }, + "destinationCidrBlock": "0.0.0.0/0", + "gatewayId": { + "Ref": "EnvironmentenvironmentvpcIGWD3352EF8" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "EIP": { + "id": "EIP", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet2/EIP", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::EIP", + "aws:cdk:cloudformation:props": { + "domain": "vpc", + "tags": [ + { + "key": "Name", + "value": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "NATGateway": { + "id": "NATGateway", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet2/NATGateway", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::NatGateway", + "aws:cdk:cloudformation:props": { + "subnetId": { + "Ref": "EnvironmentenvironmentvpcPublicSubnet2Subnet80565813" + }, + "allocationId": { + "Fn::GetAtt": [ + "EnvironmentenvironmentvpcPublicSubnet2EIP54A162E2", + "AllocationId" + ] + }, + "tags": [ + { + "key": "Name", + "value": "imported-environment-integ/Resources/Environment-environment-vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "PrivateSubnet1": { + "id": "PrivateSubnet1", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet1", + "children": { + "Subnet": { + "id": "Subnet", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet1/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "Environmentenvironmentvpc02635CAD" + }, + "availabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.128.0/18", + "mapPublicIpOnLaunch": false, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Private" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Private" + }, + { + "key": "Name", + "value": "imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet1/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet1/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "Environmentenvironmentvpc02635CAD" + }, + "tags": [ + { + "key": "Name", + "value": "imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet1/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "EnvironmentenvironmentvpcPrivateSubnet1RouteTable2FAF7412" + }, + "subnetId": { + "Ref": "EnvironmentenvironmentvpcPrivateSubnet1SubnetE66B59C1" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet1/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "EnvironmentenvironmentvpcPrivateSubnet1RouteTable2FAF7412" + }, + "destinationCidrBlock": "0.0.0.0/0", + "natGatewayId": { + "Ref": "EnvironmentenvironmentvpcPublicSubnet1NATGateway65E8E64D" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "PrivateSubnet2": { + "id": "PrivateSubnet2", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet2", + "children": { + "Subnet": { + "id": "Subnet", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet2/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "Environmentenvironmentvpc02635CAD" + }, + "availabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.192.0/18", + "mapPublicIpOnLaunch": false, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Private" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Private" + }, + { + "key": "Name", + "value": "imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet2/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet2/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "Environmentenvironmentvpc02635CAD" + }, + "tags": [ + { + "key": "Name", + "value": "imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet2/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "EnvironmentenvironmentvpcPrivateSubnet2RouteTable244FED3F" + }, + "subnetId": { + "Ref": "EnvironmentenvironmentvpcPrivateSubnet2SubnetD38DAD67" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/PrivateSubnet2/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "EnvironmentenvironmentvpcPrivateSubnet2RouteTable244FED3F" + }, + "destinationCidrBlock": "0.0.0.0/0", + "natGatewayId": { + "Ref": "EnvironmentenvironmentvpcPublicSubnet2NATGatewayEDDF81A3" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "IGW": { + "id": "IGW", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/IGW", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::InternetGateway", + "aws:cdk:cloudformation:props": { + "tags": [ + { + "key": "Name", + "value": "imported-environment-integ/Resources/Environment-environment-vpc" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "VPCGW": { + "id": "VPCGW", + "path": "imported-environment-integ/Resources/Environment-environment-vpc/VPCGW", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::VPCGatewayAttachment", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "Environmentenvironmentvpc02635CAD" + }, + "internetGatewayId": { + "Ref": "EnvironmentenvironmentvpcIGWD3352EF8" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Environment-environment-cluster": { + "id": "Environment-environment-cluster", + "path": "imported-environment-integ/Resources/Environment-environment-cluster", + "children": { + "Resource": { + "id": "Resource", + "path": "imported-environment-integ/Resources/Environment-environment-cluster/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::Cluster", + "aws:cdk:cloudformation:props": {} + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "importedenvironmentintegResourcesEnvironmentenvironmentvpcPublicSubnet1Subnet0D15D382Ref": { + "id": "importedenvironmentintegResourcesEnvironmentenvironmentvpcPublicSubnet1Subnet0D15D382Ref", + "path": "imported-environment-integ/Resources/importedenvironmentintegResourcesEnvironmentenvironmentvpcPublicSubnet1Subnet0D15D382Ref", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnOutput", + "version": "0.0.0" + } + }, + "importedenvironmentintegResourcesEnvironmentenvironmentvpcPublicSubnet2Subnet68645ACARef": { + "id": "importedenvironmentintegResourcesEnvironmentenvironmentvpcPublicSubnet2Subnet68645ACARef", + "path": "imported-environment-integ/Resources/importedenvironmentintegResourcesEnvironmentenvironmentvpcPublicSubnet2Subnet68645ACARef", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnOutput", + "version": "0.0.0" + } + }, + "importedenvironmentintegResourcesEnvironmentenvironmentvpcDC34D4D3Ref": { + "id": "importedenvironmentintegResourcesEnvironmentenvironmentvpcDC34D4D3Ref", + "path": "imported-environment-integ/Resources/importedenvironmentintegResourcesEnvironmentenvironmentvpcDC34D4D3Ref", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnOutput", + "version": "0.0.0" + } + }, + "importedenvironmentintegResourcesEnvironmentenvironmentcluster594A3DCARef": { + "id": "importedenvironmentintegResourcesEnvironmentenvironmentcluster594A3DCARef", + "path": "imported-environment-integ/Resources/importedenvironmentintegResourcesEnvironmentenvironmentcluster594A3DCARef", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnOutput", + "version": "0.0.0" + } + }, + "importedenvironmentintegResourcesEnvironmentenvironmentvpcPrivateSubnet1Subnet7309E967Ref": { + "id": "importedenvironmentintegResourcesEnvironmentenvironmentvpcPrivateSubnet1Subnet7309E967Ref", + "path": "imported-environment-integ/Resources/importedenvironmentintegResourcesEnvironmentenvironmentvpcPrivateSubnet1Subnet7309E967Ref", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnOutput", + "version": "0.0.0" + } + }, + "importedenvironmentintegResourcesEnvironmentenvironmentvpcPrivateSubnet2Subnet55014443Ref": { + "id": "importedenvironmentintegResourcesEnvironmentenvironmentvpcPrivateSubnet2Subnet55014443Ref", + "path": "imported-environment-integ/Resources/importedenvironmentintegResourcesEnvironmentenvironmentvpcPrivateSubnet2Subnet55014443Ref", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnOutput", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.NestedStack", + "version": "0.0.0" + } + }, + "Resources.NestedStack": { + "id": "Resources.NestedStack", + "path": "imported-environment-integ/Resources.NestedStack", + "children": { + "Resources.NestedStackResource": { + "id": "Resources.NestedStackResource", + "path": "imported-environment-integ/Resources.NestedStack/Resources.NestedStackResource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::CloudFormation::Stack", + "aws:cdk:cloudformation:props": { + "templateUrl": { + "Fn::Join": [ + "", + [ + "https://s3.", + { + "Ref": "AWS::Region" + }, + ".", + { + "Ref": "AWS::URLSuffix" + }, + "/", + { + "Ref": "AssetParameters78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01S3Bucket64585C1B" + }, + "/", + { + "Fn::Select": [ + 0, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParameters78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01S3VersionKey41670582" + } + ] + } + ] + }, + { + "Fn::Select": [ + 1, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParameters78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01S3VersionKey41670582" + } + ] + } + ] + } + ] + ] + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnStack", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "Vpc": { + "id": "Vpc", + "path": "imported-environment-integ/Vpc", + "children": { + "PublicSubnet1": { + "id": "PublicSubnet1", + "path": "imported-environment-integ/Vpc/PublicSubnet1", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "PublicSubnet2": { + "id": "PublicSubnet2", + "path": "imported-environment-integ/Vpc/PublicSubnet2", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "PrivateSubnet1": { + "id": "PrivateSubnet1", + "path": "imported-environment-integ/Vpc/PrivateSubnet1", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "PrivateSubnet2": { + "id": "PrivateSubnet2", + "path": "imported-environment-integ/Vpc/PrivateSubnet2", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Cluster": { + "id": "Cluster", + "path": "imported-environment-integ/Cluster", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Environment": { + "id": "Environment", + "path": "imported-environment-integ/Environment", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "Service": { + "id": "Service", + "path": "imported-environment-integ/Service", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "Service-load-balancer": { + "id": "Service-load-balancer", + "path": "imported-environment-integ/Service-load-balancer", + "children": { + "Resource": { + "id": "Resource", + "path": "imported-environment-integ/Service-load-balancer/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ElasticLoadBalancingV2::LoadBalancer", + "aws:cdk:cloudformation:props": { + "loadBalancerAttributes": [ + { + "key": "deletion_protection.enabled", + "value": "false" + } + ], + "scheme": "internet-facing", + "securityGroups": [ + { + "Fn::GetAtt": [ + "ServiceloadbalancerSecurityGroup2DA3E8D6", + "GroupId" + ] + } + ], + "subnets": [ + { + "Fn::GetAtt": [ + "ResourcesNestedStackResourcesNestedStackResourceCDA26E60", + "Outputs.importedenvironmentintegResourcesEnvironmentenvironmentvpcPublicSubnet1Subnet0D15D382Ref" + ] + }, + { + "Fn::GetAtt": [ + "ResourcesNestedStackResourcesNestedStackResourceCDA26E60", + "Outputs.importedenvironmentintegResourcesEnvironmentenvironmentvpcPublicSubnet2Subnet68645ACARef" + ] + } + ], + "type": "application" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "SecurityGroup": { + "id": "SecurityGroup", + "path": "imported-environment-integ/Service-load-balancer/SecurityGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "imported-environment-integ/Service-load-balancer/SecurityGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroup", + "aws:cdk:cloudformation:props": { + "groupDescription": "Automatically created Security Group for ELB importedenvironmentintegServiceloadbalancerFAE8A5FA", + "securityGroupIngress": [ + { + "cidrIp": "0.0.0.0/0", + "ipProtocol": "tcp", + "fromPort": 80, + "toPort": 80, + "description": "Allow from anyone on port 80" + } + ], + "vpcId": { + "Fn::GetAtt": [ + "ResourcesNestedStackResourcesNestedStackResourceCDA26E60", + "Outputs.importedenvironmentintegResourcesEnvironmentenvironmentvpcDC34D4D3Ref" + ] + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "to importedenvironmentintegServiceserviceSecurityGroup2BE90F74:80": { + "id": "to importedenvironmentintegServiceserviceSecurityGroup2BE90F74:80", + "path": "imported-environment-integ/Service-load-balancer/SecurityGroup/to importedenvironmentintegServiceserviceSecurityGroup2BE90F74:80", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroupEgress", + "aws:cdk:cloudformation:props": { + "groupId": { + "Fn::GetAtt": [ + "ServiceloadbalancerSecurityGroup2DA3E8D6", + "GroupId" + ] + }, + "ipProtocol": "tcp", + "description": "Load balancer to target", + "destinationSecurityGroupId": { + "Fn::GetAtt": [ + "ServiceserviceSecurityGroup1915660F", + "GroupId" + ] + }, + "fromPort": 80, + "toPort": 80 + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Service-listener": { + "id": "Service-listener", + "path": "imported-environment-integ/Service-load-balancer/Service-listener", + "children": { + "Resource": { + "id": "Resource", + "path": "imported-environment-integ/Service-load-balancer/Service-listener/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ElasticLoadBalancingV2::Listener", + "aws:cdk:cloudformation:props": { + "defaultActions": [ + { + "type": "forward", + "targetGroupArn": { + "Ref": "ServiceloadbalancerServicelistenerServiceGroup844B51E6" + } + } + ], + "loadBalancerArn": { + "Ref": "ServiceloadbalancerD5D60894" + }, + "port": 80, + "protocol": "HTTP" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "ServiceGroup": { + "id": "ServiceGroup", + "path": "imported-environment-integ/Service-load-balancer/Service-listener/ServiceGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "imported-environment-integ/Service-load-balancer/Service-listener/ServiceGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ElasticLoadBalancingV2::TargetGroup", + "aws:cdk:cloudformation:props": { + "port": 80, + "protocol": "HTTP", + "targetGroupAttributes": [ + { + "key": "deregistration_delay.timeout_seconds", + "value": "10" + }, + { + "key": "stickiness.enabled", + "value": "false" + } + ], + "targetType": "ip", + "vpcId": { + "Fn::GetAtt": [ + "ResourcesNestedStackResourcesNestedStackResourceCDA26E60", + "Outputs.importedenvironmentintegResourcesEnvironmentenvironmentvpcDC34D4D3Ref" + ] + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Service-load-balancer-dns-output": { + "id": "Service-load-balancer-dns-output", + "path": "imported-environment-integ/Service-load-balancer-dns-output", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnOutput", + "version": "0.0.0" + } + }, + "Service-task-definition": { + "id": "Service-task-definition", + "path": "imported-environment-integ/Service-task-definition", + "children": { + "TaskRole": { + "id": "TaskRole", + "path": "imported-environment-integ/Service-task-definition/TaskRole", + "children": { + "Resource": { + "id": "Resource", + "path": "imported-environment-integ/Service-task-definition/TaskRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "imported-environment-integ/Service-task-definition/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::TaskDefinition", + "aws:cdk:cloudformation:props": { + "containerDefinitions": [ + { + "cpu": 256, + "essential": true, + "image": "nathanpeck/name", + "memory": 512, + "name": "app", + "portMappings": [ + { + "containerPort": 80, + "protocol": "tcp" + } + ], + "ulimits": [ + { + "name": "nofile", + "softLimit": 1024000, + "hardLimit": 1024000 + } + ], + "environment": [ + { + "name": "PORT", + "value": "80" + } + ] + } + ], + "cpu": "256", + "family": "importedenvironmentintegServicetaskdefinition63936B87", + "memory": "512", + "networkMode": "awsvpc", + "requiresCompatibilities": [ + "EC2", + "FARGATE" + ], + "taskRoleArn": { + "Fn::GetAtt": [ + "ServicetaskdefinitionTaskRole5B4B60A4", + "Arn" + ] + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "app": { + "id": "app", + "path": "imported-environment-integ/Service-task-definition/app", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Service-service": { + "id": "Service-service", + "path": "imported-environment-integ/Service-service", + "children": { + "Service": { + "id": "Service", + "path": "imported-environment-integ/Service-service/Service", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::Service", + "aws:cdk:cloudformation:props": { + "cluster": { + "Fn::GetAtt": [ + "ResourcesNestedStackResourcesNestedStackResourceCDA26E60", + "Outputs.importedenvironmentintegResourcesEnvironmentenvironmentcluster594A3DCARef" + ] + }, + "deploymentConfiguration": { + "maximumPercent": 200, + "minimumHealthyPercent": 100 + }, + "desiredCount": 1, + "enableEcsManagedTags": false, + "healthCheckGracePeriodSeconds": 60, + "launchType": "FARGATE", + "loadBalancers": [ + { + "targetGroupArn": { + "Ref": "ServiceloadbalancerServicelistenerServiceGroup844B51E6" + }, + "containerName": "app", + "containerPort": 80 + } + ], + "networkConfiguration": { + "awsvpcConfiguration": { + "assignPublicIp": "DISABLED", + "subnets": [ + { + "Fn::GetAtt": [ + "ResourcesNestedStackResourcesNestedStackResourceCDA26E60", + "Outputs.importedenvironmentintegResourcesEnvironmentenvironmentvpcPrivateSubnet1Subnet7309E967Ref" + ] + }, + { + "Fn::GetAtt": [ + "ResourcesNestedStackResourcesNestedStackResourceCDA26E60", + "Outputs.importedenvironmentintegResourcesEnvironmentenvironmentvpcPrivateSubnet2Subnet55014443Ref" + ] + } + ], + "securityGroups": [ + { + "Fn::GetAtt": [ + "ServiceserviceSecurityGroup1915660F", + "GroupId" + ] + } + ] + } + }, + "taskDefinition": { + "Ref": "Servicetaskdefinition0CEAD834" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "SecurityGroup": { + "id": "SecurityGroup", + "path": "imported-environment-integ/Service-service/SecurityGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "imported-environment-integ/Service-service/SecurityGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroup", + "aws:cdk:cloudformation:props": { + "groupDescription": "imported-environment-integ/Service-service/SecurityGroup", + "securityGroupEgress": [ + { + "cidrIp": "0.0.0.0/0", + "description": "Allow all outbound traffic by default", + "ipProtocol": "-1" + } + ], + "vpcId": { + "Fn::GetAtt": [ + "ResourcesNestedStackResourcesNestedStackResourceCDA26E60", + "Outputs.importedenvironmentintegResourcesEnvironmentenvironmentvpcDC34D4D3Ref" + ] + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "from importedenvironmentintegServiceloadbalancerSecurityGroup68EE533C:80": { + "id": "from importedenvironmentintegServiceloadbalancerSecurityGroup68EE533C:80", + "path": "imported-environment-integ/Service-service/SecurityGroup/from importedenvironmentintegServiceloadbalancerSecurityGroup68EE533C:80", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroupIngress", + "aws:cdk:cloudformation:props": { + "ipProtocol": "tcp", + "description": "Load balancer to target", + "fromPort": 80, + "groupId": { + "Fn::GetAtt": [ + "ServiceserviceSecurityGroup1915660F", + "GroupId" + ] + }, + "sourceSecurityGroupId": { + "Fn::GetAtt": [ + "ServiceloadbalancerSecurityGroup2DA3E8D6", + "GroupId" + ] + }, + "toPort": 80 + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "AssetParameters": { + "id": "AssetParameters", + "path": "imported-environment-integ/AssetParameters", + "children": { + "78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01": { + "id": "78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01", + "path": "imported-environment-integ/AssetParameters/78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01", + "children": { + "S3Bucket": { + "id": "S3Bucket", + "path": "imported-environment-integ/AssetParameters/78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01/S3Bucket", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnParameter", + "version": "0.0.0" + } + }, + "S3VersionKey": { + "id": "S3VersionKey", + "path": "imported-environment-integ/AssetParameters/78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01/S3VersionKey", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnParameter", + "version": "0.0.0" + } + }, + "ArtifactHash": { + "id": "ArtifactHash", + "path": "imported-environment-integ/AssetParameters/78cd13b88474241c9844c0c939b6fca0f485ffbba32f35718002319e7ab73a01/ArtifactHash", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnParameter", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Stack", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.App", + "version": "0.0.0" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/multiple-environments.integ.snapshot/aws-ecs-integ.template.json b/packages/@aws-cdk-containers/ecs-service-extensions/test/multiple-environments.integ.snapshot/aws-ecs-integ.template.json new file mode 100644 index 0000000000000..935fc0cb1112f --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/multiple-environments.integ.snapshot/aws-ecs-integ.template.json @@ -0,0 +1,1996 @@ +{ + "Resources": { + "productionenvironmentvpcAEB47DF7": { + "Type": "AWS::EC2::VPC", + "Properties": { + "CidrBlock": "10.0.0.0/16", + "EnableDnsHostnames": true, + "EnableDnsSupport": true, + "InstanceTenancy": "default", + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet1Subnet8D92C089": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.0.0/18", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Public" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Public" + }, + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet1RouteTable6E9ABC21": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet1RouteTableAssociationA8117374": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPublicSubnet1RouteTable6E9ABC21" + }, + "SubnetId": { + "Ref": "productionenvironmentvpcPublicSubnet1Subnet8D92C089" + } + } + }, + "productionenvironmentvpcPublicSubnet1DefaultRoute524C894D": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPublicSubnet1RouteTable6E9ABC21" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "productionenvironmentvpcIGWE7C39890" + } + }, + "DependsOn": [ + "productionenvironmentvpcVPCGW1B428D07" + ] + }, + "productionenvironmentvpcPublicSubnet1EIP54BA88DB": { + "Type": "AWS::EC2::EIP", + "Properties": { + "Domain": "vpc", + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet1NATGateway6075E4CA": { + "Type": "AWS::EC2::NatGateway", + "Properties": { + "SubnetId": { + "Ref": "productionenvironmentvpcPublicSubnet1Subnet8D92C089" + }, + "AllocationId": { + "Fn::GetAtt": [ + "productionenvironmentvpcPublicSubnet1EIP54BA88DB", + "AllocationId" + ] + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet2Subnet298E6C31": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.64.0/18", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Public" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Public" + }, + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet2RouteTable842A68D7": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet2RouteTableAssociation0A7549F3": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPublicSubnet2RouteTable842A68D7" + }, + "SubnetId": { + "Ref": "productionenvironmentvpcPublicSubnet2Subnet298E6C31" + } + } + }, + "productionenvironmentvpcPublicSubnet2DefaultRoute92CD697D": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPublicSubnet2RouteTable842A68D7" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "productionenvironmentvpcIGWE7C39890" + } + }, + "DependsOn": [ + "productionenvironmentvpcVPCGW1B428D07" + ] + }, + "productionenvironmentvpcPublicSubnet2EIP14CA46AA": { + "Type": "AWS::EC2::EIP", + "Properties": { + "Domain": "vpc", + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet2NATGatewayE1850FCC": { + "Type": "AWS::EC2::NatGateway", + "Properties": { + "SubnetId": { + "Ref": "productionenvironmentvpcPublicSubnet2Subnet298E6C31" + }, + "AllocationId": { + "Fn::GetAtt": [ + "productionenvironmentvpcPublicSubnet2EIP14CA46AA", + "AllocationId" + ] + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "productionenvironmentvpcPrivateSubnet1Subnet53F632E6": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.128.0/18", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Private" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Private" + }, + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1" + } + ] + } + }, + "productionenvironmentvpcPrivateSubnet1RouteTable2C6DFF0C": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1" + } + ] + } + }, + "productionenvironmentvpcPrivateSubnet1RouteTableAssociation8BA32463": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet1RouteTable2C6DFF0C" + }, + "SubnetId": { + "Ref": "productionenvironmentvpcPrivateSubnet1Subnet53F632E6" + } + } + }, + "productionenvironmentvpcPrivateSubnet1DefaultRouteFBB3DE6C": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet1RouteTable2C6DFF0C" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "NatGatewayId": { + "Ref": "productionenvironmentvpcPublicSubnet1NATGateway6075E4CA" + } + } + }, + "productionenvironmentvpcPrivateSubnet2Subnet756FB93C": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.192.0/18", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Private" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Private" + }, + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2" + } + ] + } + }, + "productionenvironmentvpcPrivateSubnet2RouteTable2F77D0D2": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2" + } + ] + } + }, + "productionenvironmentvpcPrivateSubnet2RouteTableAssociation09188261": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet2RouteTable2F77D0D2" + }, + "SubnetId": { + "Ref": "productionenvironmentvpcPrivateSubnet2Subnet756FB93C" + } + } + }, + "productionenvironmentvpcPrivateSubnet2DefaultRoute5F9AB6C1": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet2RouteTable2F77D0D2" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "NatGatewayId": { + "Ref": "productionenvironmentvpcPublicSubnet2NATGatewayE1850FCC" + } + } + }, + "productionenvironmentvpcIGWE7C39890": { + "Type": "AWS::EC2::InternetGateway", + "Properties": { + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc" + } + ] + } + }, + "productionenvironmentvpcVPCGW1B428D07": { + "Type": "AWS::EC2::VPCGatewayAttachment", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "InternetGatewayId": { + "Ref": "productionenvironmentvpcIGWE7C39890" + } + } + }, + "productionenvironmentclusterC6599D2D": { + "Type": "AWS::ECS::Cluster" + }, + "productionenvironmentclusterDefaultServiceDiscoveryNamespaceBE74D64D": { + "Type": "AWS::ServiceDiscovery::PrivateDnsNamespace", + "Properties": { + "Name": "production", + "Vpc": { + "Ref": "productionenvironmentvpcAEB47DF7" + } + } + }, + "developmentenvironmentvpcCB4216A4": { + "Type": "AWS::EC2::VPC", + "Properties": { + "CidrBlock": "10.0.0.0/16", + "EnableDnsHostnames": true, + "EnableDnsSupport": true, + "InstanceTenancy": "default", + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/development-environment-vpc" + } + ] + } + }, + "developmentenvironmentvpcPublicSubnet1Subnet0D18046B": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "developmentenvironmentvpcCB4216A4" + }, + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.0.0/18", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Public" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Public" + }, + { + "Key": "Name", + "Value": "aws-ecs-integ/development-environment-vpc/PublicSubnet1" + } + ] + } + }, + "developmentenvironmentvpcPublicSubnet1RouteTable8FC58983": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "developmentenvironmentvpcCB4216A4" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/development-environment-vpc/PublicSubnet1" + } + ] + } + }, + "developmentenvironmentvpcPublicSubnet1RouteTableAssociation8F257A0C": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "developmentenvironmentvpcPublicSubnet1RouteTable8FC58983" + }, + "SubnetId": { + "Ref": "developmentenvironmentvpcPublicSubnet1Subnet0D18046B" + } + } + }, + "developmentenvironmentvpcPublicSubnet1DefaultRoute2BAA794D": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "developmentenvironmentvpcPublicSubnet1RouteTable8FC58983" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "developmentenvironmentvpcIGW2B4E91B1" + } + }, + "DependsOn": [ + "developmentenvironmentvpcVPCGW702C2C38" + ] + }, + "developmentenvironmentvpcPublicSubnet1EIPE8B9F4D4": { + "Type": "AWS::EC2::EIP", + "Properties": { + "Domain": "vpc", + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/development-environment-vpc/PublicSubnet1" + } + ] + } + }, + "developmentenvironmentvpcPublicSubnet1NATGateway6B01CC4E": { + "Type": "AWS::EC2::NatGateway", + "Properties": { + "SubnetId": { + "Ref": "developmentenvironmentvpcPublicSubnet1Subnet0D18046B" + }, + "AllocationId": { + "Fn::GetAtt": [ + "developmentenvironmentvpcPublicSubnet1EIPE8B9F4D4", + "AllocationId" + ] + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/development-environment-vpc/PublicSubnet1" + } + ] + } + }, + "developmentenvironmentvpcPublicSubnet2SubnetC2026CD3": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "developmentenvironmentvpcCB4216A4" + }, + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.64.0/18", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Public" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Public" + }, + { + "Key": "Name", + "Value": "aws-ecs-integ/development-environment-vpc/PublicSubnet2" + } + ] + } + }, + "developmentenvironmentvpcPublicSubnet2RouteTable803A92C2": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "developmentenvironmentvpcCB4216A4" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/development-environment-vpc/PublicSubnet2" + } + ] + } + }, + "developmentenvironmentvpcPublicSubnet2RouteTableAssociation6630985C": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "developmentenvironmentvpcPublicSubnet2RouteTable803A92C2" + }, + "SubnetId": { + "Ref": "developmentenvironmentvpcPublicSubnet2SubnetC2026CD3" + } + } + }, + "developmentenvironmentvpcPublicSubnet2DefaultRoute2C5118B5": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "developmentenvironmentvpcPublicSubnet2RouteTable803A92C2" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "developmentenvironmentvpcIGW2B4E91B1" + } + }, + "DependsOn": [ + "developmentenvironmentvpcVPCGW702C2C38" + ] + }, + "developmentenvironmentvpcPublicSubnet2EIP560C2BBA": { + "Type": "AWS::EC2::EIP", + "Properties": { + "Domain": "vpc", + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/development-environment-vpc/PublicSubnet2" + } + ] + } + }, + "developmentenvironmentvpcPublicSubnet2NATGateway15A9C252": { + "Type": "AWS::EC2::NatGateway", + "Properties": { + "SubnetId": { + "Ref": "developmentenvironmentvpcPublicSubnet2SubnetC2026CD3" + }, + "AllocationId": { + "Fn::GetAtt": [ + "developmentenvironmentvpcPublicSubnet2EIP560C2BBA", + "AllocationId" + ] + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/development-environment-vpc/PublicSubnet2" + } + ] + } + }, + "developmentenvironmentvpcPrivateSubnet1SubnetAAECD171": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "developmentenvironmentvpcCB4216A4" + }, + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.128.0/18", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Private" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Private" + }, + { + "Key": "Name", + "Value": "aws-ecs-integ/development-environment-vpc/PrivateSubnet1" + } + ] + } + }, + "developmentenvironmentvpcPrivateSubnet1RouteTable29CEB1DB": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "developmentenvironmentvpcCB4216A4" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/development-environment-vpc/PrivateSubnet1" + } + ] + } + }, + "developmentenvironmentvpcPrivateSubnet1RouteTableAssociation95EE92E6": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "developmentenvironmentvpcPrivateSubnet1RouteTable29CEB1DB" + }, + "SubnetId": { + "Ref": "developmentenvironmentvpcPrivateSubnet1SubnetAAECD171" + } + } + }, + "developmentenvironmentvpcPrivateSubnet1DefaultRoute1813B5F3": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "developmentenvironmentvpcPrivateSubnet1RouteTable29CEB1DB" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "NatGatewayId": { + "Ref": "developmentenvironmentvpcPublicSubnet1NATGateway6B01CC4E" + } + } + }, + "developmentenvironmentvpcPrivateSubnet2Subnet20C1C37D": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "developmentenvironmentvpcCB4216A4" + }, + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.192.0/18", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Private" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Private" + }, + { + "Key": "Name", + "Value": "aws-ecs-integ/development-environment-vpc/PrivateSubnet2" + } + ] + } + }, + "developmentenvironmentvpcPrivateSubnet2RouteTable687AB03B": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "developmentenvironmentvpcCB4216A4" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/development-environment-vpc/PrivateSubnet2" + } + ] + } + }, + "developmentenvironmentvpcPrivateSubnet2RouteTableAssociation1C336DAE": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "developmentenvironmentvpcPrivateSubnet2RouteTable687AB03B" + }, + "SubnetId": { + "Ref": "developmentenvironmentvpcPrivateSubnet2Subnet20C1C37D" + } + } + }, + "developmentenvironmentvpcPrivateSubnet2DefaultRoute1B4A6D0D": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "developmentenvironmentvpcPrivateSubnet2RouteTable687AB03B" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "NatGatewayId": { + "Ref": "developmentenvironmentvpcPublicSubnet2NATGateway15A9C252" + } + } + }, + "developmentenvironmentvpcIGW2B4E91B1": { + "Type": "AWS::EC2::InternetGateway", + "Properties": { + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/development-environment-vpc" + } + ] + } + }, + "developmentenvironmentvpcVPCGW702C2C38": { + "Type": "AWS::EC2::VPCGatewayAttachment", + "Properties": { + "VpcId": { + "Ref": "developmentenvironmentvpcCB4216A4" + }, + "InternetGatewayId": { + "Ref": "developmentenvironmentvpcIGW2B4E91B1" + } + } + }, + "developmentenvironmentcluster1B64BE8B": { + "Type": "AWS::ECS::Cluster" + }, + "developmentenvironmentclusterDefaultServiceDiscoveryNamespace0F234767": { + "Type": "AWS::ServiceDiscovery::PrivateDnsNamespace", + "Properties": { + "Name": "development", + "Vpc": { + "Ref": "developmentenvironmentvpcCB4216A4" + } + } + }, + "productionmeshB6E81744": { + "Type": "AWS::AppMesh::Mesh", + "Properties": { + "MeshName": "awsecsintegproductionmesh1A4ED585", + "Spec": {} + } + }, + "developmentmeshCEC28AFE": { + "Type": "AWS::AppMesh::Mesh", + "Properties": { + "MeshName": "awsecsintegdevelopmentmeshEFC35179", + "Spec": {} + } + }, + "nameproductiontaskdefinitionTaskRole93E922EB": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "nameproductiontaskdefinition33A5D5E0": { + "Type": "AWS::ECS::TaskDefinition", + "Properties": { + "ContainerDefinitions": [ + { + "Cpu": 1024, + "DependsOn": [ + { + "Condition": "HEALTHY", + "ContainerName": "envoy" + } + ], + "Environment": [ + { + "Name": "PORT", + "Value": "80" + } + ], + "Essential": true, + "Image": "nathanpeck/name", + "Memory": 2048, + "Name": "app", + "PortMappings": [ + { + "ContainerPort": 80, + "Protocol": "tcp" + } + ], + "Ulimits": [ + { + "HardLimit": 1024000, + "Name": "nofile", + "SoftLimit": 1024000 + } + ] + }, + { + "Environment": [ + { + "Name": "APPMESH_VIRTUAL_NODE_NAME", + "Value": { + "Fn::Join": [ + "", + [ + "mesh/", + { + "Fn::GetAtt": [ + "productionmeshB6E81744", + "MeshName" + ] + }, + "/virtualNode/name-production" + ] + ] + } + }, + { + "Name": "AWS_REGION", + "Value": { + "Ref": "AWS::Region" + } + }, + { + "Name": "ENABLE_ENVOY_STATS_TAGS", + "Value": "1" + }, + { + "Name": "ENABLE_ENVOY_DOG_STATSD", + "Value": "1" + } + ], + "Essential": true, + "HealthCheck": { + "Command": [ + "CMD-SHELL", + "curl -s http://localhost:9901/server_info | grep state | grep -q LIVE" + ], + "Interval": 5, + "Retries": 3, + "StartPeriod": 10, + "Timeout": 2 + }, + "Image": { + "Fn::Join": [ + "", + [ + { + "Fn::FindInMap": [ + "nameproductionenvoyimageaccountmapping", + { + "Ref": "AWS::Region" + }, + "ecrRepo" + ] + }, + ".dkr.ecr.", + { + "Ref": "AWS::Region" + }, + ".", + { + "Ref": "AWS::URLSuffix" + }, + "/aws-appmesh-envoy:v1.15.1.0-prod" + ] + ] + }, + "LogConfiguration": { + "LogDriver": "awslogs", + "Options": { + "awslogs-group": { + "Ref": "nameproductiontaskdefinitionenvoyLogGroupF79A2732" + }, + "awslogs-stream-prefix": "envoy", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "MemoryReservation": 128, + "Name": "envoy", + "Ulimits": [ + { + "HardLimit": 1024000, + "Name": "nofile", + "SoftLimit": 1024000 + } + ], + "User": "1337" + } + ], + "Cpu": "1024", + "ExecutionRoleArn": { + "Fn::GetAtt": [ + "nameproductiontaskdefinitionExecutionRoleB72DD86B", + "Arn" + ] + }, + "Family": "awsecsintegnameproductiontaskdefinition9E1C363B", + "Memory": "2048", + "NetworkMode": "awsvpc", + "ProxyConfiguration": { + "ContainerName": "envoy", + "ProxyConfigurationProperties": [ + { + "Name": "AppPorts", + "Value": "80" + }, + { + "Name": "ProxyEgressPort", + "Value": "15001" + }, + { + "Name": "ProxyIngressPort", + "Value": "15000" + }, + { + "Name": "IgnoredUID", + "Value": "1337" + }, + { + "Name": "IgnoredGID", + "Value": "1338" + }, + { + "Name": "EgressIgnoredIPs", + "Value": "169.254.170.2,169.254.169.254" + } + ], + "Type": "APPMESH" + }, + "RequiresCompatibilities": [ + "EC2", + "FARGATE" + ], + "TaskRoleArn": { + "Fn::GetAtt": [ + "nameproductiontaskdefinitionTaskRole93E922EB", + "Arn" + ] + } + } + }, + "nameproductiontaskdefinitionenvoyLogGroupF79A2732": { + "Type": "AWS::Logs::LogGroup", + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "nameproductiontaskdefinitionExecutionRoleB72DD86B": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "nameproductiontaskdefinitionExecutionRoleDefaultPolicyB66C67BE": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "ecr:BatchCheckLayerAvailability", + "ecr:GetDownloadUrlForLayer", + "ecr:BatchGetImage" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":ecr:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Fn::FindInMap": [ + "nameproductionenvoyimageaccountmapping", + { + "Ref": "AWS::Region" + }, + "ecrRepo" + ] + }, + ":repository/aws-appmesh-envoy" + ] + ] + } + }, + { + "Action": "ecr:GetAuthorizationToken", + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "nameproductiontaskdefinitionenvoyLogGroupF79A2732", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "nameproductiontaskdefinitionExecutionRoleDefaultPolicyB66C67BE", + "Roles": [ + { + "Ref": "nameproductiontaskdefinitionExecutionRoleB72DD86B" + } + ] + } + }, + "nameproductionenvoytoappmesh1B44B04A": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "appmesh:StreamAggregatedResources", + "Effect": "Allow", + "Resource": { + "Ref": "productionmeshB6E81744" + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "nameproductionenvoytoappmesh1B44B04A", + "Roles": [ + { + "Ref": "nameproductiontaskdefinitionTaskRole93E922EB" + } + ] + } + }, + "nameproductionserviceServiceB2D31516": { + "Type": "AWS::ECS::Service", + "Properties": { + "Cluster": { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "DeploymentConfiguration": { + "MaximumPercent": 200, + "MinimumHealthyPercent": 100 + }, + "DesiredCount": 1, + "EnableECSManagedTags": false, + "LaunchType": "FARGATE", + "NetworkConfiguration": { + "AwsvpcConfiguration": { + "AssignPublicIp": "DISABLED", + "SecurityGroups": [ + { + "Fn::GetAtt": [ + "nameproductionserviceSecurityGroupF496E439", + "GroupId" + ] + } + ], + "Subnets": [ + { + "Ref": "productionenvironmentvpcPrivateSubnet1Subnet53F632E6" + }, + { + "Ref": "productionenvironmentvpcPrivateSubnet2Subnet756FB93C" + } + ] + } + }, + "ServiceRegistries": [ + { + "RegistryArn": { + "Fn::GetAtt": [ + "nameproductionserviceCloudmapService60E3273A", + "Arn" + ] + } + } + ], + "TaskDefinition": { + "Ref": "nameproductiontaskdefinition33A5D5E0" + } + } + }, + "nameproductionserviceCloudmapService60E3273A": { + "Type": "AWS::ServiceDiscovery::Service", + "Properties": { + "DnsConfig": { + "DnsRecords": [ + { + "TTL": 10, + "Type": "A" + } + ], + "NamespaceId": { + "Fn::GetAtt": [ + "productionenvironmentclusterDefaultServiceDiscoveryNamespaceBE74D64D", + "Id" + ] + }, + "RoutingPolicy": "MULTIVALUE" + }, + "HealthCheckCustomConfig": { + "FailureThreshold": 2 + }, + "Name": "name-production", + "NamespaceId": { + "Fn::GetAtt": [ + "productionenvironmentclusterDefaultServiceDiscoveryNamespaceBE74D64D", + "Id" + ] + } + } + }, + "nameproductionserviceSecurityGroupF496E439": { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "aws-ecs-integ/name-production-service/SecurityGroup", + "SecurityGroupEgress": [ + { + "CidrIp": "0.0.0.0/0", + "Description": "Allow all outbound traffic by default", + "IpProtocol": "-1" + } + ], + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + } + } + }, + "nameproductionvirtualnodeC78443D9": { + "Type": "AWS::AppMesh::VirtualNode", + "Properties": { + "MeshName": { + "Fn::GetAtt": [ + "productionmeshB6E81744", + "MeshName" + ] + }, + "Spec": { + "Listeners": [ + { + "PortMapping": { + "Port": 80, + "Protocol": "http" + } + } + ], + "ServiceDiscovery": { + "AWSCloudMap": { + "NamespaceName": "production", + "ServiceName": { + "Fn::GetAtt": [ + "nameproductionserviceCloudmapService60E3273A", + "Name" + ] + } + } + } + }, + "VirtualNodeName": "name-production" + } + }, + "nameproductionvirtualrouter00E3366D": { + "Type": "AWS::AppMesh::VirtualRouter", + "Properties": { + "MeshName": { + "Fn::GetAtt": [ + "productionmeshB6E81744", + "MeshName" + ] + }, + "Spec": { + "Listeners": [ + { + "PortMapping": { + "Port": 80, + "Protocol": "http" + } + } + ] + }, + "VirtualRouterName": "name-production" + } + }, + "nameproductionvirtualrouternameproductionrouteE886BEFD": { + "Type": "AWS::AppMesh::Route", + "Properties": { + "MeshName": { + "Fn::GetAtt": [ + "productionmeshB6E81744", + "MeshName" + ] + }, + "Spec": { + "HttpRoute": { + "Action": { + "WeightedTargets": [ + { + "VirtualNode": { + "Fn::GetAtt": [ + "nameproductionvirtualnodeC78443D9", + "VirtualNodeName" + ] + }, + "Weight": 1 + } + ] + }, + "Match": { + "Prefix": "/" + } + } + }, + "VirtualRouterName": { + "Fn::GetAtt": [ + "nameproductionvirtualrouter00E3366D", + "VirtualRouterName" + ] + }, + "RouteName": "name-production-route" + } + }, + "nameproductionvirtualservice4D49D5F6": { + "Type": "AWS::AppMesh::VirtualService", + "Properties": { + "MeshName": { + "Fn::GetAtt": [ + "productionmeshB6E81744", + "MeshName" + ] + }, + "Spec": { + "Provider": { + "VirtualRouter": { + "VirtualRouterName": { + "Fn::GetAtt": [ + "nameproductionvirtualrouter00E3366D", + "VirtualRouterName" + ] + } + } + } + }, + "VirtualServiceName": "name-production.production" + } + }, + "namedevelopmenttaskdefinitionTaskRole66A85BBB": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "namedevelopmenttaskdefinition0468FBFF": { + "Type": "AWS::ECS::TaskDefinition", + "Properties": { + "ContainerDefinitions": [ + { + "Cpu": 1024, + "DependsOn": [ + { + "Condition": "HEALTHY", + "ContainerName": "envoy" + } + ], + "Environment": [ + { + "Name": "PORT", + "Value": "80" + } + ], + "Essential": true, + "Image": "nathanpeck/name", + "Memory": 2048, + "Name": "app", + "PortMappings": [ + { + "ContainerPort": 80, + "Protocol": "tcp" + } + ], + "Ulimits": [ + { + "HardLimit": 1024000, + "Name": "nofile", + "SoftLimit": 1024000 + } + ] + }, + { + "Environment": [ + { + "Name": "APPMESH_VIRTUAL_NODE_NAME", + "Value": { + "Fn::Join": [ + "", + [ + "mesh/", + { + "Fn::GetAtt": [ + "developmentmeshCEC28AFE", + "MeshName" + ] + }, + "/virtualNode/name-development" + ] + ] + } + }, + { + "Name": "AWS_REGION", + "Value": { + "Ref": "AWS::Region" + } + }, + { + "Name": "ENABLE_ENVOY_STATS_TAGS", + "Value": "1" + }, + { + "Name": "ENABLE_ENVOY_DOG_STATSD", + "Value": "1" + } + ], + "Essential": true, + "HealthCheck": { + "Command": [ + "CMD-SHELL", + "curl -s http://localhost:9901/server_info | grep state | grep -q LIVE" + ], + "Interval": 5, + "Retries": 3, + "StartPeriod": 10, + "Timeout": 2 + }, + "Image": { + "Fn::Join": [ + "", + [ + { + "Fn::FindInMap": [ + "namedevelopmentenvoyimageaccountmapping", + { + "Ref": "AWS::Region" + }, + "ecrRepo" + ] + }, + ".dkr.ecr.", + { + "Ref": "AWS::Region" + }, + ".", + { + "Ref": "AWS::URLSuffix" + }, + "/aws-appmesh-envoy:v1.15.1.0-prod" + ] + ] + }, + "LogConfiguration": { + "LogDriver": "awslogs", + "Options": { + "awslogs-group": { + "Ref": "namedevelopmenttaskdefinitionenvoyLogGroupF8FCAFD6" + }, + "awslogs-stream-prefix": "envoy", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "MemoryReservation": 128, + "Name": "envoy", + "Ulimits": [ + { + "HardLimit": 1024000, + "Name": "nofile", + "SoftLimit": 1024000 + } + ], + "User": "1337" + } + ], + "Cpu": "1024", + "ExecutionRoleArn": { + "Fn::GetAtt": [ + "namedevelopmenttaskdefinitionExecutionRole48B53E4E", + "Arn" + ] + }, + "Family": "awsecsintegnamedevelopmenttaskdefinitionC3797E10", + "Memory": "2048", + "NetworkMode": "awsvpc", + "ProxyConfiguration": { + "ContainerName": "envoy", + "ProxyConfigurationProperties": [ + { + "Name": "AppPorts", + "Value": "80" + }, + { + "Name": "ProxyEgressPort", + "Value": "15001" + }, + { + "Name": "ProxyIngressPort", + "Value": "15000" + }, + { + "Name": "IgnoredUID", + "Value": "1337" + }, + { + "Name": "IgnoredGID", + "Value": "1338" + }, + { + "Name": "EgressIgnoredIPs", + "Value": "169.254.170.2,169.254.169.254" + } + ], + "Type": "APPMESH" + }, + "RequiresCompatibilities": [ + "EC2", + "FARGATE" + ], + "TaskRoleArn": { + "Fn::GetAtt": [ + "namedevelopmenttaskdefinitionTaskRole66A85BBB", + "Arn" + ] + } + } + }, + "namedevelopmenttaskdefinitionenvoyLogGroupF8FCAFD6": { + "Type": "AWS::Logs::LogGroup", + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "namedevelopmenttaskdefinitionExecutionRole48B53E4E": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "namedevelopmenttaskdefinitionExecutionRoleDefaultPolicy34EAA008": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "ecr:BatchCheckLayerAvailability", + "ecr:GetDownloadUrlForLayer", + "ecr:BatchGetImage" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":ecr:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Fn::FindInMap": [ + "namedevelopmentenvoyimageaccountmapping", + { + "Ref": "AWS::Region" + }, + "ecrRepo" + ] + }, + ":repository/aws-appmesh-envoy" + ] + ] + } + }, + { + "Action": "ecr:GetAuthorizationToken", + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "namedevelopmenttaskdefinitionenvoyLogGroupF8FCAFD6", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "namedevelopmenttaskdefinitionExecutionRoleDefaultPolicy34EAA008", + "Roles": [ + { + "Ref": "namedevelopmenttaskdefinitionExecutionRole48B53E4E" + } + ] + } + }, + "namedevelopmentenvoytoappmesh45FF08AA": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "appmesh:StreamAggregatedResources", + "Effect": "Allow", + "Resource": { + "Ref": "developmentmeshCEC28AFE" + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "namedevelopmentenvoytoappmesh45FF08AA", + "Roles": [ + { + "Ref": "namedevelopmenttaskdefinitionTaskRole66A85BBB" + } + ] + } + }, + "namedevelopmentserviceService8A24F793": { + "Type": "AWS::ECS::Service", + "Properties": { + "Cluster": { + "Ref": "developmentenvironmentcluster1B64BE8B" + }, + "DeploymentConfiguration": { + "MaximumPercent": 200, + "MinimumHealthyPercent": 100 + }, + "DesiredCount": 1, + "EnableECSManagedTags": false, + "LaunchType": "FARGATE", + "NetworkConfiguration": { + "AwsvpcConfiguration": { + "AssignPublicIp": "DISABLED", + "SecurityGroups": [ + { + "Fn::GetAtt": [ + "namedevelopmentserviceSecurityGroupE2ECED97", + "GroupId" + ] + } + ], + "Subnets": [ + { + "Ref": "developmentenvironmentvpcPrivateSubnet1SubnetAAECD171" + }, + { + "Ref": "developmentenvironmentvpcPrivateSubnet2Subnet20C1C37D" + } + ] + } + }, + "ServiceRegistries": [ + { + "RegistryArn": { + "Fn::GetAtt": [ + "namedevelopmentserviceCloudmapService63674467", + "Arn" + ] + } + } + ], + "TaskDefinition": { + "Ref": "namedevelopmenttaskdefinition0468FBFF" + } + } + }, + "namedevelopmentserviceCloudmapService63674467": { + "Type": "AWS::ServiceDiscovery::Service", + "Properties": { + "DnsConfig": { + "DnsRecords": [ + { + "TTL": 10, + "Type": "A" + } + ], + "NamespaceId": { + "Fn::GetAtt": [ + "developmentenvironmentclusterDefaultServiceDiscoveryNamespace0F234767", + "Id" + ] + }, + "RoutingPolicy": "MULTIVALUE" + }, + "HealthCheckCustomConfig": { + "FailureThreshold": 2 + }, + "Name": "name-development", + "NamespaceId": { + "Fn::GetAtt": [ + "developmentenvironmentclusterDefaultServiceDiscoveryNamespace0F234767", + "Id" + ] + } + } + }, + "namedevelopmentserviceSecurityGroupE2ECED97": { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "aws-ecs-integ/name-development-service/SecurityGroup", + "SecurityGroupEgress": [ + { + "CidrIp": "0.0.0.0/0", + "Description": "Allow all outbound traffic by default", + "IpProtocol": "-1" + } + ], + "VpcId": { + "Ref": "developmentenvironmentvpcCB4216A4" + } + } + }, + "namedevelopmentvirtualnode55118E80": { + "Type": "AWS::AppMesh::VirtualNode", + "Properties": { + "MeshName": { + "Fn::GetAtt": [ + "developmentmeshCEC28AFE", + "MeshName" + ] + }, + "Spec": { + "Listeners": [ + { + "PortMapping": { + "Port": 80, + "Protocol": "http" + } + } + ], + "ServiceDiscovery": { + "AWSCloudMap": { + "NamespaceName": "development", + "ServiceName": { + "Fn::GetAtt": [ + "namedevelopmentserviceCloudmapService63674467", + "Name" + ] + } + } + } + }, + "VirtualNodeName": "name-development" + } + }, + "namedevelopmentvirtualrouter0AE5105D": { + "Type": "AWS::AppMesh::VirtualRouter", + "Properties": { + "MeshName": { + "Fn::GetAtt": [ + "developmentmeshCEC28AFE", + "MeshName" + ] + }, + "Spec": { + "Listeners": [ + { + "PortMapping": { + "Port": 80, + "Protocol": "http" + } + } + ] + }, + "VirtualRouterName": "name-development" + } + }, + "namedevelopmentvirtualrouternamedevelopmentroute611E499A": { + "Type": "AWS::AppMesh::Route", + "Properties": { + "MeshName": { + "Fn::GetAtt": [ + "developmentmeshCEC28AFE", + "MeshName" + ] + }, + "Spec": { + "HttpRoute": { + "Action": { + "WeightedTargets": [ + { + "VirtualNode": { + "Fn::GetAtt": [ + "namedevelopmentvirtualnode55118E80", + "VirtualNodeName" + ] + }, + "Weight": 1 + } + ] + }, + "Match": { + "Prefix": "/" + } + } + }, + "VirtualRouterName": { + "Fn::GetAtt": [ + "namedevelopmentvirtualrouter0AE5105D", + "VirtualRouterName" + ] + }, + "RouteName": "name-development-route" + } + }, + "namedevelopmentvirtualserviceD936E3FD": { + "Type": "AWS::AppMesh::VirtualService", + "Properties": { + "MeshName": { + "Fn::GetAtt": [ + "developmentmeshCEC28AFE", + "MeshName" + ] + }, + "Spec": { + "Provider": { + "VirtualRouter": { + "VirtualRouterName": { + "Fn::GetAtt": [ + "namedevelopmentvirtualrouter0AE5105D", + "VirtualRouterName" + ] + } + } + } + }, + "VirtualServiceName": "name-development.development" + } + } + }, + "Mappings": { + "nameproductionenvoyimageaccountmapping": { + "ap-northeast-1": { + "ecrRepo": "840364872350" + }, + "ap-northeast-2": { + "ecrRepo": "840364872350" + }, + "ap-south-1": { + "ecrRepo": "840364872350" + }, + "ap-southeast-1": { + "ecrRepo": "840364872350" + }, + "ap-southeast-2": { + "ecrRepo": "840364872350" + }, + "ca-central-1": { + "ecrRepo": "840364872350" + }, + "cn-north-1": { + "ecrRepo": "919366029133" + }, + "cn-northwest-1": { + "ecrRepo": "919830735681" + }, + "eu-central-1": { + "ecrRepo": "840364872350" + }, + "eu-north-1": { + "ecrRepo": "840364872350" + }, + "eu-south-1": { + "ecrRepo": "422531588944" + }, + "eu-west-1": { + "ecrRepo": "840364872350" + }, + "eu-west-2": { + "ecrRepo": "840364872350" + }, + "eu-west-3": { + "ecrRepo": "840364872350" + }, + "sa-east-1": { + "ecrRepo": "840364872350" + }, + "us-east-1": { + "ecrRepo": "840364872350" + }, + "us-east-2": { + "ecrRepo": "840364872350" + }, + "us-west-1": { + "ecrRepo": "840364872350" + }, + "us-west-2": { + "ecrRepo": "840364872350" + }, + "me-south-1": { + "ecrRepo": "772975370895" + }, + "ap-east-1": { + "ecrRepo": "856666278305" + }, + "af-south-1": { + "ecrRepo": "924023996002" + } + }, + "namedevelopmentenvoyimageaccountmapping": { + "ap-northeast-1": { + "ecrRepo": "840364872350" + }, + "ap-northeast-2": { + "ecrRepo": "840364872350" + }, + "ap-south-1": { + "ecrRepo": "840364872350" + }, + "ap-southeast-1": { + "ecrRepo": "840364872350" + }, + "ap-southeast-2": { + "ecrRepo": "840364872350" + }, + "ca-central-1": { + "ecrRepo": "840364872350" + }, + "cn-north-1": { + "ecrRepo": "919366029133" + }, + "cn-northwest-1": { + "ecrRepo": "919830735681" + }, + "eu-central-1": { + "ecrRepo": "840364872350" + }, + "eu-north-1": { + "ecrRepo": "840364872350" + }, + "eu-south-1": { + "ecrRepo": "422531588944" + }, + "eu-west-1": { + "ecrRepo": "840364872350" + }, + "eu-west-2": { + "ecrRepo": "840364872350" + }, + "eu-west-3": { + "ecrRepo": "840364872350" + }, + "sa-east-1": { + "ecrRepo": "840364872350" + }, + "us-east-1": { + "ecrRepo": "840364872350" + }, + "us-east-2": { + "ecrRepo": "840364872350" + }, + "us-west-1": { + "ecrRepo": "840364872350" + }, + "us-west-2": { + "ecrRepo": "840364872350" + }, + "me-south-1": { + "ecrRepo": "772975370895" + }, + "ap-east-1": { + "ecrRepo": "856666278305" + }, + "af-south-1": { + "ecrRepo": "924023996002" + } + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/multiple-environments.integ.snapshot/cdk.out b/packages/@aws-cdk-containers/ecs-service-extensions/test/multiple-environments.integ.snapshot/cdk.out new file mode 100644 index 0000000000000..90bef2e09ad39 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/multiple-environments.integ.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"17.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/multiple-environments.integ.snapshot/manifest.json b/packages/@aws-cdk-containers/ecs-service-extensions/test/multiple-environments.integ.snapshot/manifest.json new file mode 100644 index 0000000000000..be0c37b16d09e --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/multiple-environments.integ.snapshot/manifest.json @@ -0,0 +1,503 @@ +{ + "version": "17.0.0", + "artifacts": { + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + }, + "metadata": {} + }, + "aws-ecs-integ": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-ecs-integ.template.json", + "validateOnSynth": false + }, + "metadata": { + "/aws-ecs-integ/production-environment-vpc/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcAEB47DF7" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet1/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet1Subnet8D92C089" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet1/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet1RouteTable6E9ABC21" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet1/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet1RouteTableAssociationA8117374" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet1/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet1DefaultRoute524C894D" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet1/EIP": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet1EIP54BA88DB" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet1/NATGateway": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet1NATGateway6075E4CA" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet2/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet2Subnet298E6C31" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet2/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet2RouteTable842A68D7" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet2/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet2RouteTableAssociation0A7549F3" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet2/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet2DefaultRoute92CD697D" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet2/EIP": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet2EIP14CA46AA" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet2/NATGateway": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet2NATGatewayE1850FCC" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet1/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet1Subnet53F632E6" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet1/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet1RouteTable2C6DFF0C" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet1/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet1RouteTableAssociation8BA32463" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet1/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet1DefaultRouteFBB3DE6C" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet2/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet2Subnet756FB93C" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet2/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet2RouteTable2F77D0D2" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet2/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet2RouteTableAssociation09188261" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet2/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet2DefaultRoute5F9AB6C1" + } + ], + "/aws-ecs-integ/production-environment-vpc/IGW": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcIGWE7C39890" + } + ], + "/aws-ecs-integ/production-environment-vpc/VPCGW": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcVPCGW1B428D07" + } + ], + "/aws-ecs-integ/production-environment-cluster/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentclusterC6599D2D" + } + ], + "/aws-ecs-integ/production-environment-cluster/DefaultServiceDiscoveryNamespace/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentclusterDefaultServiceDiscoveryNamespaceBE74D64D" + } + ], + "/aws-ecs-integ/development-environment-vpc/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "developmentenvironmentvpcCB4216A4" + } + ], + "/aws-ecs-integ/development-environment-vpc/PublicSubnet1/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "developmentenvironmentvpcPublicSubnet1Subnet0D18046B" + } + ], + "/aws-ecs-integ/development-environment-vpc/PublicSubnet1/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "developmentenvironmentvpcPublicSubnet1RouteTable8FC58983" + } + ], + "/aws-ecs-integ/development-environment-vpc/PublicSubnet1/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "developmentenvironmentvpcPublicSubnet1RouteTableAssociation8F257A0C" + } + ], + "/aws-ecs-integ/development-environment-vpc/PublicSubnet1/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "developmentenvironmentvpcPublicSubnet1DefaultRoute2BAA794D" + } + ], + "/aws-ecs-integ/development-environment-vpc/PublicSubnet1/EIP": [ + { + "type": "aws:cdk:logicalId", + "data": "developmentenvironmentvpcPublicSubnet1EIPE8B9F4D4" + } + ], + "/aws-ecs-integ/development-environment-vpc/PublicSubnet1/NATGateway": [ + { + "type": "aws:cdk:logicalId", + "data": "developmentenvironmentvpcPublicSubnet1NATGateway6B01CC4E" + } + ], + "/aws-ecs-integ/development-environment-vpc/PublicSubnet2/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "developmentenvironmentvpcPublicSubnet2SubnetC2026CD3" + } + ], + "/aws-ecs-integ/development-environment-vpc/PublicSubnet2/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "developmentenvironmentvpcPublicSubnet2RouteTable803A92C2" + } + ], + "/aws-ecs-integ/development-environment-vpc/PublicSubnet2/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "developmentenvironmentvpcPublicSubnet2RouteTableAssociation6630985C" + } + ], + "/aws-ecs-integ/development-environment-vpc/PublicSubnet2/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "developmentenvironmentvpcPublicSubnet2DefaultRoute2C5118B5" + } + ], + "/aws-ecs-integ/development-environment-vpc/PublicSubnet2/EIP": [ + { + "type": "aws:cdk:logicalId", + "data": "developmentenvironmentvpcPublicSubnet2EIP560C2BBA" + } + ], + "/aws-ecs-integ/development-environment-vpc/PublicSubnet2/NATGateway": [ + { + "type": "aws:cdk:logicalId", + "data": "developmentenvironmentvpcPublicSubnet2NATGateway15A9C252" + } + ], + "/aws-ecs-integ/development-environment-vpc/PrivateSubnet1/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "developmentenvironmentvpcPrivateSubnet1SubnetAAECD171" + } + ], + "/aws-ecs-integ/development-environment-vpc/PrivateSubnet1/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "developmentenvironmentvpcPrivateSubnet1RouteTable29CEB1DB" + } + ], + "/aws-ecs-integ/development-environment-vpc/PrivateSubnet1/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "developmentenvironmentvpcPrivateSubnet1RouteTableAssociation95EE92E6" + } + ], + "/aws-ecs-integ/development-environment-vpc/PrivateSubnet1/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "developmentenvironmentvpcPrivateSubnet1DefaultRoute1813B5F3" + } + ], + "/aws-ecs-integ/development-environment-vpc/PrivateSubnet2/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "developmentenvironmentvpcPrivateSubnet2Subnet20C1C37D" + } + ], + "/aws-ecs-integ/development-environment-vpc/PrivateSubnet2/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "developmentenvironmentvpcPrivateSubnet2RouteTable687AB03B" + } + ], + "/aws-ecs-integ/development-environment-vpc/PrivateSubnet2/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "developmentenvironmentvpcPrivateSubnet2RouteTableAssociation1C336DAE" + } + ], + "/aws-ecs-integ/development-environment-vpc/PrivateSubnet2/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "developmentenvironmentvpcPrivateSubnet2DefaultRoute1B4A6D0D" + } + ], + "/aws-ecs-integ/development-environment-vpc/IGW": [ + { + "type": "aws:cdk:logicalId", + "data": "developmentenvironmentvpcIGW2B4E91B1" + } + ], + "/aws-ecs-integ/development-environment-vpc/VPCGW": [ + { + "type": "aws:cdk:logicalId", + "data": "developmentenvironmentvpcVPCGW702C2C38" + } + ], + "/aws-ecs-integ/development-environment-cluster/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "developmentenvironmentcluster1B64BE8B" + } + ], + "/aws-ecs-integ/development-environment-cluster/DefaultServiceDiscoveryNamespace/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "developmentenvironmentclusterDefaultServiceDiscoveryNamespace0F234767" + } + ], + "/aws-ecs-integ/production-mesh/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "productionmeshB6E81744" + } + ], + "/aws-ecs-integ/development-mesh/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "developmentmeshCEC28AFE" + } + ], + "/aws-ecs-integ/name-production-task-definition/TaskRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameproductiontaskdefinitionTaskRole93E922EB" + } + ], + "/aws-ecs-integ/name-production-task-definition/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameproductiontaskdefinition33A5D5E0" + } + ], + "/aws-ecs-integ/name-production-task-definition/envoy/LogGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameproductiontaskdefinitionenvoyLogGroupF79A2732" + } + ], + "/aws-ecs-integ/name-production-task-definition/ExecutionRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameproductiontaskdefinitionExecutionRoleB72DD86B" + } + ], + "/aws-ecs-integ/name-production-task-definition/ExecutionRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameproductiontaskdefinitionExecutionRoleDefaultPolicyB66C67BE" + } + ], + "/aws-ecs-integ/name-production-envoy-image-account-mapping": [ + { + "type": "aws:cdk:logicalId", + "data": "nameproductionenvoyimageaccountmapping" + } + ], + "/aws-ecs-integ/name-production-envoy-to-appmesh/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameproductionenvoytoappmesh1B44B04A" + } + ], + "/aws-ecs-integ/name-production-service/Service": [ + { + "type": "aws:cdk:logicalId", + "data": "nameproductionserviceServiceB2D31516" + } + ], + "/aws-ecs-integ/name-production-service/CloudmapService/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameproductionserviceCloudmapService60E3273A" + } + ], + "/aws-ecs-integ/name-production-service/SecurityGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameproductionserviceSecurityGroupF496E439" + } + ], + "/aws-ecs-integ/name-production-virtual-node/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameproductionvirtualnodeC78443D9" + } + ], + "/aws-ecs-integ/name-production-virtual-router/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameproductionvirtualrouter00E3366D" + } + ], + "/aws-ecs-integ/name-production-virtual-router/name-production-route/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameproductionvirtualrouternameproductionrouteE886BEFD" + } + ], + "/aws-ecs-integ/name-production-virtual-service/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "nameproductionvirtualservice4D49D5F6" + } + ], + "/aws-ecs-integ/name-development-task-definition/TaskRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "namedevelopmenttaskdefinitionTaskRole66A85BBB" + } + ], + "/aws-ecs-integ/name-development-task-definition/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "namedevelopmenttaskdefinition0468FBFF" + } + ], + "/aws-ecs-integ/name-development-task-definition/envoy/LogGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "namedevelopmenttaskdefinitionenvoyLogGroupF8FCAFD6" + } + ], + "/aws-ecs-integ/name-development-task-definition/ExecutionRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "namedevelopmenttaskdefinitionExecutionRole48B53E4E" + } + ], + "/aws-ecs-integ/name-development-task-definition/ExecutionRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "namedevelopmenttaskdefinitionExecutionRoleDefaultPolicy34EAA008" + } + ], + "/aws-ecs-integ/name-development-envoy-image-account-mapping": [ + { + "type": "aws:cdk:logicalId", + "data": "namedevelopmentenvoyimageaccountmapping" + } + ], + "/aws-ecs-integ/name-development-envoy-to-appmesh/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "namedevelopmentenvoytoappmesh45FF08AA" + } + ], + "/aws-ecs-integ/name-development-service/Service": [ + { + "type": "aws:cdk:logicalId", + "data": "namedevelopmentserviceService8A24F793" + } + ], + "/aws-ecs-integ/name-development-service/CloudmapService/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "namedevelopmentserviceCloudmapService63674467" + } + ], + "/aws-ecs-integ/name-development-service/SecurityGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "namedevelopmentserviceSecurityGroupE2ECED97" + } + ], + "/aws-ecs-integ/name-development-virtual-node/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "namedevelopmentvirtualnode55118E80" + } + ], + "/aws-ecs-integ/name-development-virtual-router/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "namedevelopmentvirtualrouter0AE5105D" + } + ], + "/aws-ecs-integ/name-development-virtual-router/name-development-route/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "namedevelopmentvirtualrouternamedevelopmentroute611E499A" + } + ], + "/aws-ecs-integ/name-development-virtual-service/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "namedevelopmentvirtualserviceD936E3FD" + } + ] + }, + "displayName": "aws-ecs-integ" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/multiple-environments.integ.snapshot/tree.json b/packages/@aws-cdk-containers/ecs-service-extensions/test/multiple-environments.integ.snapshot/tree.json new file mode 100644 index 0000000000000..b10191cf1a231 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/multiple-environments.integ.snapshot/tree.json @@ -0,0 +1,3081 @@ +{ + "version": "tree-0.1", + "tree": { + "id": "App", + "path": "", + "children": { + "Tree": { + "id": "Tree", + "path": "Tree", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "aws-ecs-integ": { + "id": "aws-ecs-integ", + "path": "aws-ecs-integ", + "children": { + "production": { + "id": "production", + "path": "aws-ecs-integ/production", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "production-environment-vpc": { + "id": "production-environment-vpc", + "path": "aws-ecs-integ/production-environment-vpc", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/production-environment-vpc/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::VPC", + "aws:cdk:cloudformation:props": { + "cidrBlock": "10.0.0.0/16", + "enableDnsHostnames": true, + "enableDnsSupport": true, + "instanceTenancy": "default", + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "PublicSubnet1": { + "id": "PublicSubnet1", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "availabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.0.0/18", + "mapPublicIpOnLaunch": true, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Public" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Public" + }, + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPublicSubnet1RouteTable6E9ABC21" + }, + "subnetId": { + "Ref": "productionenvironmentvpcPublicSubnet1Subnet8D92C089" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPublicSubnet1RouteTable6E9ABC21" + }, + "destinationCidrBlock": "0.0.0.0/0", + "gatewayId": { + "Ref": "productionenvironmentvpcIGWE7C39890" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "EIP": { + "id": "EIP", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/EIP", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::EIP", + "aws:cdk:cloudformation:props": { + "domain": "vpc", + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "NATGateway": { + "id": "NATGateway", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/NATGateway", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::NatGateway", + "aws:cdk:cloudformation:props": { + "subnetId": { + "Ref": "productionenvironmentvpcPublicSubnet1Subnet8D92C089" + }, + "allocationId": { + "Fn::GetAtt": [ + "productionenvironmentvpcPublicSubnet1EIP54BA88DB", + "AllocationId" + ] + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "PublicSubnet2": { + "id": "PublicSubnet2", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "availabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.64.0/18", + "mapPublicIpOnLaunch": true, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Public" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Public" + }, + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPublicSubnet2RouteTable842A68D7" + }, + "subnetId": { + "Ref": "productionenvironmentvpcPublicSubnet2Subnet298E6C31" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPublicSubnet2RouteTable842A68D7" + }, + "destinationCidrBlock": "0.0.0.0/0", + "gatewayId": { + "Ref": "productionenvironmentvpcIGWE7C39890" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "EIP": { + "id": "EIP", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/EIP", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::EIP", + "aws:cdk:cloudformation:props": { + "domain": "vpc", + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "NATGateway": { + "id": "NATGateway", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/NATGateway", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::NatGateway", + "aws:cdk:cloudformation:props": { + "subnetId": { + "Ref": "productionenvironmentvpcPublicSubnet2Subnet298E6C31" + }, + "allocationId": { + "Fn::GetAtt": [ + "productionenvironmentvpcPublicSubnet2EIP14CA46AA", + "AllocationId" + ] + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "PrivateSubnet1": { + "id": "PrivateSubnet1", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "availabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.128.0/18", + "mapPublicIpOnLaunch": false, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Private" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Private" + }, + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet1RouteTable2C6DFF0C" + }, + "subnetId": { + "Ref": "productionenvironmentvpcPrivateSubnet1Subnet53F632E6" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet1RouteTable2C6DFF0C" + }, + "destinationCidrBlock": "0.0.0.0/0", + "natGatewayId": { + "Ref": "productionenvironmentvpcPublicSubnet1NATGateway6075E4CA" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "PrivateSubnet2": { + "id": "PrivateSubnet2", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "availabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.192.0/18", + "mapPublicIpOnLaunch": false, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Private" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Private" + }, + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet2RouteTable2F77D0D2" + }, + "subnetId": { + "Ref": "productionenvironmentvpcPrivateSubnet2Subnet756FB93C" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet2RouteTable2F77D0D2" + }, + "destinationCidrBlock": "0.0.0.0/0", + "natGatewayId": { + "Ref": "productionenvironmentvpcPublicSubnet2NATGatewayE1850FCC" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "IGW": { + "id": "IGW", + "path": "aws-ecs-integ/production-environment-vpc/IGW", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::InternetGateway", + "aws:cdk:cloudformation:props": { + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "VPCGW": { + "id": "VPCGW", + "path": "aws-ecs-integ/production-environment-vpc/VPCGW", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::VPCGatewayAttachment", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "internetGatewayId": { + "Ref": "productionenvironmentvpcIGWE7C39890" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "production-environment-cluster": { + "id": "production-environment-cluster", + "path": "aws-ecs-integ/production-environment-cluster", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/production-environment-cluster/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::Cluster", + "aws:cdk:cloudformation:props": {} + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultServiceDiscoveryNamespace": { + "id": "DefaultServiceDiscoveryNamespace", + "path": "aws-ecs-integ/production-environment-cluster/DefaultServiceDiscoveryNamespace", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/production-environment-cluster/DefaultServiceDiscoveryNamespace/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ServiceDiscovery::PrivateDnsNamespace", + "aws:cdk:cloudformation:props": { + "name": "production", + "vpc": { + "Ref": "productionenvironmentvpcAEB47DF7" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "development": { + "id": "development", + "path": "aws-ecs-integ/development", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "development-environment-vpc": { + "id": "development-environment-vpc", + "path": "aws-ecs-integ/development-environment-vpc", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/development-environment-vpc/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::VPC", + "aws:cdk:cloudformation:props": { + "cidrBlock": "10.0.0.0/16", + "enableDnsHostnames": true, + "enableDnsSupport": true, + "instanceTenancy": "default", + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/development-environment-vpc" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "PublicSubnet1": { + "id": "PublicSubnet1", + "path": "aws-ecs-integ/development-environment-vpc/PublicSubnet1", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-ecs-integ/development-environment-vpc/PublicSubnet1/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "developmentenvironmentvpcCB4216A4" + }, + "availabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.0.0/18", + "mapPublicIpOnLaunch": true, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Public" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Public" + }, + { + "key": "Name", + "value": "aws-ecs-integ/development-environment-vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-ecs-integ/development-environment-vpc/PublicSubnet1/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-ecs-integ/development-environment-vpc/PublicSubnet1/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "developmentenvironmentvpcCB4216A4" + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/development-environment-vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-ecs-integ/development-environment-vpc/PublicSubnet1/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "developmentenvironmentvpcPublicSubnet1RouteTable8FC58983" + }, + "subnetId": { + "Ref": "developmentenvironmentvpcPublicSubnet1Subnet0D18046B" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-ecs-integ/development-environment-vpc/PublicSubnet1/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "developmentenvironmentvpcPublicSubnet1RouteTable8FC58983" + }, + "destinationCidrBlock": "0.0.0.0/0", + "gatewayId": { + "Ref": "developmentenvironmentvpcIGW2B4E91B1" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "EIP": { + "id": "EIP", + "path": "aws-ecs-integ/development-environment-vpc/PublicSubnet1/EIP", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::EIP", + "aws:cdk:cloudformation:props": { + "domain": "vpc", + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/development-environment-vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "NATGateway": { + "id": "NATGateway", + "path": "aws-ecs-integ/development-environment-vpc/PublicSubnet1/NATGateway", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::NatGateway", + "aws:cdk:cloudformation:props": { + "subnetId": { + "Ref": "developmentenvironmentvpcPublicSubnet1Subnet0D18046B" + }, + "allocationId": { + "Fn::GetAtt": [ + "developmentenvironmentvpcPublicSubnet1EIPE8B9F4D4", + "AllocationId" + ] + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/development-environment-vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "PublicSubnet2": { + "id": "PublicSubnet2", + "path": "aws-ecs-integ/development-environment-vpc/PublicSubnet2", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-ecs-integ/development-environment-vpc/PublicSubnet2/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "developmentenvironmentvpcCB4216A4" + }, + "availabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.64.0/18", + "mapPublicIpOnLaunch": true, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Public" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Public" + }, + { + "key": "Name", + "value": "aws-ecs-integ/development-environment-vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-ecs-integ/development-environment-vpc/PublicSubnet2/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-ecs-integ/development-environment-vpc/PublicSubnet2/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "developmentenvironmentvpcCB4216A4" + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/development-environment-vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-ecs-integ/development-environment-vpc/PublicSubnet2/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "developmentenvironmentvpcPublicSubnet2RouteTable803A92C2" + }, + "subnetId": { + "Ref": "developmentenvironmentvpcPublicSubnet2SubnetC2026CD3" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-ecs-integ/development-environment-vpc/PublicSubnet2/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "developmentenvironmentvpcPublicSubnet2RouteTable803A92C2" + }, + "destinationCidrBlock": "0.0.0.0/0", + "gatewayId": { + "Ref": "developmentenvironmentvpcIGW2B4E91B1" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "EIP": { + "id": "EIP", + "path": "aws-ecs-integ/development-environment-vpc/PublicSubnet2/EIP", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::EIP", + "aws:cdk:cloudformation:props": { + "domain": "vpc", + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/development-environment-vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "NATGateway": { + "id": "NATGateway", + "path": "aws-ecs-integ/development-environment-vpc/PublicSubnet2/NATGateway", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::NatGateway", + "aws:cdk:cloudformation:props": { + "subnetId": { + "Ref": "developmentenvironmentvpcPublicSubnet2SubnetC2026CD3" + }, + "allocationId": { + "Fn::GetAtt": [ + "developmentenvironmentvpcPublicSubnet2EIP560C2BBA", + "AllocationId" + ] + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/development-environment-vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "PrivateSubnet1": { + "id": "PrivateSubnet1", + "path": "aws-ecs-integ/development-environment-vpc/PrivateSubnet1", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-ecs-integ/development-environment-vpc/PrivateSubnet1/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "developmentenvironmentvpcCB4216A4" + }, + "availabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.128.0/18", + "mapPublicIpOnLaunch": false, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Private" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Private" + }, + { + "key": "Name", + "value": "aws-ecs-integ/development-environment-vpc/PrivateSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-ecs-integ/development-environment-vpc/PrivateSubnet1/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-ecs-integ/development-environment-vpc/PrivateSubnet1/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "developmentenvironmentvpcCB4216A4" + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/development-environment-vpc/PrivateSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-ecs-integ/development-environment-vpc/PrivateSubnet1/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "developmentenvironmentvpcPrivateSubnet1RouteTable29CEB1DB" + }, + "subnetId": { + "Ref": "developmentenvironmentvpcPrivateSubnet1SubnetAAECD171" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-ecs-integ/development-environment-vpc/PrivateSubnet1/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "developmentenvironmentvpcPrivateSubnet1RouteTable29CEB1DB" + }, + "destinationCidrBlock": "0.0.0.0/0", + "natGatewayId": { + "Ref": "developmentenvironmentvpcPublicSubnet1NATGateway6B01CC4E" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "PrivateSubnet2": { + "id": "PrivateSubnet2", + "path": "aws-ecs-integ/development-environment-vpc/PrivateSubnet2", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-ecs-integ/development-environment-vpc/PrivateSubnet2/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "developmentenvironmentvpcCB4216A4" + }, + "availabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.192.0/18", + "mapPublicIpOnLaunch": false, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Private" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Private" + }, + { + "key": "Name", + "value": "aws-ecs-integ/development-environment-vpc/PrivateSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-ecs-integ/development-environment-vpc/PrivateSubnet2/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-ecs-integ/development-environment-vpc/PrivateSubnet2/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "developmentenvironmentvpcCB4216A4" + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/development-environment-vpc/PrivateSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-ecs-integ/development-environment-vpc/PrivateSubnet2/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "developmentenvironmentvpcPrivateSubnet2RouteTable687AB03B" + }, + "subnetId": { + "Ref": "developmentenvironmentvpcPrivateSubnet2Subnet20C1C37D" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-ecs-integ/development-environment-vpc/PrivateSubnet2/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "developmentenvironmentvpcPrivateSubnet2RouteTable687AB03B" + }, + "destinationCidrBlock": "0.0.0.0/0", + "natGatewayId": { + "Ref": "developmentenvironmentvpcPublicSubnet2NATGateway15A9C252" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "IGW": { + "id": "IGW", + "path": "aws-ecs-integ/development-environment-vpc/IGW", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::InternetGateway", + "aws:cdk:cloudformation:props": { + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/development-environment-vpc" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "VPCGW": { + "id": "VPCGW", + "path": "aws-ecs-integ/development-environment-vpc/VPCGW", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::VPCGatewayAttachment", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "developmentenvironmentvpcCB4216A4" + }, + "internetGatewayId": { + "Ref": "developmentenvironmentvpcIGW2B4E91B1" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "development-environment-cluster": { + "id": "development-environment-cluster", + "path": "aws-ecs-integ/development-environment-cluster", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/development-environment-cluster/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::Cluster", + "aws:cdk:cloudformation:props": {} + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultServiceDiscoveryNamespace": { + "id": "DefaultServiceDiscoveryNamespace", + "path": "aws-ecs-integ/development-environment-cluster/DefaultServiceDiscoveryNamespace", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/development-environment-cluster/DefaultServiceDiscoveryNamespace/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ServiceDiscovery::PrivateDnsNamespace", + "aws:cdk:cloudformation:props": { + "name": "development", + "vpc": { + "Ref": "developmentenvironmentvpcCB4216A4" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "production-mesh": { + "id": "production-mesh", + "path": "aws-ecs-integ/production-mesh", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/production-mesh/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::AppMesh::Mesh", + "aws:cdk:cloudformation:props": { + "meshName": "awsecsintegproductionmesh1A4ED585", + "spec": {} + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "development-mesh": { + "id": "development-mesh", + "path": "aws-ecs-integ/development-mesh", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/development-mesh/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::AppMesh::Mesh", + "aws:cdk:cloudformation:props": { + "meshName": "awsecsintegdevelopmentmeshEFC35179", + "spec": {} + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "name-production": { + "id": "name-production", + "path": "aws-ecs-integ/name-production", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "name-production-task-definition": { + "id": "name-production-task-definition", + "path": "aws-ecs-integ/name-production-task-definition", + "children": { + "TaskRole": { + "id": "TaskRole", + "path": "aws-ecs-integ/name-production-task-definition/TaskRole", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-production-task-definition/TaskRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-production-task-definition/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::TaskDefinition", + "aws:cdk:cloudformation:props": { + "containerDefinitions": [ + { + "cpu": 1024, + "dependsOn": [ + { + "containerName": "envoy", + "condition": "HEALTHY" + } + ], + "essential": true, + "image": "nathanpeck/name", + "memory": 2048, + "name": "app", + "portMappings": [ + { + "containerPort": 80, + "protocol": "tcp" + } + ], + "ulimits": [ + { + "name": "nofile", + "softLimit": 1024000, + "hardLimit": 1024000 + } + ], + "environment": [ + { + "name": "PORT", + "value": "80" + } + ] + }, + { + "essential": true, + "image": { + "Fn::Join": [ + "", + [ + { + "Fn::FindInMap": [ + "nameproductionenvoyimageaccountmapping", + { + "Ref": "AWS::Region" + }, + "ecrRepo" + ] + }, + ".dkr.ecr.", + { + "Ref": "AWS::Region" + }, + ".", + { + "Ref": "AWS::URLSuffix" + }, + "/aws-appmesh-envoy:v1.15.1.0-prod" + ] + ] + }, + "memoryReservation": 128, + "name": "envoy", + "ulimits": [ + { + "name": "nofile", + "softLimit": 1024000, + "hardLimit": 1024000 + } + ], + "user": "1337", + "logConfiguration": { + "logDriver": "awslogs", + "options": { + "awslogs-group": { + "Ref": "nameproductiontaskdefinitionenvoyLogGroupF79A2732" + }, + "awslogs-stream-prefix": "envoy", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "environment": [ + { + "name": "APPMESH_VIRTUAL_NODE_NAME", + "value": { + "Fn::Join": [ + "", + [ + "mesh/", + { + "Fn::GetAtt": [ + "productionmeshB6E81744", + "MeshName" + ] + }, + "/virtualNode/name-production" + ] + ] + } + }, + { + "name": "AWS_REGION", + "value": { + "Ref": "AWS::Region" + } + }, + { + "name": "ENABLE_ENVOY_STATS_TAGS", + "value": "1" + }, + { + "name": "ENABLE_ENVOY_DOG_STATSD", + "value": "1" + } + ], + "healthCheck": { + "command": [ + "CMD-SHELL", + "curl -s http://localhost:9901/server_info | grep state | grep -q LIVE" + ], + "interval": 5, + "retries": 3, + "startPeriod": 10, + "timeout": 2 + } + } + ], + "cpu": "1024", + "executionRoleArn": { + "Fn::GetAtt": [ + "nameproductiontaskdefinitionExecutionRoleB72DD86B", + "Arn" + ] + }, + "family": "awsecsintegnameproductiontaskdefinition9E1C363B", + "memory": "2048", + "networkMode": "awsvpc", + "proxyConfiguration": { + "containerName": "envoy", + "proxyConfigurationProperties": [ + { + "name": "AppPorts", + "value": "80" + }, + { + "name": "ProxyEgressPort", + "value": "15001" + }, + { + "name": "ProxyIngressPort", + "value": "15000" + }, + { + "name": "IgnoredUID", + "value": "1337" + }, + { + "name": "IgnoredGID", + "value": "1338" + }, + { + "name": "EgressIgnoredIPs", + "value": "169.254.170.2,169.254.169.254" + } + ], + "type": "APPMESH" + }, + "requiresCompatibilities": [ + "EC2", + "FARGATE" + ], + "taskRoleArn": { + "Fn::GetAtt": [ + "nameproductiontaskdefinitionTaskRole93E922EB", + "Arn" + ] + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "app": { + "id": "app", + "path": "aws-ecs-integ/name-production-task-definition/app", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "envoy": { + "id": "envoy", + "path": "aws-ecs-integ/name-production-task-definition/envoy", + "children": { + "LogGroup": { + "id": "LogGroup", + "path": "aws-ecs-integ/name-production-task-definition/envoy/LogGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-production-task-definition/envoy/LogGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Logs::LogGroup", + "aws:cdk:cloudformation:props": {} + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "ExecutionRole": { + "id": "ExecutionRole", + "path": "aws-ecs-integ/name-production-task-definition/ExecutionRole", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-production-task-definition/ExecutionRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultPolicy": { + "id": "DefaultPolicy", + "path": "aws-ecs-integ/name-production-task-definition/ExecutionRole/DefaultPolicy", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-production-task-definition/ExecutionRole/DefaultPolicy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": [ + "ecr:BatchCheckLayerAvailability", + "ecr:GetDownloadUrlForLayer", + "ecr:BatchGetImage" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":ecr:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Fn::FindInMap": [ + "nameproductionenvoyimageaccountmapping", + { + "Ref": "AWS::Region" + }, + "ecrRepo" + ] + }, + ":repository/aws-appmesh-envoy" + ] + ] + } + }, + { + "Action": "ecr:GetAuthorizationToken", + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "nameproductiontaskdefinitionenvoyLogGroupF79A2732", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "policyName": "nameproductiontaskdefinitionExecutionRoleDefaultPolicyB66C67BE", + "roles": [ + { + "Ref": "nameproductiontaskdefinitionExecutionRoleB72DD86B" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "name-production-envoy-image-account-mapping": { + "id": "name-production-envoy-image-account-mapping", + "path": "aws-ecs-integ/name-production-envoy-image-account-mapping", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnMapping", + "version": "0.0.0" + } + }, + "name-production-envoy-repo": { + "id": "name-production-envoy-repo", + "path": "aws-ecs-integ/name-production-envoy-repo", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "name-production-envoy-to-appmesh": { + "id": "name-production-envoy-to-appmesh", + "path": "aws-ecs-integ/name-production-envoy-to-appmesh", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-production-envoy-to-appmesh/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": "appmesh:StreamAggregatedResources", + "Effect": "Allow", + "Resource": { + "Ref": "productionmeshB6E81744" + } + } + ], + "Version": "2012-10-17" + }, + "policyName": "nameproductionenvoytoappmesh1B44B04A", + "roles": [ + { + "Ref": "nameproductiontaskdefinitionTaskRole93E922EB" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "name-production-service": { + "id": "name-production-service", + "path": "aws-ecs-integ/name-production-service", + "children": { + "Service": { + "id": "Service", + "path": "aws-ecs-integ/name-production-service/Service", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::Service", + "aws:cdk:cloudformation:props": { + "cluster": { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "deploymentConfiguration": { + "maximumPercent": 200, + "minimumHealthyPercent": 100 + }, + "desiredCount": 1, + "enableEcsManagedTags": false, + "launchType": "FARGATE", + "networkConfiguration": { + "awsvpcConfiguration": { + "assignPublicIp": "DISABLED", + "subnets": [ + { + "Ref": "productionenvironmentvpcPrivateSubnet1Subnet53F632E6" + }, + { + "Ref": "productionenvironmentvpcPrivateSubnet2Subnet756FB93C" + } + ], + "securityGroups": [ + { + "Fn::GetAtt": [ + "nameproductionserviceSecurityGroupF496E439", + "GroupId" + ] + } + ] + } + }, + "serviceRegistries": [ + { + "registryArn": { + "Fn::GetAtt": [ + "nameproductionserviceCloudmapService60E3273A", + "Arn" + ] + } + } + ], + "taskDefinition": { + "Ref": "nameproductiontaskdefinition33A5D5E0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "CloudmapService": { + "id": "CloudmapService", + "path": "aws-ecs-integ/name-production-service/CloudmapService", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-production-service/CloudmapService/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ServiceDiscovery::Service", + "aws:cdk:cloudformation:props": { + "dnsConfig": { + "dnsRecords": [ + { + "type": "A", + "ttl": 10 + } + ], + "namespaceId": { + "Fn::GetAtt": [ + "productionenvironmentclusterDefaultServiceDiscoveryNamespaceBE74D64D", + "Id" + ] + }, + "routingPolicy": "MULTIVALUE" + }, + "healthCheckCustomConfig": { + "failureThreshold": 2 + }, + "name": "name-production", + "namespaceId": { + "Fn::GetAtt": [ + "productionenvironmentclusterDefaultServiceDiscoveryNamespaceBE74D64D", + "Id" + ] + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "SecurityGroup": { + "id": "SecurityGroup", + "path": "aws-ecs-integ/name-production-service/SecurityGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-production-service/SecurityGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroup", + "aws:cdk:cloudformation:props": { + "groupDescription": "aws-ecs-integ/name-production-service/SecurityGroup", + "securityGroupEgress": [ + { + "cidrIp": "0.0.0.0/0", + "description": "Allow all outbound traffic by default", + "ipProtocol": "-1" + } + ], + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "name-production-virtual-node": { + "id": "name-production-virtual-node", + "path": "aws-ecs-integ/name-production-virtual-node", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-production-virtual-node/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::AppMesh::VirtualNode", + "aws:cdk:cloudformation:props": { + "meshName": { + "Fn::GetAtt": [ + "productionmeshB6E81744", + "MeshName" + ] + }, + "spec": { + "listeners": [ + { + "portMapping": { + "port": 80, + "protocol": "http" + } + } + ], + "serviceDiscovery": { + "awsCloudMap": { + "namespaceName": "production", + "serviceName": { + "Fn::GetAtt": [ + "nameproductionserviceCloudmapService60E3273A", + "Name" + ] + } + } + } + }, + "virtualNodeName": "name-production" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "name-production-virtual-router": { + "id": "name-production-virtual-router", + "path": "aws-ecs-integ/name-production-virtual-router", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-production-virtual-router/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::AppMesh::VirtualRouter", + "aws:cdk:cloudformation:props": { + "meshName": { + "Fn::GetAtt": [ + "productionmeshB6E81744", + "MeshName" + ] + }, + "spec": { + "listeners": [ + { + "portMapping": { + "port": 80, + "protocol": "http" + } + } + ] + }, + "virtualRouterName": "name-production" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "name-production-route": { + "id": "name-production-route", + "path": "aws-ecs-integ/name-production-virtual-router/name-production-route", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-production-virtual-router/name-production-route/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::AppMesh::Route", + "aws:cdk:cloudformation:props": { + "meshName": { + "Fn::GetAtt": [ + "productionmeshB6E81744", + "MeshName" + ] + }, + "spec": { + "httpRoute": { + "action": { + "weightedTargets": [ + { + "virtualNode": { + "Fn::GetAtt": [ + "nameproductionvirtualnodeC78443D9", + "VirtualNodeName" + ] + }, + "weight": 1 + } + ] + }, + "match": { + "prefix": "/" + } + } + }, + "virtualRouterName": { + "Fn::GetAtt": [ + "nameproductionvirtualrouter00E3366D", + "VirtualRouterName" + ] + }, + "routeName": "name-production-route" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "name-production-virtual-service": { + "id": "name-production-virtual-service", + "path": "aws-ecs-integ/name-production-virtual-service", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-production-virtual-service/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::AppMesh::VirtualService", + "aws:cdk:cloudformation:props": { + "meshName": { + "Fn::GetAtt": [ + "productionmeshB6E81744", + "MeshName" + ] + }, + "spec": { + "provider": { + "virtualRouter": { + "virtualRouterName": { + "Fn::GetAtt": [ + "nameproductionvirtualrouter00E3366D", + "VirtualRouterName" + ] + } + } + } + }, + "virtualServiceName": "name-production.production" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "name-development": { + "id": "name-development", + "path": "aws-ecs-integ/name-development", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "name-development-task-definition": { + "id": "name-development-task-definition", + "path": "aws-ecs-integ/name-development-task-definition", + "children": { + "TaskRole": { + "id": "TaskRole", + "path": "aws-ecs-integ/name-development-task-definition/TaskRole", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-development-task-definition/TaskRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-development-task-definition/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::TaskDefinition", + "aws:cdk:cloudformation:props": { + "containerDefinitions": [ + { + "cpu": 1024, + "dependsOn": [ + { + "containerName": "envoy", + "condition": "HEALTHY" + } + ], + "essential": true, + "image": "nathanpeck/name", + "memory": 2048, + "name": "app", + "portMappings": [ + { + "containerPort": 80, + "protocol": "tcp" + } + ], + "ulimits": [ + { + "name": "nofile", + "softLimit": 1024000, + "hardLimit": 1024000 + } + ], + "environment": [ + { + "name": "PORT", + "value": "80" + } + ] + }, + { + "essential": true, + "image": { + "Fn::Join": [ + "", + [ + { + "Fn::FindInMap": [ + "namedevelopmentenvoyimageaccountmapping", + { + "Ref": "AWS::Region" + }, + "ecrRepo" + ] + }, + ".dkr.ecr.", + { + "Ref": "AWS::Region" + }, + ".", + { + "Ref": "AWS::URLSuffix" + }, + "/aws-appmesh-envoy:v1.15.1.0-prod" + ] + ] + }, + "memoryReservation": 128, + "name": "envoy", + "ulimits": [ + { + "name": "nofile", + "softLimit": 1024000, + "hardLimit": 1024000 + } + ], + "user": "1337", + "logConfiguration": { + "logDriver": "awslogs", + "options": { + "awslogs-group": { + "Ref": "namedevelopmenttaskdefinitionenvoyLogGroupF8FCAFD6" + }, + "awslogs-stream-prefix": "envoy", + "awslogs-region": { + "Ref": "AWS::Region" + } + } + }, + "environment": [ + { + "name": "APPMESH_VIRTUAL_NODE_NAME", + "value": { + "Fn::Join": [ + "", + [ + "mesh/", + { + "Fn::GetAtt": [ + "developmentmeshCEC28AFE", + "MeshName" + ] + }, + "/virtualNode/name-development" + ] + ] + } + }, + { + "name": "AWS_REGION", + "value": { + "Ref": "AWS::Region" + } + }, + { + "name": "ENABLE_ENVOY_STATS_TAGS", + "value": "1" + }, + { + "name": "ENABLE_ENVOY_DOG_STATSD", + "value": "1" + } + ], + "healthCheck": { + "command": [ + "CMD-SHELL", + "curl -s http://localhost:9901/server_info | grep state | grep -q LIVE" + ], + "interval": 5, + "retries": 3, + "startPeriod": 10, + "timeout": 2 + } + } + ], + "cpu": "1024", + "executionRoleArn": { + "Fn::GetAtt": [ + "namedevelopmenttaskdefinitionExecutionRole48B53E4E", + "Arn" + ] + }, + "family": "awsecsintegnamedevelopmenttaskdefinitionC3797E10", + "memory": "2048", + "networkMode": "awsvpc", + "proxyConfiguration": { + "containerName": "envoy", + "proxyConfigurationProperties": [ + { + "name": "AppPorts", + "value": "80" + }, + { + "name": "ProxyEgressPort", + "value": "15001" + }, + { + "name": "ProxyIngressPort", + "value": "15000" + }, + { + "name": "IgnoredUID", + "value": "1337" + }, + { + "name": "IgnoredGID", + "value": "1338" + }, + { + "name": "EgressIgnoredIPs", + "value": "169.254.170.2,169.254.169.254" + } + ], + "type": "APPMESH" + }, + "requiresCompatibilities": [ + "EC2", + "FARGATE" + ], + "taskRoleArn": { + "Fn::GetAtt": [ + "namedevelopmenttaskdefinitionTaskRole66A85BBB", + "Arn" + ] + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "app": { + "id": "app", + "path": "aws-ecs-integ/name-development-task-definition/app", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "envoy": { + "id": "envoy", + "path": "aws-ecs-integ/name-development-task-definition/envoy", + "children": { + "LogGroup": { + "id": "LogGroup", + "path": "aws-ecs-integ/name-development-task-definition/envoy/LogGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-development-task-definition/envoy/LogGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Logs::LogGroup", + "aws:cdk:cloudformation:props": {} + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "ExecutionRole": { + "id": "ExecutionRole", + "path": "aws-ecs-integ/name-development-task-definition/ExecutionRole", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-development-task-definition/ExecutionRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultPolicy": { + "id": "DefaultPolicy", + "path": "aws-ecs-integ/name-development-task-definition/ExecutionRole/DefaultPolicy", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-development-task-definition/ExecutionRole/DefaultPolicy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": [ + "ecr:BatchCheckLayerAvailability", + "ecr:GetDownloadUrlForLayer", + "ecr:BatchGetImage" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":ecr:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Fn::FindInMap": [ + "namedevelopmentenvoyimageaccountmapping", + { + "Ref": "AWS::Region" + }, + "ecrRepo" + ] + }, + ":repository/aws-appmesh-envoy" + ] + ] + } + }, + { + "Action": "ecr:GetAuthorizationToken", + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "namedevelopmenttaskdefinitionenvoyLogGroupF8FCAFD6", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "policyName": "namedevelopmenttaskdefinitionExecutionRoleDefaultPolicy34EAA008", + "roles": [ + { + "Ref": "namedevelopmenttaskdefinitionExecutionRole48B53E4E" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "name-development-envoy-image-account-mapping": { + "id": "name-development-envoy-image-account-mapping", + "path": "aws-ecs-integ/name-development-envoy-image-account-mapping", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnMapping", + "version": "0.0.0" + } + }, + "name-development-envoy-repo": { + "id": "name-development-envoy-repo", + "path": "aws-ecs-integ/name-development-envoy-repo", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "name-development-envoy-to-appmesh": { + "id": "name-development-envoy-to-appmesh", + "path": "aws-ecs-integ/name-development-envoy-to-appmesh", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-development-envoy-to-appmesh/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": "appmesh:StreamAggregatedResources", + "Effect": "Allow", + "Resource": { + "Ref": "developmentmeshCEC28AFE" + } + } + ], + "Version": "2012-10-17" + }, + "policyName": "namedevelopmentenvoytoappmesh45FF08AA", + "roles": [ + { + "Ref": "namedevelopmenttaskdefinitionTaskRole66A85BBB" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "name-development-service": { + "id": "name-development-service", + "path": "aws-ecs-integ/name-development-service", + "children": { + "Service": { + "id": "Service", + "path": "aws-ecs-integ/name-development-service/Service", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::Service", + "aws:cdk:cloudformation:props": { + "cluster": { + "Ref": "developmentenvironmentcluster1B64BE8B" + }, + "deploymentConfiguration": { + "maximumPercent": 200, + "minimumHealthyPercent": 100 + }, + "desiredCount": 1, + "enableEcsManagedTags": false, + "launchType": "FARGATE", + "networkConfiguration": { + "awsvpcConfiguration": { + "assignPublicIp": "DISABLED", + "subnets": [ + { + "Ref": "developmentenvironmentvpcPrivateSubnet1SubnetAAECD171" + }, + { + "Ref": "developmentenvironmentvpcPrivateSubnet2Subnet20C1C37D" + } + ], + "securityGroups": [ + { + "Fn::GetAtt": [ + "namedevelopmentserviceSecurityGroupE2ECED97", + "GroupId" + ] + } + ] + } + }, + "serviceRegistries": [ + { + "registryArn": { + "Fn::GetAtt": [ + "namedevelopmentserviceCloudmapService63674467", + "Arn" + ] + } + } + ], + "taskDefinition": { + "Ref": "namedevelopmenttaskdefinition0468FBFF" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "CloudmapService": { + "id": "CloudmapService", + "path": "aws-ecs-integ/name-development-service/CloudmapService", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-development-service/CloudmapService/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ServiceDiscovery::Service", + "aws:cdk:cloudformation:props": { + "dnsConfig": { + "dnsRecords": [ + { + "type": "A", + "ttl": 10 + } + ], + "namespaceId": { + "Fn::GetAtt": [ + "developmentenvironmentclusterDefaultServiceDiscoveryNamespace0F234767", + "Id" + ] + }, + "routingPolicy": "MULTIVALUE" + }, + "healthCheckCustomConfig": { + "failureThreshold": 2 + }, + "name": "name-development", + "namespaceId": { + "Fn::GetAtt": [ + "developmentenvironmentclusterDefaultServiceDiscoveryNamespace0F234767", + "Id" + ] + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "SecurityGroup": { + "id": "SecurityGroup", + "path": "aws-ecs-integ/name-development-service/SecurityGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-development-service/SecurityGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroup", + "aws:cdk:cloudformation:props": { + "groupDescription": "aws-ecs-integ/name-development-service/SecurityGroup", + "securityGroupEgress": [ + { + "cidrIp": "0.0.0.0/0", + "description": "Allow all outbound traffic by default", + "ipProtocol": "-1" + } + ], + "vpcId": { + "Ref": "developmentenvironmentvpcCB4216A4" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "name-development-virtual-node": { + "id": "name-development-virtual-node", + "path": "aws-ecs-integ/name-development-virtual-node", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-development-virtual-node/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::AppMesh::VirtualNode", + "aws:cdk:cloudformation:props": { + "meshName": { + "Fn::GetAtt": [ + "developmentmeshCEC28AFE", + "MeshName" + ] + }, + "spec": { + "listeners": [ + { + "portMapping": { + "port": 80, + "protocol": "http" + } + } + ], + "serviceDiscovery": { + "awsCloudMap": { + "namespaceName": "development", + "serviceName": { + "Fn::GetAtt": [ + "namedevelopmentserviceCloudmapService63674467", + "Name" + ] + } + } + } + }, + "virtualNodeName": "name-development" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "name-development-virtual-router": { + "id": "name-development-virtual-router", + "path": "aws-ecs-integ/name-development-virtual-router", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-development-virtual-router/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::AppMesh::VirtualRouter", + "aws:cdk:cloudformation:props": { + "meshName": { + "Fn::GetAtt": [ + "developmentmeshCEC28AFE", + "MeshName" + ] + }, + "spec": { + "listeners": [ + { + "portMapping": { + "port": 80, + "protocol": "http" + } + } + ] + }, + "virtualRouterName": "name-development" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "name-development-route": { + "id": "name-development-route", + "path": "aws-ecs-integ/name-development-virtual-router/name-development-route", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-development-virtual-router/name-development-route/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::AppMesh::Route", + "aws:cdk:cloudformation:props": { + "meshName": { + "Fn::GetAtt": [ + "developmentmeshCEC28AFE", + "MeshName" + ] + }, + "spec": { + "httpRoute": { + "action": { + "weightedTargets": [ + { + "virtualNode": { + "Fn::GetAtt": [ + "namedevelopmentvirtualnode55118E80", + "VirtualNodeName" + ] + }, + "weight": 1 + } + ] + }, + "match": { + "prefix": "/" + } + } + }, + "virtualRouterName": { + "Fn::GetAtt": [ + "namedevelopmentvirtualrouter0AE5105D", + "VirtualRouterName" + ] + }, + "routeName": "name-development-route" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "name-development-virtual-service": { + "id": "name-development-virtual-service", + "path": "aws-ecs-integ/name-development-virtual-service", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/name-development-virtual-service/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::AppMesh::VirtualService", + "aws:cdk:cloudformation:props": { + "meshName": { + "Fn::GetAtt": [ + "developmentmeshCEC28AFE", + "MeshName" + ] + }, + "spec": { + "provider": { + "virtualRouter": { + "virtualRouterName": { + "Fn::GetAtt": [ + "namedevelopmentvirtualrouter0AE5105D", + "VirtualRouterName" + ] + } + } + } + }, + "virtualServiceName": "name-development.development" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Stack", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.App", + "version": "0.0.0" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/publish-subscribe.integ.snapshot/asset.a820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91/index.py b/packages/@aws-cdk-containers/ecs-service-extensions/test/publish-subscribe.integ.snapshot/asset.a820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91/index.py new file mode 100644 index 0000000000000..d24454171e478 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/publish-subscribe.integ.snapshot/asset.a820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91/index.py @@ -0,0 +1,15 @@ +import os +import boto3 +from queue_backlog_calculator import QueueHandler + +def queue_handler(event, context): + """ + Handler for the lambda trigger + """ + + ecs = boto3.client('ecs') + sqs = boto3.client('sqs') + + queue_handler = QueueHandler(ecs_client=ecs, sqs_client=sqs, environ=os.environ) + + return queue_handler.emit() diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/publish-subscribe.integ.snapshot/asset.a820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91/queue_backlog_calculator.py b/packages/@aws-cdk-containers/ecs-service-extensions/test/publish-subscribe.integ.snapshot/asset.a820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91/queue_backlog_calculator.py new file mode 100644 index 0000000000000..5f14d74a76bd2 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/publish-subscribe.integ.snapshot/asset.a820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91/queue_backlog_calculator.py @@ -0,0 +1,71 @@ +from math import ceil +import time +import json + +class QueueHandler: + def __init__(self, ecs_client, sqs_client, environ): + self.ecs = ecs_client + self.sqs = sqs_client + self.cluster_name = environ['CLUSTER_NAME'] + self.service_name = environ['SERVICE_NAME'] + self.namespace = environ['NAMESPACE'] + self.queue_names = environ['QUEUE_NAMES'].split(',') + + def emit(self): + try: + running_count = self.get_running_task_count() + backlogs = [self.get_queue_backlog(queue_name, running_count) for queue_name in self.queue_names] + self.timestamp = int(time.time() * 1000) + for backlog in backlogs: + self.emit_backlog_per_task_metric(backlog['queueName'], backlog['backlogPerTask']) + except Exception as e: + Exception('Exception: {}'.format(e)) + + """ + Write the backlogPerTask metric to the stdout according to the Cloudwatch embedded metric format. + """ + def emit_backlog_per_task_metric(self, queue_name, backlog_per_task): + print(json.dumps({ + "_aws": { + "Timestamp": self.timestamp, + "CloudWatchMetrics": [{ + "Namespace": self.namespace, + "Dimensions": [["QueueName"]], + "Metrics": [{"Name":"BacklogPerTask", "Unit": "Count"}] + }], + }, + "QueueName": queue_name, + "BacklogPerTask": backlog_per_task, + })) + + """ + Get the number of tasks in the 'RUNNING' state for the service 'service_name'. + """ + def get_running_task_count(self): + service_desc = self.ecs.describe_services( + cluster=self.cluster_name, + services=[self.service_name], + ) + if len(service_desc['services']) == 0: + raise Exception('There are no services with name {} in cluster: {}'.format(self.service_name, self.cluster_name)) + return service_desc['services'][0].get('runningCount', 0) + + """ + This method calculates and returns the backlogPerTask metric for the given queue. + """ + def get_queue_backlog(self, queue_name, count): + queue_url = self.sqs.get_queue_url(QueueName=queue_name) + running_count = 1 if count == 0 else count + + def get_backlog_per_task(): + queue_attributes = self.sqs.get_queue_attributes( + QueueUrl=queue_url['QueueUrl'], + AttributeNames=['ApproximateNumberOfMessages'] + ) + num_of_msgs = int(queue_attributes['Attributes'].get('ApproximateNumberOfMessages', 0)) + return ceil(num_of_msgs/running_count) + + return { + 'queueName': queue_name, + 'backlogPerTask': get_backlog_per_task() + } \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/publish-subscribe.integ.snapshot/aws-ecs-integ.template.json b/packages/@aws-cdk-containers/ecs-service-extensions/test/publish-subscribe.integ.snapshot/aws-ecs-integ.template.json new file mode 100644 index 0000000000000..61f2c1286c0b2 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/publish-subscribe.integ.snapshot/aws-ecs-integ.template.json @@ -0,0 +1,1205 @@ +{ + "Resources": { + "productionenvironmentvpcAEB47DF7": { + "Type": "AWS::EC2::VPC", + "Properties": { + "CidrBlock": "10.0.0.0/16", + "EnableDnsHostnames": true, + "EnableDnsSupport": true, + "InstanceTenancy": "default", + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet1Subnet8D92C089": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.0.0/18", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Public" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Public" + }, + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet1RouteTable6E9ABC21": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet1RouteTableAssociationA8117374": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPublicSubnet1RouteTable6E9ABC21" + }, + "SubnetId": { + "Ref": "productionenvironmentvpcPublicSubnet1Subnet8D92C089" + } + } + }, + "productionenvironmentvpcPublicSubnet1DefaultRoute524C894D": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPublicSubnet1RouteTable6E9ABC21" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "productionenvironmentvpcIGWE7C39890" + } + }, + "DependsOn": [ + "productionenvironmentvpcVPCGW1B428D07" + ] + }, + "productionenvironmentvpcPublicSubnet1EIP54BA88DB": { + "Type": "AWS::EC2::EIP", + "Properties": { + "Domain": "vpc", + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet1NATGateway6075E4CA": { + "Type": "AWS::EC2::NatGateway", + "Properties": { + "SubnetId": { + "Ref": "productionenvironmentvpcPublicSubnet1Subnet8D92C089" + }, + "AllocationId": { + "Fn::GetAtt": [ + "productionenvironmentvpcPublicSubnet1EIP54BA88DB", + "AllocationId" + ] + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet2Subnet298E6C31": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.64.0/18", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Public" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Public" + }, + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet2RouteTable842A68D7": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet2RouteTableAssociation0A7549F3": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPublicSubnet2RouteTable842A68D7" + }, + "SubnetId": { + "Ref": "productionenvironmentvpcPublicSubnet2Subnet298E6C31" + } + } + }, + "productionenvironmentvpcPublicSubnet2DefaultRoute92CD697D": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPublicSubnet2RouteTable842A68D7" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "productionenvironmentvpcIGWE7C39890" + } + }, + "DependsOn": [ + "productionenvironmentvpcVPCGW1B428D07" + ] + }, + "productionenvironmentvpcPublicSubnet2EIP14CA46AA": { + "Type": "AWS::EC2::EIP", + "Properties": { + "Domain": "vpc", + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "productionenvironmentvpcPublicSubnet2NATGatewayE1850FCC": { + "Type": "AWS::EC2::NatGateway", + "Properties": { + "SubnetId": { + "Ref": "productionenvironmentvpcPublicSubnet2Subnet298E6C31" + }, + "AllocationId": { + "Fn::GetAtt": [ + "productionenvironmentvpcPublicSubnet2EIP14CA46AA", + "AllocationId" + ] + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "productionenvironmentvpcPrivateSubnet1Subnet53F632E6": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.128.0/18", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Private" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Private" + }, + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1" + } + ] + } + }, + "productionenvironmentvpcPrivateSubnet1RouteTable2C6DFF0C": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1" + } + ] + } + }, + "productionenvironmentvpcPrivateSubnet1RouteTableAssociation8BA32463": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet1RouteTable2C6DFF0C" + }, + "SubnetId": { + "Ref": "productionenvironmentvpcPrivateSubnet1Subnet53F632E6" + } + } + }, + "productionenvironmentvpcPrivateSubnet1DefaultRouteFBB3DE6C": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet1RouteTable2C6DFF0C" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "NatGatewayId": { + "Ref": "productionenvironmentvpcPublicSubnet1NATGateway6075E4CA" + } + } + }, + "productionenvironmentvpcPrivateSubnet2Subnet756FB93C": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.192.0/18", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Private" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Private" + }, + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2" + } + ] + } + }, + "productionenvironmentvpcPrivateSubnet2RouteTable2F77D0D2": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2" + } + ] + } + }, + "productionenvironmentvpcPrivateSubnet2RouteTableAssociation09188261": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet2RouteTable2F77D0D2" + }, + "SubnetId": { + "Ref": "productionenvironmentvpcPrivateSubnet2Subnet756FB93C" + } + } + }, + "productionenvironmentvpcPrivateSubnet2DefaultRoute5F9AB6C1": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet2RouteTable2F77D0D2" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "NatGatewayId": { + "Ref": "productionenvironmentvpcPublicSubnet2NATGatewayE1850FCC" + } + } + }, + "productionenvironmentvpcIGWE7C39890": { + "Type": "AWS::EC2::InternetGateway", + "Properties": { + "Tags": [ + { + "Key": "Name", + "Value": "aws-ecs-integ/production-environment-vpc" + } + ] + } + }, + "productionenvironmentvpcVPCGW1B428D07": { + "Type": "AWS::EC2::VPCGatewayAttachment", + "Properties": { + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "InternetGatewayId": { + "Ref": "productionenvironmentvpcIGWE7C39890" + } + } + }, + "productionenvironmentclusterC6599D2D": { + "Type": "AWS::ECS::Cluster" + }, + "signupD2AAA171": { + "Type": "AWS::SNS::Topic" + }, + "delete1CCE71FF": { + "Type": "AWS::SNS::Topic" + }, + "PublishertaskdefinitionTaskRoleE8655AA5": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "PublishertaskdefinitionTaskRoleDefaultPolicyD6E49F15": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "sns:Publish", + "Effect": "Allow", + "Resource": { + "Ref": "signupD2AAA171" + } + }, + { + "Action": "sns:Publish", + "Effect": "Allow", + "Resource": { + "Ref": "delete1CCE71FF" + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "PublishertaskdefinitionTaskRoleDefaultPolicyD6E49F15", + "Roles": [ + { + "Ref": "PublishertaskdefinitionTaskRoleE8655AA5" + } + ] + } + }, + "PublishertaskdefinitionA4324C64": { + "Type": "AWS::ECS::TaskDefinition", + "Properties": { + "ContainerDefinitions": [ + { + "Cpu": 256, + "Environment": [ + { + "Name": "PORT", + "Value": "80" + }, + { + "Name": "SIGN-UP_TOPIC_ARN", + "Value": { + "Ref": "signupD2AAA171" + } + }, + { + "Name": "DELETE_TOPIC_ARN", + "Value": { + "Ref": "delete1CCE71FF" + } + } + ], + "Essential": true, + "Image": "nathanpeck/name", + "Memory": 512, + "Name": "app", + "PortMappings": [ + { + "ContainerPort": 80, + "Protocol": "tcp" + } + ], + "Ulimits": [ + { + "HardLimit": 1024000, + "Name": "nofile", + "SoftLimit": 1024000 + } + ] + } + ], + "Cpu": "256", + "Family": "awsecsintegPublishertaskdefinitionD50610D0", + "Memory": "512", + "NetworkMode": "awsvpc", + "RequiresCompatibilities": [ + "EC2", + "FARGATE" + ], + "TaskRoleArn": { + "Fn::GetAtt": [ + "PublishertaskdefinitionTaskRoleE8655AA5", + "Arn" + ] + } + } + }, + "PublisherserviceService9EB00F60": { + "Type": "AWS::ECS::Service", + "Properties": { + "Cluster": { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "DeploymentConfiguration": { + "MaximumPercent": 200, + "MinimumHealthyPercent": 100 + }, + "DesiredCount": 1, + "EnableECSManagedTags": false, + "LaunchType": "FARGATE", + "NetworkConfiguration": { + "AwsvpcConfiguration": { + "AssignPublicIp": "DISABLED", + "SecurityGroups": [ + { + "Fn::GetAtt": [ + "PublisherserviceSecurityGroupC7B0C0D0", + "GroupId" + ] + } + ], + "Subnets": [ + { + "Ref": "productionenvironmentvpcPrivateSubnet1Subnet53F632E6" + }, + { + "Ref": "productionenvironmentvpcPrivateSubnet2Subnet756FB93C" + } + ] + } + }, + "TaskDefinition": { + "Ref": "PublishertaskdefinitionA4324C64" + } + } + }, + "PublisherserviceSecurityGroupC7B0C0D0": { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "aws-ecs-integ/Publisher-service/SecurityGroup", + "SecurityGroupEgress": [ + { + "CidrIp": "0.0.0.0/0", + "Description": "Allow all outbound traffic by default", + "IpProtocol": "-1" + } + ], + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + } + } + }, + "signupqueue33AFF2E6": { + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "signupqueuePolicy185ADC00": { + "Type": "AWS::SQS::QueuePolicy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "sqs:SendMessage", + "Condition": { + "ArnEquals": { + "aws:SourceArn": { + "Ref": "signupD2AAA171" + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "sns.amazonaws.com" + }, + "Resource": { + "Fn::GetAtt": [ + "signupqueue33AFF2E6", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "Queues": [ + { + "Ref": "signupqueue33AFF2E6" + } + ] + } + }, + "signupqueueawsecsintegsignup8DE00B29CE828029": { + "Type": "AWS::SNS::Subscription", + "Properties": { + "Protocol": "sqs", + "TopicArn": { + "Ref": "signupD2AAA171" + }, + "Endpoint": { + "Fn::GetAtt": [ + "signupqueue33AFF2E6", + "Arn" + ] + } + } + }, + "EventsDeadLetterQueue404572C7": { + "Type": "AWS::SQS::Queue", + "Properties": { + "MessageRetentionPeriod": 1209600 + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "EventsQueueB96EB0D2": { + "Type": "AWS::SQS::Queue", + "Properties": { + "RedrivePolicy": { + "deadLetterTargetArn": { + "Fn::GetAtt": [ + "EventsDeadLetterQueue404572C7", + "Arn" + ] + }, + "maxReceiveCount": 3 + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "EventsQueuePolicyF3E925EC": { + "Type": "AWS::SQS::QueuePolicy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "sqs:SendMessage", + "Condition": { + "ArnEquals": { + "aws:SourceArn": { + "Ref": "delete1CCE71FF" + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "sns.amazonaws.com" + }, + "Resource": { + "Fn::GetAtt": [ + "EventsQueueB96EB0D2", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "Queues": [ + { + "Ref": "EventsQueueB96EB0D2" + } + ] + } + }, + "EventsQueueawsecsintegdeleteF56807768162F4C0": { + "Type": "AWS::SNS::Subscription", + "Properties": { + "Protocol": "sqs", + "TopicArn": { + "Ref": "delete1CCE71FF" + }, + "Endpoint": { + "Fn::GetAtt": [ + "EventsQueueB96EB0D2", + "Arn" + ] + } + } + }, + "WorkertaskdefinitionTaskRole1EBF20D6": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "WorkertaskdefinitionTaskRoleDefaultPolicy45EAFD8C": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "sqs:ReceiveMessage", + "sqs:ChangeMessageVisibility", + "sqs:GetQueueUrl", + "sqs:DeleteMessage", + "sqs:GetQueueAttributes" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "EventsQueueB96EB0D2", + "Arn" + ] + } + }, + { + "Action": [ + "sqs:ReceiveMessage", + "sqs:ChangeMessageVisibility", + "sqs:GetQueueUrl", + "sqs:DeleteMessage", + "sqs:GetQueueAttributes" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "signupqueue33AFF2E6", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "WorkertaskdefinitionTaskRoleDefaultPolicy45EAFD8C", + "Roles": [ + { + "Ref": "WorkertaskdefinitionTaskRole1EBF20D6" + } + ] + } + }, + "WorkertaskdefinitionBF93A675": { + "Type": "AWS::ECS::TaskDefinition", + "Properties": { + "ContainerDefinitions": [ + { + "Cpu": 256, + "Environment": [ + { + "Name": "PORT", + "Value": "80" + }, + { + "Name": "WORKER_QUEUE_URI", + "Value": { + "Ref": "EventsQueueB96EB0D2" + } + } + ], + "Essential": true, + "Image": "nathanpeck/name", + "Memory": 512, + "Name": "app", + "PortMappings": [ + { + "ContainerPort": 80, + "Protocol": "tcp" + } + ], + "Ulimits": [ + { + "HardLimit": 1024000, + "Name": "nofile", + "SoftLimit": 1024000 + } + ] + } + ], + "Cpu": "256", + "Family": "awsecsintegWorkertaskdefinition32B60762", + "Memory": "512", + "NetworkMode": "awsvpc", + "RequiresCompatibilities": [ + "EC2", + "FARGATE" + ], + "TaskRoleArn": { + "Fn::GetAtt": [ + "WorkertaskdefinitionTaskRole1EBF20D6", + "Arn" + ] + } + } + }, + "WorkerserviceService68C5A5C3": { + "Type": "AWS::ECS::Service", + "Properties": { + "Cluster": { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "DeploymentConfiguration": { + "MaximumPercent": 200, + "MinimumHealthyPercent": 100 + }, + "EnableECSManagedTags": false, + "LaunchType": "FARGATE", + "NetworkConfiguration": { + "AwsvpcConfiguration": { + "AssignPublicIp": "DISABLED", + "SecurityGroups": [ + { + "Fn::GetAtt": [ + "WorkerserviceSecurityGroup1CDDB904", + "GroupId" + ] + } + ], + "Subnets": [ + { + "Ref": "productionenvironmentvpcPrivateSubnet1Subnet53F632E6" + }, + { + "Ref": "productionenvironmentvpcPrivateSubnet2Subnet756FB93C" + } + ] + } + }, + "TaskDefinition": { + "Ref": "WorkertaskdefinitionBF93A675" + } + } + }, + "WorkerserviceSecurityGroup1CDDB904": { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "aws-ecs-integ/Worker-service/SecurityGroup", + "SecurityGroupEgress": [ + { + "CidrIp": "0.0.0.0/0", + "Description": "Allow all outbound traffic by default", + "IpProtocol": "-1" + } + ], + "VpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + } + } + }, + "WorkerserviceTaskCountTarget6636D808": { + "Type": "AWS::ApplicationAutoScaling::ScalableTarget", + "Properties": { + "MaxCapacity": 10, + "MinCapacity": 1, + "ResourceId": { + "Fn::Join": [ + "", + [ + "service/", + { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "/", + { + "Fn::GetAtt": [ + "WorkerserviceService68C5A5C3", + "Name" + ] + } + ] + ] + }, + "RoleARN": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/aws-service-role/ecs.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ECSService" + ] + ] + }, + "ScalableDimension": "ecs:service:DesiredCount", + "ServiceNamespace": "ecs" + } + }, + "WorkerserviceTaskCountTargetEventsQueueautoscalingpolicyD12B62ED": { + "Type": "AWS::ApplicationAutoScaling::ScalingPolicy", + "Properties": { + "PolicyName": "awsecsintegWorkerserviceTaskCountTargetEventsQueueautoscalingpolicyDBD40B57", + "PolicyType": "TargetTrackingScaling", + "ScalingTargetId": { + "Ref": "WorkerserviceTaskCountTarget6636D808" + }, + "TargetTrackingScalingPolicyConfiguration": { + "CustomizedMetricSpecification": { + "Dimensions": [ + { + "Name": "QueueName", + "Value": { + "Fn::GetAtt": [ + "EventsQueueB96EB0D2", + "QueueName" + ] + } + } + ], + "MetricName": "BacklogPerTask", + "Namespace": "production-Worker", + "Statistic": "Average", + "Unit": "Count" + }, + "TargetValue": 15 + } + } + }, + "WorkerserviceTaskCountTargetsignupqueueautoscalingpolicyB7321DB7": { + "Type": "AWS::ApplicationAutoScaling::ScalingPolicy", + "Properties": { + "PolicyName": "awsecsintegWorkerserviceTaskCountTargetsignupqueueautoscalingpolicyDF93FC37", + "PolicyType": "TargetTrackingScaling", + "ScalingTargetId": { + "Ref": "WorkerserviceTaskCountTarget6636D808" + }, + "TargetTrackingScalingPolicyConfiguration": { + "CustomizedMetricSpecification": { + "Dimensions": [ + { + "Name": "QueueName", + "Value": { + "Fn::GetAtt": [ + "signupqueue33AFF2E6", + "QueueName" + ] + } + } + ], + "MetricName": "BacklogPerTask", + "Namespace": "production-Worker", + "Statistic": "Average", + "Unit": "Count" + }, + "TargetValue": 30 + } + } + }, + "BackLogPerTaskCalculatorFunctionServiceRoleEFA723A4": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "BackLogPerTaskCalculatorFunctionServiceRoleDefaultPolicyB6B10266": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "ecs:DescribeServices", + "Condition": { + "ArnEquals": { + "ecs:cluster": { + "Fn::GetAtt": [ + "productionenvironmentclusterC6599D2D", + "Arn" + ] + } + } + }, + "Effect": "Allow", + "Resource": { + "Ref": "WorkerserviceService68C5A5C3" + } + }, + { + "Action": [ + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "EventsQueueB96EB0D2", + "Arn" + ] + }, + { + "Fn::GetAtt": [ + "signupqueue33AFF2E6", + "Arn" + ] + } + ] + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "BackLogPerTaskCalculatorFunctionServiceRoleDefaultPolicyB6B10266", + "Roles": [ + { + "Ref": "BackLogPerTaskCalculatorFunctionServiceRoleEFA723A4" + } + ] + } + }, + "BackLogPerTaskCalculatorFunction95AA21D5": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Ref": "AssetParametersa820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91S3Bucket1FFDEA8D" + }, + "S3Key": { + "Fn::Join": [ + "", + [ + { + "Fn::Select": [ + 0, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParametersa820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91S3VersionKeyA60C027B" + } + ] + } + ] + }, + { + "Fn::Select": [ + 1, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParametersa820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91S3VersionKeyA60C027B" + } + ] + } + ] + } + ] + ] + } + }, + "Role": { + "Fn::GetAtt": [ + "BackLogPerTaskCalculatorFunctionServiceRoleEFA723A4", + "Arn" + ] + }, + "Environment": { + "Variables": { + "CLUSTER_NAME": { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "SERVICE_NAME": { + "Fn::GetAtt": [ + "WorkerserviceService68C5A5C3", + "Name" + ] + }, + "NAMESPACE": "production-Worker", + "QUEUE_NAMES": { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "EventsQueueB96EB0D2", + "QueueName" + ] + }, + ",", + { + "Fn::GetAtt": [ + "signupqueue33AFF2E6", + "QueueName" + ] + } + ] + ] + } + } + }, + "Handler": "index.queue_handler", + "Runtime": "python3.9" + }, + "DependsOn": [ + "BackLogPerTaskCalculatorFunctionServiceRoleDefaultPolicyB6B10266", + "BackLogPerTaskCalculatorFunctionServiceRoleEFA723A4" + ] + }, + "BacklogPerTaskScheduledRuleB871DD15": { + "Type": "AWS::Events::Rule", + "Properties": { + "ScheduleExpression": "rate(1 minute)", + "State": "ENABLED", + "Targets": [ + { + "Arn": { + "Fn::GetAtt": [ + "BackLogPerTaskCalculatorFunction95AA21D5", + "Arn" + ] + }, + "Id": "Target0" + } + ] + } + }, + "BacklogPerTaskScheduledRuleAllowEventRuleawsecsintegBackLogPerTaskCalculatorFunctionEB2B91C7CCD725BB": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "BackLogPerTaskCalculatorFunction95AA21D5", + "Arn" + ] + }, + "Principal": "events.amazonaws.com", + "SourceArn": { + "Fn::GetAtt": [ + "BacklogPerTaskScheduledRuleB871DD15", + "Arn" + ] + } + } + }, + "WorkerBackLogPerTaskCalculatorLogsA4B5AF42": { + "Type": "AWS::Logs::LogGroup", + "Properties": { + "LogGroupName": { + "Fn::Join": [ + "", + [ + "/aws/lambda/", + { + "Ref": "BackLogPerTaskCalculatorFunction95AA21D5" + } + ] + ] + }, + "RetentionInDays": 3 + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + } + }, + "Parameters": { + "AssetParametersa820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91S3Bucket1FFDEA8D": { + "Type": "String", + "Description": "S3 bucket for asset \"a820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91\"" + }, + "AssetParametersa820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91S3VersionKeyA60C027B": { + "Type": "String", + "Description": "S3 key for asset version \"a820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91\"" + }, + "AssetParametersa820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91ArtifactHashC1953821": { + "Type": "String", + "Description": "Artifact hash for asset \"a820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91\"" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/publish-subscribe.integ.snapshot/cdk.out b/packages/@aws-cdk-containers/ecs-service-extensions/test/publish-subscribe.integ.snapshot/cdk.out new file mode 100644 index 0000000000000..90bef2e09ad39 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/publish-subscribe.integ.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"17.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/publish-subscribe.integ.snapshot/manifest.json b/packages/@aws-cdk-containers/ecs-service-extensions/test/publish-subscribe.integ.snapshot/manifest.json new file mode 100644 index 0000000000000..6aa1b14c5a4ba --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/publish-subscribe.integ.snapshot/manifest.json @@ -0,0 +1,367 @@ +{ + "version": "17.0.0", + "artifacts": { + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + }, + "metadata": {} + }, + "aws-ecs-integ": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-ecs-integ.template.json", + "validateOnSynth": false + }, + "metadata": { + "/aws-ecs-integ": [ + { + "type": "aws:cdk:asset", + "data": { + "path": "asset.a820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91", + "id": "a820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91", + "packaging": "zip", + "sourceHash": "a820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91", + "s3BucketParameter": "AssetParametersa820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91S3Bucket1FFDEA8D", + "s3KeyParameter": "AssetParametersa820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91S3VersionKeyA60C027B", + "artifactHashParameter": "AssetParametersa820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91ArtifactHashC1953821" + } + } + ], + "/aws-ecs-integ/production-environment-vpc/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcAEB47DF7" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet1/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet1Subnet8D92C089" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet1/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet1RouteTable6E9ABC21" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet1/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet1RouteTableAssociationA8117374" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet1/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet1DefaultRoute524C894D" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet1/EIP": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet1EIP54BA88DB" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet1/NATGateway": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet1NATGateway6075E4CA" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet2/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet2Subnet298E6C31" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet2/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet2RouteTable842A68D7" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet2/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet2RouteTableAssociation0A7549F3" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet2/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet2DefaultRoute92CD697D" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet2/EIP": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet2EIP14CA46AA" + } + ], + "/aws-ecs-integ/production-environment-vpc/PublicSubnet2/NATGateway": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPublicSubnet2NATGatewayE1850FCC" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet1/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet1Subnet53F632E6" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet1/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet1RouteTable2C6DFF0C" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet1/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet1RouteTableAssociation8BA32463" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet1/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet1DefaultRouteFBB3DE6C" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet2/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet2Subnet756FB93C" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet2/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet2RouteTable2F77D0D2" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet2/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet2RouteTableAssociation09188261" + } + ], + "/aws-ecs-integ/production-environment-vpc/PrivateSubnet2/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcPrivateSubnet2DefaultRoute5F9AB6C1" + } + ], + "/aws-ecs-integ/production-environment-vpc/IGW": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcIGWE7C39890" + } + ], + "/aws-ecs-integ/production-environment-vpc/VPCGW": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentvpcVPCGW1B428D07" + } + ], + "/aws-ecs-integ/production-environment-cluster/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "productionenvironmentclusterC6599D2D" + } + ], + "/aws-ecs-integ/sign-up/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "signupD2AAA171" + } + ], + "/aws-ecs-integ/delete/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "delete1CCE71FF" + } + ], + "/aws-ecs-integ/Publisher-task-definition/TaskRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PublishertaskdefinitionTaskRoleE8655AA5" + } + ], + "/aws-ecs-integ/Publisher-task-definition/TaskRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PublishertaskdefinitionTaskRoleDefaultPolicyD6E49F15" + } + ], + "/aws-ecs-integ/Publisher-task-definition/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PublishertaskdefinitionA4324C64" + } + ], + "/aws-ecs-integ/Publisher-service/Service": [ + { + "type": "aws:cdk:logicalId", + "data": "PublisherserviceService9EB00F60" + } + ], + "/aws-ecs-integ/Publisher-service/SecurityGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PublisherserviceSecurityGroupC7B0C0D0" + } + ], + "/aws-ecs-integ/sign-up-queue/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "signupqueue33AFF2E6" + } + ], + "/aws-ecs-integ/sign-up-queue/Policy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "signupqueuePolicy185ADC00" + } + ], + "/aws-ecs-integ/sign-up-queue/awsecsintegsignup8DE00B29/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "signupqueueawsecsintegsignup8DE00B29CE828029" + } + ], + "/aws-ecs-integ/EventsDeadLetterQueue/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "EventsDeadLetterQueue404572C7" + } + ], + "/aws-ecs-integ/EventsQueue/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "EventsQueueB96EB0D2" + } + ], + "/aws-ecs-integ/EventsQueue/Policy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "EventsQueuePolicyF3E925EC" + } + ], + "/aws-ecs-integ/EventsQueue/awsecsintegdeleteF5680776/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "EventsQueueawsecsintegdeleteF56807768162F4C0" + } + ], + "/aws-ecs-integ/Worker-task-definition/TaskRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "WorkertaskdefinitionTaskRole1EBF20D6" + } + ], + "/aws-ecs-integ/Worker-task-definition/TaskRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "WorkertaskdefinitionTaskRoleDefaultPolicy45EAFD8C" + } + ], + "/aws-ecs-integ/Worker-task-definition/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "WorkertaskdefinitionBF93A675" + } + ], + "/aws-ecs-integ/Worker-service/Service": [ + { + "type": "aws:cdk:logicalId", + "data": "WorkerserviceService68C5A5C3" + } + ], + "/aws-ecs-integ/Worker-service/SecurityGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "WorkerserviceSecurityGroup1CDDB904" + } + ], + "/aws-ecs-integ/Worker-service/TaskCount/Target/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "WorkerserviceTaskCountTarget6636D808" + } + ], + "/aws-ecs-integ/Worker-service/TaskCount/Target/EventsQueue-autoscaling-policy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "WorkerserviceTaskCountTargetEventsQueueautoscalingpolicyD12B62ED" + } + ], + "/aws-ecs-integ/Worker-service/TaskCount/Target/sign-up-queue-autoscaling-policy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "WorkerserviceTaskCountTargetsignupqueueautoscalingpolicyB7321DB7" + } + ], + "/aws-ecs-integ/BackLogPerTaskCalculatorFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "BackLogPerTaskCalculatorFunctionServiceRoleEFA723A4" + } + ], + "/aws-ecs-integ/BackLogPerTaskCalculatorFunction/ServiceRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "BackLogPerTaskCalculatorFunctionServiceRoleDefaultPolicyB6B10266" + } + ], + "/aws-ecs-integ/BackLogPerTaskCalculatorFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "BackLogPerTaskCalculatorFunction95AA21D5" + } + ], + "/aws-ecs-integ/AssetParameters/a820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91/S3Bucket": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetParametersa820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91S3Bucket1FFDEA8D" + } + ], + "/aws-ecs-integ/AssetParameters/a820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91/S3VersionKey": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetParametersa820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91S3VersionKeyA60C027B" + } + ], + "/aws-ecs-integ/AssetParameters/a820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91/ArtifactHash": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetParametersa820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91ArtifactHashC1953821" + } + ], + "/aws-ecs-integ/BacklogPerTaskScheduledRule/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "BacklogPerTaskScheduledRuleB871DD15" + } + ], + "/aws-ecs-integ/BacklogPerTaskScheduledRule/AllowEventRuleawsecsintegBackLogPerTaskCalculatorFunctionEB2B91C7": [ + { + "type": "aws:cdk:logicalId", + "data": "BacklogPerTaskScheduledRuleAllowEventRuleawsecsintegBackLogPerTaskCalculatorFunctionEB2B91C7CCD725BB" + } + ], + "/aws-ecs-integ/Worker-BackLogPerTaskCalculatorLogs/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "WorkerBackLogPerTaskCalculatorLogsA4B5AF42" + } + ] + }, + "displayName": "aws-ecs-integ" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/publish-subscribe.integ.snapshot/tree.json b/packages/@aws-cdk-containers/ecs-service-extensions/test/publish-subscribe.integ.snapshot/tree.json new file mode 100644 index 0000000000000..02908f6ad3a95 --- /dev/null +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/publish-subscribe.integ.snapshot/tree.json @@ -0,0 +1,2110 @@ +{ + "version": "tree-0.1", + "tree": { + "id": "App", + "path": "", + "children": { + "Tree": { + "id": "Tree", + "path": "Tree", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "aws-ecs-integ": { + "id": "aws-ecs-integ", + "path": "aws-ecs-integ", + "children": { + "production": { + "id": "production", + "path": "aws-ecs-integ/production", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "production-environment-vpc": { + "id": "production-environment-vpc", + "path": "aws-ecs-integ/production-environment-vpc", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/production-environment-vpc/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::VPC", + "aws:cdk:cloudformation:props": { + "cidrBlock": "10.0.0.0/16", + "enableDnsHostnames": true, + "enableDnsSupport": true, + "instanceTenancy": "default", + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "PublicSubnet1": { + "id": "PublicSubnet1", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "availabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.0.0/18", + "mapPublicIpOnLaunch": true, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Public" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Public" + }, + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPublicSubnet1RouteTable6E9ABC21" + }, + "subnetId": { + "Ref": "productionenvironmentvpcPublicSubnet1Subnet8D92C089" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPublicSubnet1RouteTable6E9ABC21" + }, + "destinationCidrBlock": "0.0.0.0/0", + "gatewayId": { + "Ref": "productionenvironmentvpcIGWE7C39890" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "EIP": { + "id": "EIP", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/EIP", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::EIP", + "aws:cdk:cloudformation:props": { + "domain": "vpc", + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "NATGateway": { + "id": "NATGateway", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet1/NATGateway", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::NatGateway", + "aws:cdk:cloudformation:props": { + "subnetId": { + "Ref": "productionenvironmentvpcPublicSubnet1Subnet8D92C089" + }, + "allocationId": { + "Fn::GetAtt": [ + "productionenvironmentvpcPublicSubnet1EIP54BA88DB", + "AllocationId" + ] + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "PublicSubnet2": { + "id": "PublicSubnet2", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "availabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.64.0/18", + "mapPublicIpOnLaunch": true, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Public" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Public" + }, + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPublicSubnet2RouteTable842A68D7" + }, + "subnetId": { + "Ref": "productionenvironmentvpcPublicSubnet2Subnet298E6C31" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPublicSubnet2RouteTable842A68D7" + }, + "destinationCidrBlock": "0.0.0.0/0", + "gatewayId": { + "Ref": "productionenvironmentvpcIGWE7C39890" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "EIP": { + "id": "EIP", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/EIP", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::EIP", + "aws:cdk:cloudformation:props": { + "domain": "vpc", + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "NATGateway": { + "id": "NATGateway", + "path": "aws-ecs-integ/production-environment-vpc/PublicSubnet2/NATGateway", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::NatGateway", + "aws:cdk:cloudformation:props": { + "subnetId": { + "Ref": "productionenvironmentvpcPublicSubnet2Subnet298E6C31" + }, + "allocationId": { + "Fn::GetAtt": [ + "productionenvironmentvpcPublicSubnet2EIP14CA46AA", + "AllocationId" + ] + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "PrivateSubnet1": { + "id": "PrivateSubnet1", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "availabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.128.0/18", + "mapPublicIpOnLaunch": false, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Private" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Private" + }, + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet1RouteTable2C6DFF0C" + }, + "subnetId": { + "Ref": "productionenvironmentvpcPrivateSubnet1Subnet53F632E6" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet1/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet1RouteTable2C6DFF0C" + }, + "destinationCidrBlock": "0.0.0.0/0", + "natGatewayId": { + "Ref": "productionenvironmentvpcPublicSubnet1NATGateway6075E4CA" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "PrivateSubnet2": { + "id": "PrivateSubnet2", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "availabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.192.0/18", + "mapPublicIpOnLaunch": false, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Private" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Private" + }, + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2/Acl", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet2RouteTable2F77D0D2" + }, + "subnetId": { + "Ref": "productionenvironmentvpcPrivateSubnet2Subnet756FB93C" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-ecs-integ/production-environment-vpc/PrivateSubnet2/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "productionenvironmentvpcPrivateSubnet2RouteTable2F77D0D2" + }, + "destinationCidrBlock": "0.0.0.0/0", + "natGatewayId": { + "Ref": "productionenvironmentvpcPublicSubnet2NATGatewayE1850FCC" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "IGW": { + "id": "IGW", + "path": "aws-ecs-integ/production-environment-vpc/IGW", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::InternetGateway", + "aws:cdk:cloudformation:props": { + "tags": [ + { + "key": "Name", + "value": "aws-ecs-integ/production-environment-vpc" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "VPCGW": { + "id": "VPCGW", + "path": "aws-ecs-integ/production-environment-vpc/VPCGW", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::VPCGatewayAttachment", + "aws:cdk:cloudformation:props": { + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + }, + "internetGatewayId": { + "Ref": "productionenvironmentvpcIGWE7C39890" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "production-environment-cluster": { + "id": "production-environment-cluster", + "path": "aws-ecs-integ/production-environment-cluster", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/production-environment-cluster/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::Cluster", + "aws:cdk:cloudformation:props": {} + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "sign-up": { + "id": "sign-up", + "path": "aws-ecs-integ/sign-up", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/sign-up/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::SNS::Topic", + "aws:cdk:cloudformation:props": {} + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "delete": { + "id": "delete", + "path": "aws-ecs-integ/delete", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/delete/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::SNS::Topic", + "aws:cdk:cloudformation:props": {} + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Publisher": { + "id": "Publisher", + "path": "aws-ecs-integ/Publisher", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "Publisher-task-definition": { + "id": "Publisher-task-definition", + "path": "aws-ecs-integ/Publisher-task-definition", + "children": { + "TaskRole": { + "id": "TaskRole", + "path": "aws-ecs-integ/Publisher-task-definition/TaskRole", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/Publisher-task-definition/TaskRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultPolicy": { + "id": "DefaultPolicy", + "path": "aws-ecs-integ/Publisher-task-definition/TaskRole/DefaultPolicy", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/Publisher-task-definition/TaskRole/DefaultPolicy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": "sns:Publish", + "Effect": "Allow", + "Resource": { + "Ref": "signupD2AAA171" + } + }, + { + "Action": "sns:Publish", + "Effect": "Allow", + "Resource": { + "Ref": "delete1CCE71FF" + } + } + ], + "Version": "2012-10-17" + }, + "policyName": "PublishertaskdefinitionTaskRoleDefaultPolicyD6E49F15", + "roles": [ + { + "Ref": "PublishertaskdefinitionTaskRoleE8655AA5" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/Publisher-task-definition/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::TaskDefinition", + "aws:cdk:cloudformation:props": { + "containerDefinitions": [ + { + "cpu": 256, + "essential": true, + "image": "nathanpeck/name", + "memory": 512, + "name": "app", + "portMappings": [ + { + "containerPort": 80, + "protocol": "tcp" + } + ], + "ulimits": [ + { + "name": "nofile", + "softLimit": 1024000, + "hardLimit": 1024000 + } + ], + "environment": [ + { + "name": "PORT", + "value": "80" + }, + { + "name": "SIGN-UP_TOPIC_ARN", + "value": { + "Ref": "signupD2AAA171" + } + }, + { + "name": "DELETE_TOPIC_ARN", + "value": { + "Ref": "delete1CCE71FF" + } + } + ] + } + ], + "cpu": "256", + "family": "awsecsintegPublishertaskdefinitionD50610D0", + "memory": "512", + "networkMode": "awsvpc", + "requiresCompatibilities": [ + "EC2", + "FARGATE" + ], + "taskRoleArn": { + "Fn::GetAtt": [ + "PublishertaskdefinitionTaskRoleE8655AA5", + "Arn" + ] + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "app": { + "id": "app", + "path": "aws-ecs-integ/Publisher-task-definition/app", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Publisher-service": { + "id": "Publisher-service", + "path": "aws-ecs-integ/Publisher-service", + "children": { + "Service": { + "id": "Service", + "path": "aws-ecs-integ/Publisher-service/Service", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::Service", + "aws:cdk:cloudformation:props": { + "cluster": { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "deploymentConfiguration": { + "maximumPercent": 200, + "minimumHealthyPercent": 100 + }, + "desiredCount": 1, + "enableEcsManagedTags": false, + "launchType": "FARGATE", + "networkConfiguration": { + "awsvpcConfiguration": { + "assignPublicIp": "DISABLED", + "subnets": [ + { + "Ref": "productionenvironmentvpcPrivateSubnet1Subnet53F632E6" + }, + { + "Ref": "productionenvironmentvpcPrivateSubnet2Subnet756FB93C" + } + ], + "securityGroups": [ + { + "Fn::GetAtt": [ + "PublisherserviceSecurityGroupC7B0C0D0", + "GroupId" + ] + } + ] + } + }, + "taskDefinition": { + "Ref": "PublishertaskdefinitionA4324C64" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "SecurityGroup": { + "id": "SecurityGroup", + "path": "aws-ecs-integ/Publisher-service/SecurityGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/Publisher-service/SecurityGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroup", + "aws:cdk:cloudformation:props": { + "groupDescription": "aws-ecs-integ/Publisher-service/SecurityGroup", + "securityGroupEgress": [ + { + "cidrIp": "0.0.0.0/0", + "description": "Allow all outbound traffic by default", + "ipProtocol": "-1" + } + ], + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "sign-up-queue": { + "id": "sign-up-queue", + "path": "aws-ecs-integ/sign-up-queue", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/sign-up-queue/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::SQS::Queue", + "aws:cdk:cloudformation:props": {} + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Policy": { + "id": "Policy", + "path": "aws-ecs-integ/sign-up-queue/Policy", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/sign-up-queue/Policy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::SQS::QueuePolicy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": "sqs:SendMessage", + "Condition": { + "ArnEquals": { + "aws:SourceArn": { + "Ref": "signupD2AAA171" + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "sns.amazonaws.com" + }, + "Resource": { + "Fn::GetAtt": [ + "signupqueue33AFF2E6", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "queues": [ + { + "Ref": "signupqueue33AFF2E6" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "awsecsintegsignup8DE00B29": { + "id": "awsecsintegsignup8DE00B29", + "path": "aws-ecs-integ/sign-up-queue/awsecsintegsignup8DE00B29", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/sign-up-queue/awsecsintegsignup8DE00B29/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::SNS::Subscription", + "aws:cdk:cloudformation:props": { + "protocol": "sqs", + "topicArn": { + "Ref": "signupD2AAA171" + }, + "endpoint": { + "Fn::GetAtt": [ + "signupqueue33AFF2E6", + "Arn" + ] + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Worker": { + "id": "Worker", + "path": "aws-ecs-integ/Worker", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "EventsDeadLetterQueue": { + "id": "EventsDeadLetterQueue", + "path": "aws-ecs-integ/EventsDeadLetterQueue", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/EventsDeadLetterQueue/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::SQS::Queue", + "aws:cdk:cloudformation:props": { + "messageRetentionPeriod": 1209600 + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "EventsQueue": { + "id": "EventsQueue", + "path": "aws-ecs-integ/EventsQueue", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/EventsQueue/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::SQS::Queue", + "aws:cdk:cloudformation:props": { + "redrivePolicy": { + "deadLetterTargetArn": { + "Fn::GetAtt": [ + "EventsDeadLetterQueue404572C7", + "Arn" + ] + }, + "maxReceiveCount": 3 + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "Policy": { + "id": "Policy", + "path": "aws-ecs-integ/EventsQueue/Policy", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/EventsQueue/Policy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::SQS::QueuePolicy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": "sqs:SendMessage", + "Condition": { + "ArnEquals": { + "aws:SourceArn": { + "Ref": "delete1CCE71FF" + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "sns.amazonaws.com" + }, + "Resource": { + "Fn::GetAtt": [ + "EventsQueueB96EB0D2", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "queues": [ + { + "Ref": "EventsQueueB96EB0D2" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "awsecsintegdeleteF5680776": { + "id": "awsecsintegdeleteF5680776", + "path": "aws-ecs-integ/EventsQueue/awsecsintegdeleteF5680776", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/EventsQueue/awsecsintegdeleteF5680776/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::SNS::Subscription", + "aws:cdk:cloudformation:props": { + "protocol": "sqs", + "topicArn": { + "Ref": "delete1CCE71FF" + }, + "endpoint": { + "Fn::GetAtt": [ + "EventsQueueB96EB0D2", + "Arn" + ] + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Worker-task-definition": { + "id": "Worker-task-definition", + "path": "aws-ecs-integ/Worker-task-definition", + "children": { + "TaskRole": { + "id": "TaskRole", + "path": "aws-ecs-integ/Worker-task-definition/TaskRole", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/Worker-task-definition/TaskRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "ecs-tasks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultPolicy": { + "id": "DefaultPolicy", + "path": "aws-ecs-integ/Worker-task-definition/TaskRole/DefaultPolicy", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/Worker-task-definition/TaskRole/DefaultPolicy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": [ + "sqs:ReceiveMessage", + "sqs:ChangeMessageVisibility", + "sqs:GetQueueUrl", + "sqs:DeleteMessage", + "sqs:GetQueueAttributes" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "EventsQueueB96EB0D2", + "Arn" + ] + } + }, + { + "Action": [ + "sqs:ReceiveMessage", + "sqs:ChangeMessageVisibility", + "sqs:GetQueueUrl", + "sqs:DeleteMessage", + "sqs:GetQueueAttributes" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "signupqueue33AFF2E6", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "policyName": "WorkertaskdefinitionTaskRoleDefaultPolicy45EAFD8C", + "roles": [ + { + "Ref": "WorkertaskdefinitionTaskRole1EBF20D6" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/Worker-task-definition/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::TaskDefinition", + "aws:cdk:cloudformation:props": { + "containerDefinitions": [ + { + "cpu": 256, + "essential": true, + "image": "nathanpeck/name", + "memory": 512, + "name": "app", + "portMappings": [ + { + "containerPort": 80, + "protocol": "tcp" + } + ], + "ulimits": [ + { + "name": "nofile", + "softLimit": 1024000, + "hardLimit": 1024000 + } + ], + "environment": [ + { + "name": "PORT", + "value": "80" + }, + { + "name": "WORKER_QUEUE_URI", + "value": { + "Ref": "EventsQueueB96EB0D2" + } + } + ] + } + ], + "cpu": "256", + "family": "awsecsintegWorkertaskdefinition32B60762", + "memory": "512", + "networkMode": "awsvpc", + "requiresCompatibilities": [ + "EC2", + "FARGATE" + ], + "taskRoleArn": { + "Fn::GetAtt": [ + "WorkertaskdefinitionTaskRole1EBF20D6", + "Arn" + ] + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "app": { + "id": "app", + "path": "aws-ecs-integ/Worker-task-definition/app", + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Worker-service": { + "id": "Worker-service", + "path": "aws-ecs-integ/Worker-service", + "children": { + "Service": { + "id": "Service", + "path": "aws-ecs-integ/Worker-service/Service", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ECS::Service", + "aws:cdk:cloudformation:props": { + "cluster": { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "deploymentConfiguration": { + "maximumPercent": 200, + "minimumHealthyPercent": 100 + }, + "enableEcsManagedTags": false, + "launchType": "FARGATE", + "networkConfiguration": { + "awsvpcConfiguration": { + "assignPublicIp": "DISABLED", + "subnets": [ + { + "Ref": "productionenvironmentvpcPrivateSubnet1Subnet53F632E6" + }, + { + "Ref": "productionenvironmentvpcPrivateSubnet2Subnet756FB93C" + } + ], + "securityGroups": [ + { + "Fn::GetAtt": [ + "WorkerserviceSecurityGroup1CDDB904", + "GroupId" + ] + } + ] + } + }, + "taskDefinition": { + "Ref": "WorkertaskdefinitionBF93A675" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "SecurityGroup": { + "id": "SecurityGroup", + "path": "aws-ecs-integ/Worker-service/SecurityGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/Worker-service/SecurityGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroup", + "aws:cdk:cloudformation:props": { + "groupDescription": "aws-ecs-integ/Worker-service/SecurityGroup", + "securityGroupEgress": [ + { + "cidrIp": "0.0.0.0/0", + "description": "Allow all outbound traffic by default", + "ipProtocol": "-1" + } + ], + "vpcId": { + "Ref": "productionenvironmentvpcAEB47DF7" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "ScalingRole": { + "id": "ScalingRole", + "path": "aws-ecs-integ/Worker-service/ScalingRole", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "TaskCount": { + "id": "TaskCount", + "path": "aws-ecs-integ/Worker-service/TaskCount", + "children": { + "Target": { + "id": "Target", + "path": "aws-ecs-integ/Worker-service/TaskCount/Target", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/Worker-service/TaskCount/Target/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ApplicationAutoScaling::ScalableTarget", + "aws:cdk:cloudformation:props": { + "maxCapacity": 10, + "minCapacity": 1, + "resourceId": { + "Fn::Join": [ + "", + [ + "service/", + { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "/", + { + "Fn::GetAtt": [ + "WorkerserviceService68C5A5C3", + "Name" + ] + } + ] + ] + }, + "roleArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":role/aws-service-role/ecs.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ECSService" + ] + ] + }, + "scalableDimension": "ecs:service:DesiredCount", + "serviceNamespace": "ecs" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "EventsQueue-autoscaling-policy": { + "id": "EventsQueue-autoscaling-policy", + "path": "aws-ecs-integ/Worker-service/TaskCount/Target/EventsQueue-autoscaling-policy", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/Worker-service/TaskCount/Target/EventsQueue-autoscaling-policy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ApplicationAutoScaling::ScalingPolicy", + "aws:cdk:cloudformation:props": { + "policyName": "awsecsintegWorkerserviceTaskCountTargetEventsQueueautoscalingpolicyDBD40B57", + "policyType": "TargetTrackingScaling", + "scalingTargetId": { + "Ref": "WorkerserviceTaskCountTarget6636D808" + }, + "targetTrackingScalingPolicyConfiguration": { + "customizedMetricSpecification": { + "dimensions": [ + { + "name": "QueueName", + "value": { + "Fn::GetAtt": [ + "EventsQueueB96EB0D2", + "QueueName" + ] + } + } + ], + "metricName": "BacklogPerTask", + "namespace": "production-Worker", + "statistic": "Average", + "unit": "Count" + }, + "targetValue": 15 + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "sign-up-queue-autoscaling-policy": { + "id": "sign-up-queue-autoscaling-policy", + "path": "aws-ecs-integ/Worker-service/TaskCount/Target/sign-up-queue-autoscaling-policy", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/Worker-service/TaskCount/Target/sign-up-queue-autoscaling-policy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ApplicationAutoScaling::ScalingPolicy", + "aws:cdk:cloudformation:props": { + "policyName": "awsecsintegWorkerserviceTaskCountTargetsignupqueueautoscalingpolicyDF93FC37", + "policyType": "TargetTrackingScaling", + "scalingTargetId": { + "Ref": "WorkerserviceTaskCountTarget6636D808" + }, + "targetTrackingScalingPolicyConfiguration": { + "customizedMetricSpecification": { + "dimensions": [ + { + "name": "QueueName", + "value": { + "Fn::GetAtt": [ + "signupqueue33AFF2E6", + "QueueName" + ] + } + } + ], + "metricName": "BacklogPerTask", + "namespace": "production-Worker", + "statistic": "Average", + "unit": "Count" + }, + "targetValue": 30 + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "BackLogPerTaskCalculatorFunction": { + "id": "BackLogPerTaskCalculatorFunction", + "path": "aws-ecs-integ/BackLogPerTaskCalculatorFunction", + "children": { + "ServiceRole": { + "id": "ServiceRole", + "path": "aws-ecs-integ/BackLogPerTaskCalculatorFunction/ServiceRole", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/BackLogPerTaskCalculatorFunction/ServiceRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "managedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "DefaultPolicy": { + "id": "DefaultPolicy", + "path": "aws-ecs-integ/BackLogPerTaskCalculatorFunction/ServiceRole/DefaultPolicy", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/BackLogPerTaskCalculatorFunction/ServiceRole/DefaultPolicy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": "ecs:DescribeServices", + "Condition": { + "ArnEquals": { + "ecs:cluster": { + "Fn::GetAtt": [ + "productionenvironmentclusterC6599D2D", + "Arn" + ] + } + } + }, + "Effect": "Allow", + "Resource": { + "Ref": "WorkerserviceService68C5A5C3" + } + }, + { + "Action": [ + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "EventsQueueB96EB0D2", + "Arn" + ] + }, + { + "Fn::GetAtt": [ + "signupqueue33AFF2E6", + "Arn" + ] + } + ] + } + ], + "Version": "2012-10-17" + }, + "policyName": "BackLogPerTaskCalculatorFunctionServiceRoleDefaultPolicyB6B10266", + "roles": [ + { + "Ref": "BackLogPerTaskCalculatorFunctionServiceRoleEFA723A4" + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Code": { + "id": "Code", + "path": "aws-ecs-integ/BackLogPerTaskCalculatorFunction/Code", + "children": { + "Stage": { + "id": "Stage", + "path": "aws-ecs-integ/BackLogPerTaskCalculatorFunction/Code/Stage", + "constructInfo": { + "fqn": "@aws-cdk/core.AssetStaging", + "version": "0.0.0" + } + }, + "AssetBucket": { + "id": "AssetBucket", + "path": "aws-ecs-integ/BackLogPerTaskCalculatorFunction/Code/AssetBucket", + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/BackLogPerTaskCalculatorFunction/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Lambda::Function", + "aws:cdk:cloudformation:props": { + "code": { + "s3Bucket": { + "Ref": "AssetParametersa820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91S3Bucket1FFDEA8D" + }, + "s3Key": { + "Fn::Join": [ + "", + [ + { + "Fn::Select": [ + 0, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParametersa820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91S3VersionKeyA60C027B" + } + ] + } + ] + }, + { + "Fn::Select": [ + 1, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParametersa820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91S3VersionKeyA60C027B" + } + ] + } + ] + } + ] + ] + } + }, + "role": { + "Fn::GetAtt": [ + "BackLogPerTaskCalculatorFunctionServiceRoleEFA723A4", + "Arn" + ] + }, + "environment": { + "variables": { + "CLUSTER_NAME": { + "Ref": "productionenvironmentclusterC6599D2D" + }, + "SERVICE_NAME": { + "Fn::GetAtt": [ + "WorkerserviceService68C5A5C3", + "Name" + ] + }, + "NAMESPACE": "production-Worker", + "QUEUE_NAMES": { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "EventsQueueB96EB0D2", + "QueueName" + ] + }, + ",", + { + "Fn::GetAtt": [ + "signupqueue33AFF2E6", + "QueueName" + ] + } + ] + ] + } + } + }, + "handler": "index.queue_handler", + "runtime": "python3.9" + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "AssetParameters": { + "id": "AssetParameters", + "path": "aws-ecs-integ/AssetParameters", + "children": { + "a820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91": { + "id": "a820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91", + "path": "aws-ecs-integ/AssetParameters/a820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91", + "children": { + "S3Bucket": { + "id": "S3Bucket", + "path": "aws-ecs-integ/AssetParameters/a820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91/S3Bucket", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnParameter", + "version": "0.0.0" + } + }, + "S3VersionKey": { + "id": "S3VersionKey", + "path": "aws-ecs-integ/AssetParameters/a820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91/S3VersionKey", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnParameter", + "version": "0.0.0" + } + }, + "ArtifactHash": { + "id": "ArtifactHash", + "path": "aws-ecs-integ/AssetParameters/a820140ad8525b8ed56ad2a7bcd9da99d6afc2490e8c91e34620886c011bdc91/ArtifactHash", + "constructInfo": { + "fqn": "@aws-cdk/core.CfnParameter", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Construct", + "version": "0.0.0" + } + }, + "BacklogPerTaskScheduledRule": { + "id": "BacklogPerTaskScheduledRule", + "path": "aws-ecs-integ/BacklogPerTaskScheduledRule", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/BacklogPerTaskScheduledRule/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Events::Rule", + "aws:cdk:cloudformation:props": { + "scheduleExpression": "rate(1 minute)", + "state": "ENABLED", + "targets": [ + { + "id": "Target0", + "arn": { + "Fn::GetAtt": [ + "BackLogPerTaskCalculatorFunction95AA21D5", + "Arn" + ] + } + } + ] + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + }, + "AllowEventRuleawsecsintegBackLogPerTaskCalculatorFunctionEB2B91C7": { + "id": "AllowEventRuleawsecsintegBackLogPerTaskCalculatorFunctionEB2B91C7", + "path": "aws-ecs-integ/BacklogPerTaskScheduledRule/AllowEventRuleawsecsintegBackLogPerTaskCalculatorFunctionEB2B91C7", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Lambda::Permission", + "aws:cdk:cloudformation:props": { + "action": "lambda:InvokeFunction", + "functionName": { + "Fn::GetAtt": [ + "BackLogPerTaskCalculatorFunction95AA21D5", + "Arn" + ] + }, + "principal": "events.amazonaws.com", + "sourceArn": { + "Fn::GetAtt": [ + "BacklogPerTaskScheduledRuleB871DD15", + "Arn" + ] + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + }, + "Worker-BackLogPerTaskCalculatorLogs": { + "id": "Worker-BackLogPerTaskCalculatorLogs", + "path": "aws-ecs-integ/Worker-BackLogPerTaskCalculatorLogs", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-ecs-integ/Worker-BackLogPerTaskCalculatorLogs/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Logs::LogGroup", + "aws:cdk:cloudformation:props": { + "logGroupName": { + "Fn::Join": [ + "", + [ + "/aws/lambda/", + { + "Ref": "BackLogPerTaskCalculatorFunction95AA21D5" + } + ] + ] + }, + "retentionInDays": 3 + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Resource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.Stack", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/core.App", + "version": "0.0.0" + } + } +} \ No newline at end of file From 4ee91182afcaf3544b2fd9ac604473d1715a395c Mon Sep 17 00:00:00 2001 From: corymhall <43035978+corymhall@users.noreply.github.com> Date: Fri, 8 Apr 2022 15:16:48 +0000 Subject: [PATCH 5/6] adding integ-runner to alpha package generation --- tools/@aws-cdk/individual-pkg-gen/transform-packages.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/@aws-cdk/individual-pkg-gen/transform-packages.ts b/tools/@aws-cdk/individual-pkg-gen/transform-packages.ts index 1952aaa4bd7ac..e553c21ab3229 100644 --- a/tools/@aws-cdk/individual-pkg-gen/transform-packages.ts +++ b/tools/@aws-cdk/individual-pkg-gen/transform-packages.ts @@ -27,7 +27,7 @@ const FEATURE_CFN_STABILITY_LINE = /CFN Resources\s+\| !\[Stable]\(https:\/\/img */ const REQUIRED_TOOLS = new Set([ '@aws-cdk/cdk-build-tools', - '@aws-cdk/cdk-integ-tools', + '@aws-cdk/integ-runner', '@aws-cdk/cfn2ts', '@aws-cdk/eslint-plugin', '@aws-cdk/pkglint', From b8a13711d5d0e51982b49e9032279c0c8440c9b5 Mon Sep 17 00:00:00 2001 From: corymhall <43035978+corymhall@users.noreply.github.com> Date: Fri, 8 Apr 2022 16:55:15 +0000 Subject: [PATCH 6/6] adding to ignore files --- .../@aws-cdk-containers/ecs-service-extensions/.gitignore | 6 +++++- .../@aws-cdk-containers/ecs-service-extensions/.npmignore | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/.gitignore b/packages/@aws-cdk-containers/ecs-service-extensions/.gitignore index 5bd97777170a0..0865b27d394a2 100644 --- a/packages/@aws-cdk-containers/ecs-service-extensions/.gitignore +++ b/packages/@aws-cdk-containers/ecs-service-extensions/.gitignore @@ -19,4 +19,8 @@ nyc.config.js junit.xml -!jest.config.js \ No newline at end of file +!jest.config.js +!**/*.integ.snapshot/**/asset.*/*.js +!**/*.integ.snapshot/**/asset.*/*.d.ts + +!**/*.integ.snapshot/**/asset.*/** diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/.npmignore b/packages/@aws-cdk-containers/ecs-service-extensions/.npmignore index 163c1ff80fe5a..9bcdfbb4d0764 100644 --- a/packages/@aws-cdk-containers/ecs-service-extensions/.npmignore +++ b/packages/@aws-cdk-containers/ecs-service-extensions/.npmignore @@ -24,4 +24,6 @@ tsconfig.json junit.xml test/ -jest.config.js \ No newline at end of file +jest.config.js +**/*.integ.snapshot +**/*.integ.snapshot