Skip to content

ValidationError: Parameter values specified when using DynamoDB Global module #2900

@bigluck

Description

@bigluck

Describe the bug
Hi everybody,
I'm building an modular infrastructure but I'm fighting with this error:

failed: ValidationError: Parameter values specified for a template which does not require them.
Parameter values specified for a template which does not require them.

The stack is very simple:

First stack:
A VPC only stack deployed with the microservices-vpc-cdk-dev-us-west-2 stack name.
Second stack:
A ECS Cluster + a Global DynamoDB Table, the ECS Cluster use exported parameters from the first stack.

The problem occurs on the second stack only if the Global DynamoDB Table is added; otherwise CDK works as expected.

To Reproduce

The ECS Cluster is very simple:

export class MyResources extends cdk.Stack {
  constructor(scope: cdk.Construct, id: string, props: cdk.StackProps) {
    super(scope, id, props);

    // VPC
    const vpcId = cdk.Fn.importValue(`MyStack1Prefix-VpcId-cdk-dev`);
    const availabilityZones = cdk.Fn.split(',', cdk.Fn.importValue(`MyStack1Prefix-AvailabilityZones-cdk-dev`));
    const vpc = ec2.Vpc.fromVpcAttributes(this, id, {
      vpcId,
      availabilityZones,
    });

    // ECS Cluster
    const clusterName = `service1-cdk-dev`;
    const cluster = new ecs.Cluster(this, id, {
      vpc,
      clusterName,
    });
  }

This configuration works as expected and the entire Stack are deployed, CDK create e deploy only a CF stack: service1-ecs-cdk-dev-us-west-2.

By adding the DynamoDB Global Table definition under the ECS cluster I'm getting the error above:

    // DynamoDB Table
    const tableName = `table1-cdk-dev`;
    const table = new dynamodbGlobal.GlobalTable(this, id, {
      tableName: tableName,
      regions: ['us-west-2', 'eu-west-1'],
      partitionKey: {
        name: 'primary_key',
        type: dynamodb.AttributeType.String,
      },
      billingMode: dynamodb.BillingMode.PayPerRequest,
    });

Now CDK has created & deployed also:

  • service1ecscdkdevuswest2Service1TableCustomResourceBD055B07
  • service1ecscdkdevuswest2Service1TableService1Tableuswest2EBB183CF

Here a detailed log of the cfn.createChangeSet method invoked:

service1ecscdkdevuswest2Service1TableService1Tableuswest2EBB183CF: creating CloudFormation changeset...
{
  "Capabilities": [
    "CAPABILITY_IAM",
    "CAPABILITY_NAMED_IAM",
    "CAPABILITY_AUTO_EXPAND"
  ],
  "ChangeSetName": "CDK-44238698-0368-48eb-ac5e-c5cceddf5b2f",
  "ChangeSetType": "CREATE",
  "Description": "CDK Changeset for execution 44238698-0368-48eb-ac5e-c5cceddf5b2f",
  "Parameters": [],
  "StackName": "service1ecscdkdevuswest2Service1TableService1Tableuswest2EBB183CF",
  "Tags": [],
  "TemplateURL": "https://cdktoolkit-stagingbucket-XXXXXXXXXXXX.s3.amazonaws.com/cdk/service1ecscdkdevuswest2Service1TableService1Tableuswest2EBB183CF/fe9b0deb6031ed5787a739072d61364f6c60e4361342f66c8c62b5b82546a177.yml"
}

service1ecscdkdevuswest2Service1TableCustomResourceBD055B07: creating CloudFormation changeset...
{
  "Capabilities": [
    "CAPABILITY_IAM",
    "CAPABILITY_NAMED_IAM",
    "CAPABILITY_AUTO_EXPAND"
  ],
  "ChangeSetName": "CDK-ba0fea7c-ccd9-4228-aa66-61eec02444a1",
  "ChangeSetType": "CREATE",
  "Description": "CDK Changeset for execution ba0fea7c-ccd9-4228-aa66-61eec02444a1",
  "Parameters": [
    {
      "ParameterKey": "SingletonLambdaD38B65A66B544FB69BAD9CD40A6DAC12CodeS3BucketF66FB543",
      "ParameterValue": "cdktoolkit-stagingbucket-XXXXXXXXXXXX"
    },
    {
      "ParameterKey": "SingletonLambdaD38B65A66B544FB69BAD9CD40A6DAC12CodeS3VersionKey59DB89A0",
      "ParameterValue": "assets/service1ecscdkdevuswest2Service1TableCustomResourceSingletonLambdaD38B65A66B544FB69BAD9CD40A6DAC12Code49F4FB40/||d24b53740e41ce155a5c316af128401539cb153c06281b70375c7a4015f7314d.zip"
    },
    {
      "ParameterKey": "SingletonLambdaD38B65A66B544FB69BAD9CD40A6DAC12CodeArtifactHashCE92982B",
      "ParameterValue": "d24b53740e41ce155a5c316af128401539cb153c06281b70375c7a4015f7314d"
    }
  ],
  "StackName": "service1ecscdkdevuswest2Service1TableCustomResourceBD055B07",
  "Tags": [],
  "TemplateURL": "https://cdktoolkit-stagingbucket-XXXXXXXXXXXX.s3.amazonaws.com/cdk/service1ecscdkdevuswest2Service1TableCustomResourceBD055B07/53d1d7f20682c3bdac8df595d528ecf2d1f4b192691068ceba99ff6e1bf3fc0b.yml"
}

service1-ecs-cdk-dev-us-west-2: creating CloudFormation changeset...
{
  "Capabilities": [
    "CAPABILITY_IAM",
    "CAPABILITY_NAMED_IAM",
    "CAPABILITY_AUTO_EXPAND"
  ],
  "ChangeSetName": "CDK-1d52709f-35d0-4f74-a522-5cd28f5490cc",
  "ChangeSetType": "CREATE",
  "Description": "CDK Changeset for execution 1d52709f-35d0-4f74-a522-5cd28f5490cc",
  "Parameters": [
    {
      "ParameterKey": "SingletonLambdaD38B65A66B544FB69BAD9CD40A6DAC12CodeS3BucketF66FB543",
      "ParameterValue": "cdktoolkit-stagingbucket-XXXXXXXXXXXX"
    },
    {
      "ParameterKey": "SingletonLambdaD38B65A66B544FB69BAD9CD40A6DAC12CodeS3VersionKey59DB89A0",
      "ParameterValue": "assets/service1ecscdkdevuswest2Service1TableCustomResourceSingletonLambdaD38B65A66B544FB69BAD9CD40A6DAC12Code49F4FB40/||d24b53740e41ce155a5c316af128401539cb153c06281b70375c7a4015f7314d.zip"
    },
    {
      "ParameterKey": "SingletonLambdaD38B65A66B544FB69BAD9CD40A6DAC12CodeArtifactHashCE92982B",
      "ParameterValue": "d24b53740e41ce155a5c316af128401539cb153c06281b70375c7a4015f7314d"
    }
  ],
  "StackName": "service1-ecs-cdk-dev-us-west-2",
  "Tags": [],
  "TemplateURL": "https://cdktoolkit-stagingbucket-XXXXXXXXXXXX.s3.amazonaws.com/cdk/service1-ecs-cdk-dev-us-west-2/48d3ff2b70c9b64d2d2494420804765881f2c8c310f4a93df8fc8f6b75927442.yml"
}
 ❌  service1-ecs-cdk-dev-us-west-2 failed: ValidationError: Parameter values specified for a template which does not require them.
Parameter values specified for a template which does not require them.
ValidationError: Parameter values specified for a template which does not require them.
    at Request.extractError (/usr/local/lib/node_modules/aws-cdk/node_modules/aws-sdk/lib/protocol/query.js:50:29)
    at Request.callListeners (/usr/local/lib/node_modules/aws-cdk/node_modules/aws-sdk/lib/sequential_executor.js:106:20)
    at Request.emit (/usr/local/lib/node_modules/aws-cdk/node_modules/aws-sdk/lib/sequential_executor.js:78:10)
    at Request.emit (/usr/local/lib/node_modules/aws-cdk/node_modules/aws-sdk/lib/request.js:683:14)
    at Request.transition (/usr/local/lib/node_modules/aws-cdk/node_modules/aws-sdk/lib/request.js:22:10)
    at AcceptorStateMachine.runTo (/usr/local/lib/node_modules/aws-cdk/node_modules/aws-sdk/lib/state_machine.js:14:12)
    at /usr/local/lib/node_modules/aws-cdk/node_modules/aws-sdk/lib/state_machine.js:26:10
    at Request.<anonymous> (/usr/local/lib/node_modules/aws-cdk/node_modules/aws-sdk/lib/request.js:38:9)
    at Request.<anonymous> (/usr/local/lib/node_modules/aws-cdk/node_modules/aws-sdk/lib/request.js:685:12)
    at Request.callListeners (/usr/local/lib/node_modules/aws-cdk/node_modules/aws-sdk/lib/sequential_executor.js:116:18)

Here the main service1-ecs-cdk-dev-us-west-2 stack:

{
  "Resources": {
    "Service1Cluster200D5793": {
      "Type": "AWS::ECS::Cluster",
      "Properties": {
        "ClusterName": "service1-cdk-dev"
      },
      "Metadata": {
        "aws:cdk:path": "service1-ecs-cdk-dev-us-west-2/Service1Cluster/Resource"
      }
    }
  }
}

Expected behavior

No parameters on the service1-ecs-cdk-dev-us-west-2 stack.

Version:

  • Mac OS 10.14.5
  • Typescript
  • 0.34.0 (build 523807c)

Metadata

Metadata

Assignees

Labels

@aws-cdk/coreRelated to core CDK functionalitybugThis issue is a bug.needs-reproductionThis issue needs reproduction.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions