@aws-solutions-constructs/aws-apigateway-dynamodb 2.45.0 → 2.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/.jsii +5 -5
  2. package/lib/index.js +1 -1
  3. package/package.json +5 -5
  4. package/test/{integ.additional-request-templates-custom-resource-name.expected.json → integ.apiddb-additional-request-templates-custom-resource-name.expected.json} +21 -21
  5. package/test/integ.apiddb-additional-request-templates-custom-resource-name.js +60 -0
  6. package/test/{integ.additional-request-templates.expected.json → integ.apiddb-additional-request-templates.expected.json} +19 -19
  7. package/test/integ.apiddb-additional-request-templates.js +50 -0
  8. package/test/{integ.apigateway-dynamodb-CRUD.expected.json → integ.apiddb-apigateway-dynamodb-CRUD.expected.json} +46 -46
  9. package/test/integ.apiddb-apigateway-dynamodb-CRUD.js +35 -0
  10. package/test/{integ.apigateway-dynamodb-existing-table.expected.json → integ.apiddb-apigateway-dynamodb-existing-table.expected.json} +19 -19
  11. package/test/integ.apiddb-apigateway-dynamodb-existing-table.js +42 -0
  12. package/test/{integ.custom-integration-responses.expected.json → integ.apiddb-custom-integration-responses.expected.json} +19 -19
  13. package/test/integ.apiddb-custom-integration-responses.js +48 -0
  14. package/test/{integ.no-arguments.expected.json → integ.apiddb-no-arguments.expected.json} +19 -19
  15. package/test/integ.apiddb-no-arguments.js +28 -0
  16. package/test/integ.additional-request-templates-custom-resource-name.js +0 -60
  17. package/test/integ.additional-request-templates.js +0 -50
  18. package/test/integ.apigateway-dynamodb-CRUD.js +0 -35
  19. package/test/integ.apigateway-dynamodb-existing-table.js +0 -42
  20. package/test/integ.custom-integration-responses.js +0 -48
  21. package/test/integ.no-arguments.js +0 -28
  22. /package/test/{integ.additional-request-templates-custom-resource-name.d.ts → integ.apiddb-additional-request-templates-custom-resource-name.d.ts} +0 -0
  23. /package/test/{integ.additional-request-templates.d.ts → integ.apiddb-additional-request-templates.d.ts} +0 -0
  24. /package/test/{integ.apigateway-dynamodb-CRUD.d.ts → integ.apiddb-apigateway-dynamodb-CRUD.d.ts} +0 -0
  25. /package/test/{integ.apigateway-dynamodb-existing-table.d.ts → integ.apiddb-apigateway-dynamodb-existing-table.d.ts} +0 -0
  26. /package/test/{integ.custom-integration-responses.d.ts → integ.apiddb-custom-integration-responses.d.ts} +0 -0
  27. /package/test/{integ.no-arguments.d.ts → integ.apiddb-no-arguments.d.ts} +0 -0
package/.jsii CHANGED
@@ -8,8 +8,8 @@
8
8
  "url": "https://aws.amazon.com"
9
9
  },
10
10
  "dependencies": {
11
- "@aws-solutions-constructs/core": "2.45.0",
12
- "aws-cdk-lib": "^2.99.1",
11
+ "@aws-solutions-constructs/core": "2.47.0",
12
+ "aws-cdk-lib": "^2.111.0",
13
13
  "constructs": "^10.0.0"
14
14
  },
15
15
  "dependencyClosure": {
@@ -3579,7 +3579,7 @@
3579
3579
  },
3580
3580
  "description": "CDK Constructs for AWS API Gateway and Amazon DynamoDB integration.",
3581
3581
  "homepage": "https://github.com/awslabs/aws-solutions-constructs.git",
3582
- "jsiiVersion": "1.90.0 (build d6bdb4d)",
3582
+ "jsiiVersion": "1.92.0 (build db7f27d)",
3583
3583
  "keywords": [
3584
3584
  "aws",
3585
3585
  "cdk",
@@ -4174,6 +4174,6 @@
4174
4174
  "symbolId": "lib/index:ApiGatewayToDynamoDBProps"
4175
4175
  }
4176
4176
  },
4177
- "version": "2.45.0",
4178
- "fingerprint": "ANd4WvluQBN7hsosfrb8zlAsfTctkmfHTGsyE0MaTio="
4177
+ "version": "2.47.0",
4178
+ "fingerprint": "sgzhOY6+5GqGIIhWEDAiniTzAYBZT9DzQWpX3Rqw2Go="
4179
4179
  }
package/lib/index.js CHANGED
@@ -210,5 +210,5 @@ class ApiGatewayToDynamoDB extends constructs_1.Construct {
210
210
  }
211
211
  exports.ApiGatewayToDynamoDB = ApiGatewayToDynamoDB;
212
212
  _a = JSII_RTTI_SYMBOL_1;
213
- ApiGatewayToDynamoDB[_a] = { fqn: "@aws-solutions-constructs/aws-apigateway-dynamodb.ApiGatewayToDynamoDB", version: "2.45.0" };
213
+ ApiGatewayToDynamoDB[_a] = { fqn: "@aws-solutions-constructs/aws-apigateway-dynamodb.ApiGatewayToDynamoDB", version: "2.47.0" };
214
214
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWNBLDJDQUEyQztBQUMzQywyREFBMkQ7QUFDM0Qsd0ZBQXdGO0FBQ3hGLDJDQUF1QztBQUV2Qyx5REFBOEU7QUF1SzlFOztHQUVHO0FBQ0gsTUFBYSxvQkFBcUIsU0FBUSxzQkFBUztJQU1qRDs7Ozs7OztPQU9HO0lBQ0gsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFnQztRQUN4RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVuQyxJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLDZGQUE2RjtnQkFDM0csMkZBQTJGLENBQUMsQ0FBQztTQUNoRztRQUNELElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0dBQXdHO2dCQUN0SCxxRkFBcUYsQ0FBQyxDQUFDO1NBQzFGO1FBQ0QsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQyw2RkFBNkY7Z0JBQzNHLDJGQUEyRixDQUFDLENBQUM7U0FDaEc7UUFDRCxJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLDZGQUE2RjtnQkFDM0csMkZBQTJGLENBQUMsQ0FBQztTQUNoRztRQUVELDJDQUEyQztRQUMzQyxNQUFNLGdCQUFnQixHQUF3QixRQUFRLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVILElBQUks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LENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQztTQUN2QixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7O0FBMU5ILG9EQTJOQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCAqIGFzIGFwaSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheSc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBkZWZhdWx0cyBmcm9tICdAYXdzLXNvbHV0aW9ucy1jb25zdHJ1Y3RzL2NvcmUnO1xuLy8gTm90ZTogVG8gZW5zdXJlIENES3YyIGNvbXBhdGliaWxpdHksIGtlZXAgdGhlIGltcG9ydCBzdGF0ZW1lbnQgZm9yIENvbnN0cnVjdCBzZXBhcmF0ZVxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBkeW5hbW9kYiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZHluYW1vZGInO1xuaW1wb3J0IHsgZ2V0UGFydGl0aW9uS2V5TmFtZUZyb21UYWJsZSB9IGZyb20gJ0Bhd3Mtc29sdXRpb25zLWNvbnN0cnVjdHMvY29yZSc7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcblxuLyoqXG4gKiBAc3VtbWFyeSBUaGUgcHJvcGVydGllcyBmb3IgdGhlIEFwaUdhdGV3YXlUb0R5bmFtb0RCIGNsYXNzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwaUdhdGV3YXlUb0R5bmFtb0RCUHJvcHMge1xuICAvKipcbiAgICogT3B0aW9uYWwgdXNlciBwcm92aWRlZCBwcm9wcyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwcm9wc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgcHJvcHMgYXJlIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IGR5bmFtb1RhYmxlUHJvcHM/OiBkeW5hbW9kYi5UYWJsZVByb3BzO1xuICAvKipcbiAgICogRXhpc3RpbmcgaW5zdGFuY2Ugb2YgRHluYW1vREIgdGFibGUgb2JqZWN0LCBwcm92aWRpbmcgYm90aCB0aGlzIGFuZCBgZHluYW1vVGFibGVQcm9wc2Agd2lsbCBjYXVzZSBhbiBlcnJvci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBleGlzdGluZ1RhYmxlT2JqPzogZHluYW1vZGIuVGFibGU7XG4gIC8qKlxuICAgKiBPcHRpb25hbCB1c2VyLXByb3ZpZGVkIHByb3BzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BzIGZvciB0aGUgQVBJIEdhdGV3YXkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBwcm9wZXJ0aWVzIGFyZSB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBpR2F0ZXdheVByb3BzPzogYXBpLlJlc3RBcGlQcm9wcztcbiAgLyoqXG4gICAqIE9wdGlvbmFsIHJlc291cmNlIG5hbWUgb24gdGhlIEFQSVxuICAgKiBUaGlzIHByb3BlcnR5IGlzIHVzZWZ1bCBpZiB5b3VyIGludGVncmF0aW9uIGRvZXMgbm90IGRpcmVjdGx5IHVzZSB0aGUgcGFydGl0aW9uIGtleSBuYW1lXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcGFydGl0aW9uIGtleSBuYW1lLCByZXRyaWV2ZWQgZnJvbSB0aGUgRHluYW1vREIgdGFibGUgb2JqZWN0XG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZU5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRlcGxveSBhbiBBUEkgR2F0ZXdheSBNZXRob2QgZm9yIFBPU1QgSFRUUCBvcGVyYXRpb25zIG9uIHRoZSBEeW5hbW9EQiB0YWJsZSAoaS5lLiBkeW5hbW9kYjpQdXRJdGVtKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dDcmVhdGVPcGVyYXRpb24/OiBib29sZWFuO1xuICAvKipcbiAgICogQVBJIEdhdGV3YXkgUmVxdWVzdCBUZW1wbGF0ZSBmb3IgdGhlIGNyZWF0ZSBtZXRob2QgZm9yIHRoZSBkZWZhdWx0IGBhcHBsaWNhdGlvbi9qc29uYCBjb250ZW50LXR5cGUuXG4gICAqIFRoaXMgcHJvcGVydHkgaXMgcmVxdWlyZWQgaWYgdGhlIGBhbGxvd0NyZWF0ZU9wZXJhdGlvbmAgcHJvcGVydHkgaXMgc2V0IHRvIHRydWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlYXRlUmVxdWVzdFRlbXBsYXRlPzogc3RyaW5nO1xuICAvKipcbiAgICogT3B0aW9uYWwgQ3JlYXRlIFJlcXVlc3QgVGVtcGxhdGVzIGZvciBjb250ZW50LXR5cGVzIG90aGVyIHRoYW4gYGFwcGxpY2F0aW9uL2pzb25gLlxuICAgKiBVc2UgdGhlIGBjcmVhdGVSZXF1ZXN0VGVtcGxhdGVgIHByb3BlcnR5IHRvIHNldCB0aGUgcmVxdWVzdCB0ZW1wbGF0ZSBmb3IgdGhlIGBhcHBsaWNhdGlvbi9qc29uYCBjb250ZW50LXR5cGUuXG4gICAqIFRoaXMgcHJvcGVydHkgY2FuIG9ubHkgYmUgc3BlY2lmaWVkIGlmIHRoZSBgYWxsb3dDcmVhdGVPcGVyYXRpb25gIHByb3BlcnR5IGlzIHNldCB0byB0cnVlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxDcmVhdGVSZXF1ZXN0VGVtcGxhdGVzPzogeyBbY29udGVudFR5cGU6IHN0cmluZ106IHN0cmluZzsgfTtcbiAgLyoqXG4gICAqIE9wdGlvbmFsLCBjdXN0b20gQVBJIEdhdGV3YXkgSW50ZWdyYXRpb24gUmVzcG9uc2UgZm9yIHRoZSBjcmVhdGUgbWV0aG9kLlxuICAgKiBUaGlzIHByb3BlcnR5IGNhbiBvbmx5IGJlIHNwZWNpZmllZCBpZiB0aGUgYGFsbG93Q3JlYXRlT3BlcmF0aW9uYCBwcm9wZXJ0eSBpcyBzZXQgdG8gdHJ1ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBbe3N0YXR1c0NvZGU6XCIyMDBcIn0se3N0YXR1c0NvZGU6XCI1MDBcIixyZXNwb25zZVRlbXBsYXRlczp7XCJ0ZXh0L2h0bWxcIjpcIkVycm9yXCJ9LHNlbGVjdGlvblBhdHRlcm46XCI1MDBcIn1dXG4gICAqL1xuICByZWFkb25seSBjcmVhdGVJbnRlZ3JhdGlvblJlc3BvbnNlcz86IGFwaS5JbnRlZ3JhdGlvblJlc3BvbnNlW107XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRlcGxveSBhbiBBUEkgR2F0ZXdheSBNZXRob2QgZm9yIEdFVCBIVFRQIG9wZXJhdGlvbnMgb24gRHluYW1vREIgdGFibGUgKGkuZS4gZHluYW1vZGI6UXVlcnkpLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93UmVhZE9wZXJhdGlvbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBUEkgR2F0ZXdheSBSZXF1ZXN0IFRlbXBsYXRlIGZvciB0aGUgcmVhZCBtZXRob2QgZm9yIHRoZSBkZWZhdWx0IGBhcHBsaWNhdGlvbi9qc29uYCBjb250ZW50LXR5cGUuXG4gICAqXG4gICAqIFRoZSBkZWZhdWx0IHRlbXBsYXRlIG9ubHkgc3VwcG9ydHMgYSBwYXJ0aXRpb24ga2V5IGFuZCBub3QgcGFydGl0aW9uICsgc29ydCBrZXlzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGB7IFxcXG4gICAqICAgICAgIFwiVGFibGVOYW1lXCI6IFwiRFlOQU1PREJfVEFCTEVfTkFNRVwiLCBcXFxuICAgKiAgICAgICBcIktleUNvbmRpdGlvbkV4cHJlc3Npb25cIjogXCJQQVJUSVRJT05fS0VZX05BTUUgPSA6djFcIiwgXFxcbiAgICogICAgICAgXCJFeHByZXNzaW9uQXR0cmlidXRlVmFsdWVzXCI6IHsgXFxcbiAgICogICAgICAgICBcIjp2MVwiOiB7IFxcXG4gICAqICAgICAgICAgICBcIlNcIjogXCIkaW5wdXQucGFyYW1zKCdQQVJUSVRJT05fS0VZX05BTUUnKVwiIFxcXG4gICAqICAgICAgICAgfSBcXFxuICAgKiAgICAgICB9IFxcXG4gICAqICAgICB9YFxuICAgKi9cbiAgcmVhZG9ubHkgcmVhZFJlcXVlc3RUZW1wbGF0ZT86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbmFsIFJlYWQgUmVxdWVzdCBUZW1wbGF0ZXMgZm9yIGNvbnRlbnQtdHlwZXMgb3RoZXIgdGhhbiBgYXBwbGljYXRpb24vanNvbmAuXG4gICAqIFVzZSB0aGUgYHJlYWRSZXF1ZXN0VGVtcGxhdGVgIHByb3BlcnR5IHRvIHNldCB0aGUgcmVxdWVzdCB0ZW1wbGF0ZSBmb3IgdGhlIGBhcHBsaWNhdGlvbi9qc29uYCBjb250ZW50LXR5cGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbFJlYWRSZXF1ZXN0VGVtcGxhdGVzPzogeyBbY29udGVudFR5cGU6IHN0cmluZ106IHN0cmluZzsgfTtcbiAgLyoqXG4gICAqIE9wdGlvbmFsLCBjdXN0b20gQVBJIEdhdGV3YXkgSW50ZWdyYXRpb24gUmVzcG9uc2UgZm9yIHRoZSByZWFkIG1ldGhvZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBbe3N0YXR1c0NvZGU6XCIyMDBcIn0se3N0YXR1c0NvZGU6XCI1MDBcIixyZXNwb25zZVRlbXBsYXRlczp7XCJ0ZXh0L2h0bWxcIjpcIkVycm9yXCJ9LHNlbGVjdGlvblBhdHRlcm46XCI1MDBcIn1dXG4gICAqL1xuICByZWFkb25seSByZWFkSW50ZWdyYXRpb25SZXNwb25zZXM/OiBhcGkuSW50ZWdyYXRpb25SZXNwb25zZVtdO1xuICAvKipcbiAgICogV2hldGhlciB0byBkZXBsb3kgQVBJIEdhdGV3YXkgTWV0aG9kIGZvciBQVVQgSFRUUCBvcGVyYXRpb25zIG9uIER5bmFtb0RCIHRhYmxlIChpLmUuIGR5bmFtb2RiOlVwZGF0ZUl0ZW0pLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlXG4gICAqL1xuICByZWFkb25seSBhbGxvd1VwZGF0ZU9wZXJhdGlvbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBUEkgR2F0ZXdheSBSZXF1ZXN0IFRlbXBsYXRlIGZvciB0aGUgdXBkYXRlIG1ldGhvZC5cbiAgICogVGhpcyBwcm9wZXJ0eSBpcyByZXF1aXJlZCBpZiB0aGUgYGFsbG93VXBkYXRlT3BlcmF0aW9uYCBwcm9wZXJ0eSBpcyBzZXQgdG8gdHJ1ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSB1cGRhdGVSZXF1ZXN0VGVtcGxhdGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBVcGRhdGUgUmVxdWVzdCBUZW1wbGF0ZXMgZm9yIGNvbnRlbnQtdHlwZXMgb3RoZXIgdGhhbiBgYXBwbGljYXRpb24vanNvbmAuXG4gICAqIFVzZSB0aGUgYHVwZGF0ZVJlcXVlc3RUZW1wbGF0ZWAgcHJvcGVydHkgdG8gc2V0IHRoZSByZXF1ZXN0IHRlbXBsYXRlIGZvciB0aGUgYGFwcGxpY2F0aW9uL2pzb25gIGNvbnRlbnQtdHlwZS5cbiAgICogVGhpcyBwcm9wZXJ0eSBjYW4gb25seSBiZSBzcGVjaWZpZWQgaWYgdGhlIGBhbGxvd1VwZGF0ZU9wZXJhdGlvbmAgcHJvcGVydHkgaXMgc2V0IHRvIHRydWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbFVwZGF0ZVJlcXVlc3RUZW1wbGF0ZXM/OiB7IFtjb250ZW50VHlwZTogc3RyaW5nXTogc3RyaW5nOyB9O1xuICAvKipcbiAgICogT3B0aW9uYWwsIGN1c3RvbSBBUEkgR2F0ZXdheSBJbnRlZ3JhdGlvbiBSZXNwb25zZSBmb3IgdGhlIHVwZGF0ZSBtZXRob2QuXG4gICAqIFRoaXMgcHJvcGVydHkgY2FuIG9ubHkgYmUgc3BlY2lmaWVkIGlmIHRoZSBgYWxsb3dVcGRhdGVPcGVyYXRpb25gIHByb3BlcnR5IGlzIHNldCB0byB0cnVlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFt7c3RhdHVzQ29kZTpcIjIwMFwifSx7c3RhdHVzQ29kZTpcIjUwMFwiLHJlc3BvbnNlVGVtcGxhdGVzOntcInRleHQvaHRtbFwiOlwiRXJyb3JcIn0sc2VsZWN0aW9uUGF0dGVybjpcIjUwMFwifV1cbiAgICovXG4gIHJlYWRvbmx5IHVwZGF0ZUludGVncmF0aW9uUmVzcG9uc2VzPzogYXBpLkludGVncmF0aW9uUmVzcG9uc2VbXTtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGVwbG95IEFQSSBHYXRld2F5IE1ldGhvZCBmb3IgREVMRVRFIEhUVFAgb3BlcmF0aW9ucyBvbiBEeW5hbW9EQiB0YWJsZSAoaS5lLiBkeW5hbW9kYjpEZWxldGVJdGVtKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dEZWxldGVPcGVyYXRpb24/OiBib29sZWFuO1xuICAvKipcbiAgICogQVBJIEdhdGV3YXkgUmVxdWVzdCBUZW1wbGF0ZSBmb3IgdGhlIGRlbGV0ZSBtZXRob2QgZm9yIHRoZSBkZWZhdWx0IGBhcHBsaWNhdGlvbi9qc29uYCBjb250ZW50LXR5cGUuXG4gICAqIFRoaXMgcHJvcGVydHkgY2FuIG9ubHkgYmUgc3BlY2lmaWVkIGlmIHRoZSBgYWxsb3dEZWxldGVPcGVyYXRpb25gIHByb3BlcnR5IGlzIHNldCB0byB0cnVlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGB7IFxcXG4gICAqICAgICAgIFwiVGFibGVOYW1lXCI6IFwiRFlOQU1PREJfVEFCTEVfTkFNRVwiLCBcXFxuICAgKiAgICAgICBcIktleVwiOiB7IFxcXG4gICAqICAgICAgICAgXCIke3BhcnRpdGlvbktleU5hbWV9XCI6IHsgXFxcbiAgICogICAgICAgICAgIFwiU1wiOiBcIiRpbnB1dC5wYXJhbXMoJ1BBUlRJVElPTl9LRVlfTkFNRScpXCIgXFxcbiAgICogICAgICAgICAgIH0gXFxcbiAgICogICAgICAgICB9LCBcXFxuICAgKiAgICAgICBcIlJldHVyblZhbHVlc1wiOiBcIkFMTF9PTERcIiBcXFxuICAgKiAgICAgfWBcbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0ZVJlcXVlc3RUZW1wbGF0ZT86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbmFsIERlbGV0ZSByZXF1ZXN0IHRlbXBsYXRlcyBmb3IgY29udGVudC10eXBlcyBvdGhlciB0aGFuIGBhcHBsaWNhdGlvbi9qc29uYC5cbiAgICogVXNlIHRoZSBgZGVsZXRlUmVxdWVzdFRlbXBsYXRlYCBwcm9wZXJ0eSB0byBzZXQgdGhlIHJlcXVlc3QgdGVtcGxhdGUgZm9yIHRoZSBgYXBwbGljYXRpb24vanNvbmAgY29udGVudC10eXBlLlxuICAgKiBUaGlzIHByb3BlcnR5IGNhbiBvbmx5IGJlIHNwZWNpZmllZCBpZiB0aGUgYGFsbG93RGVsZXRlT3BlcmF0aW9uYCBwcm9wZXJ0eSBpcyBzZXQgdG8gdHJ1ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsRGVsZXRlUmVxdWVzdFRlbXBsYXRlcz86IHsgW2NvbnRlbnRUeXBlOiBzdHJpbmddOiBzdHJpbmc7IH07XG4gIC8qKlxuICAgKiBPcHRpb25hbCwgY3VzdG9tIEFQSSBHYXRld2F5IEludGVncmF0aW9uIFJlc3BvbnNlIGZvciB0aGUgZGVsZXRlIG1ldGhvZC5cbiAgICogVGhpcyBwcm9wZXJ0eSBjYW4gb25seSBiZSBzcGVjaWZpZWQgaWYgdGhlIGBhbGxvd0RlbGV0ZU9wZXJhdGlvbmAgcHJvcGVydHkgaXMgc2V0IHRvIHRydWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gW3tzdGF0dXNDb2RlOlwiMjAwXCJ9LHtzdGF0dXNDb2RlOlwiNTAwXCIscmVzcG9uc2VUZW1wbGF0ZXM6e1widGV4dC9odG1sXCI6XCJFcnJvclwifSxzZWxlY3Rpb25QYXR0ZXJuOlwiNTAwXCJ9XVxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlSW50ZWdyYXRpb25SZXNwb25zZXM/OiBhcGkuSW50ZWdyYXRpb25SZXNwb25zZVtdO1xuICAvKipcbiAgICogVXNlciBwcm92aWRlZCBwcm9wcyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwcm9wcyBmb3IgdGhlIENsb3VkV2F0Y2hMb2dzIExvZ0dyb3VwLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgcHJvcHMgYXJlIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IGxvZ0dyb3VwUHJvcHM/OiBsb2dzLkxvZ0dyb3VwUHJvcHM7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgVGhlIEFwaUdhdGV3YXlUb0R5bmFtb0RCIGNsYXNzLlxuICovXG5leHBvcnQgY2xhc3MgQXBpR2F0ZXdheVRvRHluYW1vREIgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgZHluYW1vVGFibGU6IGR5bmFtb2RiLlRhYmxlO1xuICBwdWJsaWMgcmVhZG9ubHkgYXBpR2F0ZXdheVJvbGU6IGlhbS5Sb2xlO1xuICBwdWJsaWMgcmVhZG9ubHkgYXBpR2F0ZXdheTogYXBpLlJlc3RBcGk7XG4gIHB1YmxpYyByZWFkb25seSBhcGlHYXRld2F5Q2xvdWRXYXRjaFJvbGU/OiBpYW0uUm9sZTtcbiAgcHVibGljIHJlYWRvbmx5IGFwaUdhdGV3YXlMb2dHcm91cDogbG9ncy5Mb2dHcm91cDtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IENvbnN0cnVjdHMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIEFwaUdhdGV3YXlUb0R5bmFtb0RCIGNsYXNzLlxuICAgKiBAcGFyYW0ge2Nkay5BcHB9IHNjb3BlIC0gcmVwcmVzZW50cyB0aGUgc2NvcGUgZm9yIGFsbCB0aGUgcmVzb3VyY2VzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgLSB0aGlzIGlzIGEgYSBzY29wZS11bmlxdWUgaWQuXG4gICAqIEBwYXJhbSB7Q2xvdWRGcm9udFRvQXBpR2F0ZXdheVRvTGFtYmRhUHJvcHN9IHByb3BzIC0gdXNlciBwcm92aWRlZCBwcm9wcyBmb3IgdGhlIGNvbnN0cnVjdC5cbiAgICogQHNpbmNlIDAuOC4wXG4gICAqIEBhY2Nlc3MgcHVibGljXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQXBpR2F0ZXdheVRvRHluYW1vREJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgZGVmYXVsdHMuQ2hlY2tEeW5hbW9EQlByb3BzKHByb3BzKTtcblxuICAgIGlmICh0aGlzLkNoZWNrQ3JlYXRlUmVxdWVzdFByb3BzKHByb3BzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgJ2FsbG93Q3JlYXRlT3BlcmF0aW9uJyBwcm9wZXJ0eSBtdXN0IGJlIHNldCB0byB0cnVlIHdoZW4gc2V0dGluZyBhbnkgb2YgdGhlIGZvbGxvd2luZzogYCArXG4gICAgICAgIGAnY3JlYXRlUmVxdWVzdFRlbXBsYXRlJywgJ2FkZGl0aW9uYWxDcmVhdGVSZXF1ZXN0VGVtcGxhdGVzJywgJ2NyZWF0ZUludGVncmF0aW9uUmVzcG9uc2VzJ2ApO1xuICAgIH1cbiAgICBpZiAodGhpcy5DaGVja1JlYWRSZXF1ZXN0UHJvcHMocHJvcHMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSAnYWxsb3dSZWFkT3BlcmF0aW9uJyBwcm9wZXJ0eSBtdXN0IGJlIHNldCB0byB0cnVlIG9yIHVuZGVmaW5lZCB3aGVuIHNldHRpbmcgYW55IG9mIHRoZSBmb2xsb3dpbmc6IGAgK1xuICAgICAgICBgJ3JlYWRSZXF1ZXN0VGVtcGxhdGUnLCAnYWRkaXRpb25hbFJlYWRSZXF1ZXN0VGVtcGxhdGVzJywgJ3JlYWRJbnRlZ3JhdGlvblJlc3BvbnNlcydgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuQ2hlY2tVcGRhdGVSZXF1ZXN0UHJvcHMocHJvcHMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSAnYWxsb3dVcGRhdGVPcGVyYXRpb24nIHByb3BlcnR5IG11c3QgYmUgc2V0IHRvIHRydWUgd2hlbiBzZXR0aW5nIGFueSBvZiB0aGUgZm9sbG93aW5nOiBgICtcbiAgICAgICAgYCd1cGRhdGVSZXF1ZXN0VGVtcGxhdGUnLCAnYWRkaXRpb25hbFVwZGF0ZVJlcXVlc3RUZW1wbGF0ZXMnLCAndXBkYXRlSW50ZWdyYXRpb25SZXNwb25zZXMnYCk7XG4gICAgfVxuICAgIGlmICh0aGlzLkNoZWNrRGVsZXRlUmVxdWVzdFByb3BzKHByb3BzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgJ2FsbG93RGVsZXRlT3BlcmF0aW9uJyBwcm9wZXJ0eSBtdXN0IGJlIHNldCB0byB0cnVlIHdoZW4gc2V0dGluZyBhbnkgb2YgdGhlIGZvbGxvd2luZzogYCArXG4gICAgICAgIGAnZGVsZXRlUmVxdWVzdFRlbXBsYXRlJywgJ2FkZGl0aW9uYWxEZWxldGVSZXF1ZXN0VGVtcGxhdGVzJywgJ2RlbGV0ZUludGVncmF0aW9uUmVzcG9uc2VzJ2ApO1xuICAgIH1cblxuICAgIC8vIFNldCB0aGUgZGVmYXVsdCBwcm9wcyBmb3IgRHluYW1vREIgdGFibGVcbiAgICBjb25zdCBkeW5hbW9UYWJsZVByb3BzOiBkeW5hbW9kYi5UYWJsZVByb3BzID0gZGVmYXVsdHMuY29uc29saWRhdGVQcm9wcyhkZWZhdWx0cy5EZWZhdWx0VGFibGVQcm9wcywgcHJvcHMuZHluYW1vVGFibGVQcm9wcyk7XG4gICAgbGV0IHBhcnRpdGlvbktleU5hbWUgPSBkeW5hbW9UYWJsZVByb3BzLnBhcnRpdGlvbktleS5uYW1lO1xuXG4gICAgaWYgKHByb3BzLmV4aXN0aW5nVGFibGVPYmopIHtcbiAgICAgIHBhcnRpdGlvbktleU5hbWUgPSBnZXRQYXJ0aXRpb25LZXlOYW1lRnJvbVRhYmxlKHByb3BzLmV4aXN0aW5nVGFibGVPYmopO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc291cmNlTmFtZSA9IHByb3BzLnJlc291cmNlTmFtZSA/PyBwYXJ0aXRpb25LZXlOYW1lO1xuXG4gICAgLy8gU2luY2Ugd2UgYXJlIG9ubHkgaW52b2tpbmcgdGhpcyBmdW5jdGlvbiB3aXRoIGFuIGV4aXN0aW5nIFRhYmxlIG9yIHRhYmxlUHJvcHMsXG4gICAgLy8gKG5vdCBhIHRhYmxlIGludGVyZmFjZSksIHdlIGtub3cgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gd2lsbCBhbHdheXMgcmV0dXJuXG4gICAgLy8gYSBUYWJsZSBvYmplY3QgYW5kIHdlIGNhbiBmb3JjZSBhc3NpZ25tZW50IHRvIHRoZSBkeW5hbW9UYWJsZSBwcm9wZXJ0eS5cbiAgICBjb25zdCBidWlsZER5bmFtb0RCVGFibGVSZXNwb25zZSA9IGRlZmF1bHRzLmJ1aWxkRHluYW1vREJUYWJsZSh0aGlzLCB7XG4gICAgICBleGlzdGluZ1RhYmxlT2JqOiBwcm9wcy5leGlzdGluZ1RhYmxlT2JqLFxuICAgICAgZHluYW1vVGFibGVQcm9wczogcHJvcHMuZHluYW1vVGFibGVQcm9wc1xuICAgIH0pO1xuICAgIHRoaXMuZHluYW1vVGFibGUgPSBidWlsZER5bmFtb0RCVGFibGVSZXNwb25zZS50YWJsZU9iamVjdCE7XG5cbiAgICAvLyBTZXR1cCB0aGUgQVBJIEdhdGV3YXlcbiAgICBjb25zdCBnbG9iYWxSZXN0QXBpUmVzcG9uc2UgPSBkZWZhdWx0cy5HbG9iYWxSZXN0QXBpKHRoaXMsIHByb3BzLmFwaUdhdGV3YXlQcm9wcywgcHJvcHMubG9nR3JvdXBQcm9wcyk7XG4gICAgdGhpcy5hcGlHYXRld2F5ID0gZ2xvYmFsUmVzdEFwaVJlc3BvbnNlLmFwaTtcbiAgICB0aGlzLmFwaUdhdGV3YXlDbG91ZFdhdGNoUm9sZSA9IGdsb2JhbFJlc3RBcGlSZXNwb25zZS5yb2xlO1xuICAgIHRoaXMuYXBpR2F0ZXdheUxvZ0dyb3VwID0gZ2xvYmFsUmVzdEFwaVJlc3BvbnNlLmxvZ0dyb3VwO1xuXG4gICAgLy8gU2V0dXAgdGhlIEFQSSBHYXRld2F5IHJvbGVcbiAgICB0aGlzLmFwaUdhdGV3YXlSb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsICdhcGktZ2F0ZXdheS1yb2xlJywge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2FwaWdhdGV3YXkuYW1hem9uYXdzLmNvbScpXG4gICAgfSk7XG5cbiAgICAvLyBTZXR1cCB0aGUgQVBJIEdhdGV3YXkgUmVzb3VyY2VcbiAgICBjb25zdCBhcGlHYXRld2F5UmVzb3VyY2U6IGFwaS5SZXNvdXJjZSA9IHRoaXMuYXBpR2F0ZXdheS5yb290LmFkZFJlc291cmNlKFwie1wiICsgcmVzb3VyY2VOYW1lICsgXCJ9XCIpO1xuXG4gICAgLy8gU2V0dXAgQVBJIEdhdGV3YXkgTWV0aG9kXG4gICAgLy8gQ3JlYXRlXG4gICAgaWYgKHRoaXMuSW1wbGVtZW50Q3JlYXRlT3BlcmF0aW9uKHByb3BzKSkge1xuICAgICAgLy8gSW1wbGVtZW50Q3JlYXRlT3BlcmF0aW9uIGhhcyBjb25maXJtZWQgdGhhdCBjcmVhdGVSZXF1ZXN0VGVtcGxhdGUgZXhpc3RzKVxuICAgICAgY29uc3QgY3JlYXRlUmVxdWVzdFRlbXBsYXRlID0gcHJvcHMuY3JlYXRlUmVxdWVzdFRlbXBsYXRlIS5yZXBsYWNlKFwiJHtUYWJsZX1cIiwgdGhpcy5keW5hbW9UYWJsZS50YWJsZU5hbWUpO1xuICAgICAgdGhpcy5hZGRBY3Rpb25Ub1BvbGljeShcImR5bmFtb2RiOlB1dEl0ZW1cIik7XG4gICAgICBkZWZhdWx0cy5hZGRQcm94eU1ldGhvZFRvQXBpUmVzb3VyY2Uoe1xuICAgICAgICBzZXJ2aWNlOiBcImR5bmFtb2RiXCIsXG4gICAgICAgIGFjdGlvbjogXCJQdXRJdGVtXCIsXG4gICAgICAgIGFwaUdhdGV3YXlSb2xlOiB0aGlzLmFwaUdhdGV3YXlSb2xlLFxuICAgICAgICBhcGlNZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICBhcGlSZXNvdXJjZTogdGhpcy5hcGlHYXRld2F5LnJvb3QsXG4gICAgICAgIHJlcXVlc3RUZW1wbGF0ZTogY3JlYXRlUmVxdWVzdFRlbXBsYXRlLFxuICAgICAgICBhZGRpdGlvbmFsUmVxdWVzdFRlbXBsYXRlczogcHJvcHMuYWRkaXRpb25hbENyZWF0ZVJlcXVlc3RUZW1wbGF0ZXMsXG4gICAgICAgIGludGVncmF0aW9uUmVzcG9uc2VzOiBwcm9wcy5jcmVhdGVJbnRlZ3JhdGlvblJlc3BvbnNlc1xuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIFJlYWRcbiAgICBpZiAodGhpcy5JbXBsZW1lbnRSZWFPcGVyYXRpb24ocHJvcHMpKSB7XG4gICAgICBjb25zdCByZWFkUmVxdWVzdFRlbXBsYXRlID0gcHJvcHMucmVhZFJlcXVlc3RUZW1wbGF0ZSA/P1xuICAgICAgICBgeyBcXFxuICAgICAgICAgIFwiVGFibGVOYW1lXCI6IFwiJHt0aGlzLmR5bmFtb1RhYmxlLnRhYmxlTmFtZX1cIiwgXFxcbiAgICAgICAgICBcIktleUNvbmRpdGlvbkV4cHJlc3Npb25cIjogXCIke3BhcnRpdGlvbktleU5hbWV9ID0gOnYxXCIsIFxcXG4gICAgICAgICAgXCJFeHByZXNzaW9uQXR0cmlidXRlVmFsdWVzXCI6IHsgXFxcbiAgICAgICAgICAgIFwiOnYxXCI6IHsgXFxcbiAgICAgICAgICAgICAgXCJTXCI6IFwiJGlucHV0LnBhcmFtcygnJHtyZXNvdXJjZU5hbWV9JylcIiBcXFxuICAgICAgICAgICAgfSBcXFxuICAgICAgICAgIH0gXFxcbiAgICAgICAgfWA7XG5cbiAgICAgIHRoaXMuYWRkQWN0aW9uVG9Qb2xpY3koXCJkeW5hbW9kYjpRdWVyeVwiKTtcbiAgICAgIGRlZmF1bHRzLmFkZFByb3h5TWV0aG9kVG9BcGlSZXNvdXJjZSh7XG4gICAgICAgIHNlcnZpY2U6IFwiZHluYW1vZGJcIixcbiAgICAgICAgYWN0aW9uOiBcIlF1ZXJ5XCIsXG4gICAgICAgIGFwaUdhdGV3YXlSb2xlOiB0aGlzLmFwaUdhdGV3YXlSb2xlLFxuICAgICAgICBhcGlNZXRob2Q6IFwiR0VUXCIsXG4gICAgICAgIGFwaVJlc291cmNlOiBhcGlHYXRld2F5UmVzb3VyY2UsXG4gICAgICAgIHJlcXVlc3RUZW1wbGF0ZTogcmVhZFJlcXVlc3RUZW1wbGF0ZSxcbiAgICAgICAgYWRkaXRpb25hbFJlcXVlc3RUZW1wbGF0ZXM6IHByb3BzLmFkZGl0aW9uYWxSZWFkUmVxdWVzdFRlbXBsYXRlcyxcbiAgICAgICAgaW50ZWdyYXRpb25SZXNwb25zZXM6IHByb3BzLnJlYWRJbnRlZ3JhdGlvblJlc3BvbnNlc1xuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIFVwZGF0ZVxuICAgIGlmICh0aGlzLkltcGxlbWVudFVwZGF0ZU9wZXJhdGlvbihwcm9wcykpIHtcbiAgICAgIC8vIEltcGxlbWVudFVwZGF0ZU9wZXJhdGlvbiBjb25maXJtZWQgdGhlIGV4aXN0ZW5jZSBvZiB1cGRhdGVSZXF1ZXN0VGVtcGxhdGVcbiAgICAgIGNvbnN0IHVwZGF0ZVJlcXVlc3RUZW1wbGF0ZSA9IHByb3BzLnVwZGF0ZVJlcXVlc3RUZW1wbGF0ZSEucmVwbGFjZShcIiR7VGFibGV9XCIsIHRoaXMuZHluYW1vVGFibGUudGFibGVOYW1lKTtcbiAgICAgIHRoaXMuYWRkQWN0aW9uVG9Qb2xpY3koXCJkeW5hbW9kYjpVcGRhdGVJdGVtXCIpO1xuICAgICAgZGVmYXVsdHMuYWRkUHJveHlNZXRob2RUb0FwaVJlc291cmNlKHtcbiAgICAgICAgc2VydmljZTogXCJkeW5hbW9kYlwiLFxuICAgICAgICBhY3Rpb246IFwiVXBkYXRlSXRlbVwiLFxuICAgICAgICBhcGlHYXRld2F5Um9sZTogdGhpcy5hcGlHYXRld2F5Um9sZSxcbiAgICAgICAgYXBpTWV0aG9kOiBcIlBVVFwiLFxuICAgICAgICBhcGlSZXNvdXJjZTogYXBpR2F0ZXdheVJlc291cmNlLFxuICAgICAgICByZXF1ZXN0VGVtcGxhdGU6IHVwZGF0ZVJlcXVlc3RUZW1wbGF0ZSxcbiAgICAgICAgYWRkaXRpb25hbFJlcXVlc3RUZW1wbGF0ZXM6IHByb3BzLmFkZGl0aW9uYWxVcGRhdGVSZXF1ZXN0VGVtcGxhdGVzLFxuICAgICAgICBpbnRlZ3JhdGlvblJlc3BvbnNlczogcHJvcHMudXBkYXRlSW50ZWdyYXRpb25SZXNwb25zZXNcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBEZWxldGVcbiAgICBpZiAodGhpcy5JbXBsZW1lbnREZWxldGVPcGVyYXRpb24ocHJvcHMpKSB7XG4gICAgICBjb25zdCBkZWxldGVSZXF1ZXN0VGVtcGxhdGUgPSBwcm9wcy5kZWxldGVSZXF1ZXN0VGVtcGxhdGUgPz9cbiAgICAgICAgYHsgXFxcbiAgICAgICAgICBcIlRhYmxlTmFtZVwiOiBcIiR7dGhpcy5keW5hbW9UYWJsZS50YWJsZU5hbWV9XCIsIFxcXG4gICAgICAgICAgXCJLZXlcIjogeyBcXFxuICAgICAgICAgICAgXCIke3BhcnRpdGlvbktleU5hbWV9XCI6IHsgXFxcbiAgICAgICAgICAgICAgXCJTXCI6IFwiJGlucHV0LnBhcmFtcygnJHtyZXNvdXJjZU5hbWV9JylcIiBcXFxuICAgICAgICAgICAgICB9IFxcXG4gICAgICAgICAgICB9LCBcXFxuICAgICAgICAgIFwiUmV0dXJuVmFsdWVzXCI6IFwiQUxMX09MRFwiIFxcXG4gICAgICAgIH1gO1xuXG4gICAgICB0aGlzLmFkZEFjdGlvblRvUG9saWN5KFwiZHluYW1vZGI6RGVsZXRlSXRlbVwiKTtcbiAgICAgIGRlZmF1bHRzLmFkZFByb3h5TWV0aG9kVG9BcGlSZXNvdXJjZSh7XG4gICAgICAgIHNlcnZpY2U6IFwiZHluYW1vZGJcIixcbiAgICAgICAgYWN0aW9uOiBcIkRlbGV0ZUl0ZW1cIixcbiAgICAgICAgYXBpR2F0ZXdheVJvbGU6IHRoaXMuYXBpR2F0ZXdheVJvbGUsXG4gICAgICAgIGFwaU1ldGhvZDogXCJERUxFVEVcIixcbiAgICAgICAgYXBpUmVzb3VyY2U6IGFwaUdhdGV3YXlSZXNvdXJjZSxcbiAgICAgICAgcmVxdWVzdFRlbXBsYXRlOiBkZWxldGVSZXF1ZXN0VGVtcGxhdGUsXG4gICAgICAgIGFkZGl0aW9uYWxSZXF1ZXN0VGVtcGxhdGVzOiBwcm9wcy5hZGRpdGlvbmFsRGVsZXRlUmVxdWVzdFRlbXBsYXRlcyxcbiAgICAgICAgaW50ZWdyYXRpb25SZXNwb25zZXM6IHByb3BzLmRlbGV0ZUludGVncmF0aW9uUmVzcG9uc2VzXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIENoZWNrUmVhZFJlcXVlc3RQcm9wcyhwcm9wczogQXBpR2F0ZXdheVRvRHluYW1vREJQcm9wcyk6IGJvb2xlYW4ge1xuICAgIGlmICgocHJvcHMucmVhZFJlcXVlc3RUZW1wbGF0ZSB8fCBwcm9wcy5hZGRpdGlvbmFsUmVhZFJlcXVlc3RUZW1wbGF0ZXMgfHwgcHJvcHMucmVhZEludGVncmF0aW9uUmVzcG9uc2VzKVxuICAgICAgICAmJiBwcm9wcy5hbGxvd1JlYWRPcGVyYXRpb24gPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHByaXZhdGUgQ2hlY2tVcGRhdGVSZXF1ZXN0UHJvcHMocHJvcHM6IEFwaUdhdGV3YXlUb0R5bmFtb0RCUHJvcHMpOiBib29sZWFuIHtcbiAgICBpZiAoKHByb3BzLnVwZGF0ZVJlcXVlc3RUZW1wbGF0ZSB8fCBwcm9wcy5hZGRpdGlvbmFsVXBkYXRlUmVxdWVzdFRlbXBsYXRlcyB8fCBwcm9wcy51cGRhdGVJbnRlZ3JhdGlvblJlc3BvbnNlcylcbiAgICAgICAgJiYgcHJvcHMuYWxsb3dVcGRhdGVPcGVyYXRpb24gIT09IHRydWUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcHJpdmF0ZSBDaGVja0RlbGV0ZVJlcXVlc3RQcm9wcyhwcm9wczogQXBpR2F0ZXdheVRvRHluYW1vREJQcm9wcyk6IGJvb2xlYW4ge1xuICAgIGlmICgocHJvcHMuZGVsZXRlUmVxdWVzdFRlbXBsYXRlIHx8IHByb3BzLmFkZGl0aW9uYWxEZWxldGVSZXF1ZXN0VGVtcGxhdGVzIHx8IHByb3BzLmRlbGV0ZUludGVncmF0aW9uUmVzcG9uc2VzKVxuICAgICAgICAmJiBwcm9wcy5hbGxvd0RlbGV0ZU9wZXJhdGlvbiAhPT0gdHJ1ZSkgIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIENoZWNrQ3JlYXRlUmVxdWVzdFByb3BzKHByb3BzOiBBcGlHYXRld2F5VG9EeW5hbW9EQlByb3BzKTogYm9vbGVhbiB7XG4gICAgaWYgKChwcm9wcy5jcmVhdGVSZXF1ZXN0VGVtcGxhdGUgfHwgcHJvcHMuYWRkaXRpb25hbENyZWF0ZVJlcXVlc3RUZW1wbGF0ZXMgfHwgcHJvcHMuY3JlYXRlSW50ZWdyYXRpb25SZXNwb25zZXMpXG4gICAgICAgICYmIHByb3BzLmFsbG93Q3JlYXRlT3BlcmF0aW9uICE9PSB0cnVlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBJbXBsZW1lbnRDcmVhdGVPcGVyYXRpb24ocHJvcHM6IEFwaUdhdGV3YXlUb0R5bmFtb0RCUHJvcHMpOiBib29sZWFuIHtcbiAgICBpZiAocHJvcHMuYWxsb3dDcmVhdGVPcGVyYXRpb24gJiYgcHJvcHMuYWxsb3dDcmVhdGVPcGVyYXRpb24gPT09IHRydWUgJiYgcHJvcHMuY3JlYXRlUmVxdWVzdFRlbXBsYXRlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBJbXBsZW1lbnRSZWFPcGVyYXRpb24ocHJvcHM6IEFwaUdhdGV3YXlUb0R5bmFtb0RCUHJvcHMpOiBib29sZWFuIHtcbiAgICBpZiAocHJvcHMuYWxsb3dSZWFkT3BlcmF0aW9uID09PSB1bmRlZmluZWQgfHwgcHJvcHMuYWxsb3dSZWFkT3BlcmF0aW9uID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBJbXBsZW1lbnRVcGRhdGVPcGVyYXRpb24ocHJvcHM6IEFwaUdhdGV3YXlUb0R5bmFtb0RCUHJvcHMpOiBib29sZWFuIHtcbiAgICBpZiAocHJvcHMuYWxsb3dVcGRhdGVPcGVyYXRpb24gJiYgcHJvcHMuYWxsb3dVcGRhdGVPcGVyYXRpb24gPT09IHRydWUgJiYgcHJvcHMudXBkYXRlUmVxdWVzdFRlbXBsYXRlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBJbXBsZW1lbnREZWxldGVPcGVyYXRpb24ocHJvcHM6IEFwaUdhdGV3YXlUb0R5bmFtb0RCUHJvcHMpOiBib29sZWFuIHtcbiAgICBpZiAocHJvcHMuYWxsb3dEZWxldGVPcGVyYXRpb24gJiYgcHJvcHMuYWxsb3dEZWxldGVPcGVyYXRpb24gPT09IHRydWUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGFkZEFjdGlvblRvUG9saWN5KGFjdGlvbjogc3RyaW5nKSB7XG4gICAgdGhpcy5hcGlHYXRld2F5Um9sZS5hZGRUb1BvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgdGhpcy5keW5hbW9UYWJsZS50YWJsZUFyblxuICAgICAgXSxcbiAgICAgIGFjdGlvbnM6IFtgJHthY3Rpb259YF1cbiAgICB9KSk7XG4gIH1cbn0iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-solutions-constructs/aws-apigateway-dynamodb",
3
- "version": "2.45.0",
3
+ "version": "2.47.0",
4
4
  "description": "CDK Constructs for AWS API Gateway and Amazon DynamoDB integration.",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -53,12 +53,12 @@
53
53
  }
54
54
  },
55
55
  "dependencies": {
56
- "@aws-solutions-constructs/core": "2.45.0"
56
+ "@aws-solutions-constructs/core": "2.47.0"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@types/jest": "^27.4.0",
60
60
  "@types/node": "^10.3.0",
61
- "aws-cdk-lib": "2.99.1",
61
+ "aws-cdk-lib": "2.111.0",
62
62
  "constructs": "^10.0.0"
63
63
  },
64
64
  "jest": {
@@ -76,8 +76,8 @@
76
76
  ]
77
77
  },
78
78
  "peerDependencies": {
79
- "@aws-solutions-constructs/core": "2.45.0",
80
- "aws-cdk-lib": "^2.99.1",
79
+ "@aws-solutions-constructs/core": "2.47.0",
80
+ "aws-cdk-lib": "^2.111.0",
81
81
  "constructs": "^10.0.0"
82
82
  },
83
83
  "keywords": [
@@ -4,27 +4,27 @@
4
4
  "existingtableE51CCC93": {
5
5
  "Type": "AWS::DynamoDB::Table",
6
6
  "Properties": {
7
- "KeySchema": [
7
+ "AttributeDefinitions": [
8
8
  {
9
9
  "AttributeName": "PK",
10
- "KeyType": "HASH"
10
+ "AttributeType": "S"
11
11
  },
12
12
  {
13
13
  "AttributeName": "SK",
14
- "KeyType": "RANGE"
14
+ "AttributeType": "S"
15
15
  }
16
16
  ],
17
- "AttributeDefinitions": [
17
+ "BillingMode": "PAY_PER_REQUEST",
18
+ "KeySchema": [
18
19
  {
19
20
  "AttributeName": "PK",
20
- "AttributeType": "S"
21
+ "KeyType": "HASH"
21
22
  },
22
23
  {
23
24
  "AttributeName": "SK",
24
- "AttributeType": "S"
25
+ "KeyType": "RANGE"
25
26
  }
26
27
  ],
27
- "BillingMode": "PAY_PER_REQUEST",
28
28
  "PointInTimeRecoverySpecification": {
29
29
  "PointInTimeRecoveryEnabled": true
30
30
  },
@@ -68,10 +68,10 @@
68
68
  "testapigatewaydynamodbadditionalrequesttemplatescustomresourcenameRestApiDeployment7F5497B67361a1e02c5799cae81447bf3ad5ef46": {
69
69
  "Type": "AWS::ApiGateway::Deployment",
70
70
  "Properties": {
71
+ "Description": "Automatically created by the RestApi construct",
71
72
  "RestApiId": {
72
73
  "Ref": "testapigatewaydynamodbadditionalrequesttemplatescustomresourcenameRestApiC4813ABE"
73
- },
74
- "Description": "Automatically created by the RestApi construct"
74
+ }
75
75
  },
76
76
  "DependsOn": [
77
77
  "testapigatewaydynamodbadditionalrequesttemplatescustomresourcenameRestApiidGETB657BB05",
@@ -91,9 +91,6 @@
91
91
  "testapigatewaydynamodbadditionalrequesttemplatescustomresourcenameRestApiDeploymentStageprodDD2DED0B": {
92
92
  "Type": "AWS::ApiGateway::Stage",
93
93
  "Properties": {
94
- "RestApiId": {
95
- "Ref": "testapigatewaydynamodbadditionalrequesttemplatescustomresourcenameRestApiC4813ABE"
96
- },
97
94
  "AccessLogSetting": {
98
95
  "DestinationArn": {
99
96
  "Fn::GetAtt": [
@@ -114,6 +111,9 @@
114
111
  "ResourcePath": "/*"
115
112
  }
116
113
  ],
114
+ "RestApiId": {
115
+ "Ref": "testapigatewaydynamodbadditionalrequesttemplatescustomresourcenameRestApiC4813ABE"
116
+ },
117
117
  "StageName": "prod",
118
118
  "TracingEnabled": true
119
119
  }
@@ -136,14 +136,8 @@
136
136
  "testapigatewaydynamodbadditionalrequesttemplatescustomresourcenameRestApiidGETB657BB05": {
137
137
  "Type": "AWS::ApiGateway::Method",
138
138
  "Properties": {
139
- "HttpMethod": "GET",
140
- "ResourceId": {
141
- "Ref": "testapigatewaydynamodbadditionalrequesttemplatescustomresourcenameRestApiid4EBF99AB"
142
- },
143
- "RestApiId": {
144
- "Ref": "testapigatewaydynamodbadditionalrequesttemplatescustomresourcenameRestApiC4813ABE"
145
- },
146
139
  "AuthorizationType": "AWS_IAM",
140
+ "HttpMethod": "GET",
147
141
  "Integration": {
148
142
  "Credentials": {
149
143
  "Fn::GetAtt": [
@@ -225,7 +219,13 @@
225
219
  },
226
220
  "StatusCode": "500"
227
221
  }
228
- ]
222
+ ],
223
+ "ResourceId": {
224
+ "Ref": "testapigatewaydynamodbadditionalrequesttemplatescustomresourcenameRestApiid4EBF99AB"
225
+ },
226
+ "RestApiId": {
227
+ "Ref": "testapigatewaydynamodbadditionalrequesttemplatescustomresourcenameRestApiC4813ABE"
228
+ }
229
229
  }
230
230
  },
231
231
  "testapigatewaydynamodbadditionalrequesttemplatescustomresourcenameRestApiUsagePlan4D14DF10": {
@@ -423,4 +423,4 @@
423
423
  ]
424
424
  }
425
425
  }
426
- }
426
+ }
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
6
+ * with the License. A copy of the License is located at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
11
+ * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
12
+ * and limitations under the License.
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ // Imports
16
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
17
+ const lib_1 = require("../lib");
18
+ const core_1 = require("@aws-solutions-constructs/core");
19
+ const dynamodb = require("aws-cdk-lib/aws-dynamodb");
20
+ // Setup
21
+ const app = new aws_cdk_lib_1.App();
22
+ const stack = new aws_cdk_lib_1.Stack(app, core_1.generateIntegStackName(__filename));
23
+ stack.templateOptions.description = 'Integration Test for aws-apigateway-dynamodb';
24
+ const partitionKeyName = 'PK';
25
+ const sortKeyName = 'SK';
26
+ const resourceName = 'id';
27
+ const existingTableObj = new dynamodb.Table(stack, 'existing-table', {
28
+ partitionKey: {
29
+ name: partitionKeyName,
30
+ type: dynamodb.AttributeType.STRING,
31
+ },
32
+ sortKey: {
33
+ name: sortKeyName,
34
+ type: dynamodb.AttributeType.STRING
35
+ },
36
+ pointInTimeRecovery: true,
37
+ encryption: dynamodb.TableEncryption.AWS_MANAGED,
38
+ billingMode: dynamodb.BillingMode.PAY_PER_REQUEST
39
+ });
40
+ new lib_1.ApiGatewayToDynamoDB(stack, 'test-api-gateway-dynamodb-additional-request-templates-custom-resource-name', {
41
+ existingTableObj,
42
+ resourceName,
43
+ additionalReadRequestTemplates: {
44
+ 'text/plain': `{ \
45
+ "TableName": "${existingTableObj.tableName}", \
46
+ "KeyConditionExpression": "${partitionKeyName} = :v2 AND ${sortKeyName} = :v1", \
47
+ "ExpressionAttributeValues": { \
48
+ ":v1": { \
49
+ "S": "$input.params('${resourceName}')" \
50
+ }, \
51
+ ":v2": { \
52
+ "S": "MY_VALUE" \
53
+ } \
54
+ } \
55
+ }`,
56
+ }
57
+ });
58
+ // Synth
59
+ app.synth();
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWcuYXBpZGRiLWFkZGl0aW9uYWwtcmVxdWVzdC10ZW1wbGF0ZXMtY3VzdG9tLXJlc291cmNlLW5hbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbnRlZy5hcGlkZGItYWRkaXRpb25hbC1yZXF1ZXN0LXRlbXBsYXRlcy1jdXN0b20tcmVzb3VyY2UtbmFtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7O0FBRUgsVUFBVTtBQUNWLDZDQUF5QztBQUN6QyxnQ0FBOEM7QUFDOUMseURBQXdFO0FBQ3hFLHFEQUFxRDtBQUVyRCxRQUFRO0FBQ1IsTUFBTSxHQUFHLEdBQUcsSUFBSSxpQkFBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxDQUFDLEdBQUcsRUFBRSw2QkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLEtBQUssQ0FBQyxlQUFlLENBQUMsV0FBVyxHQUFHLDhDQUE4QyxDQUFDO0FBRW5GLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0FBQzlCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQztBQUN6QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUM7QUFFMUIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFO0lBQ25FLFlBQVksRUFBRTtRQUNaLElBQUksRUFBRSxnQkFBZ0I7UUFDdEIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTTtLQUNwQztJQUNELE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxXQUFXO1FBQ2pCLElBQUksRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU07S0FDcEM7SUFDRCxtQkFBbUIsRUFBRSxJQUFJO0lBQ3pCLFVBQVUsRUFBRSxRQUFRLENBQUMsZUFBZSxDQUFDLFdBQVc7SUFDaEQsV0FBVyxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsZUFBZTtDQUNsRCxDQUFDLENBQUM7QUFFSCxJQUFJLDBCQUFvQixDQUFDLEtBQUssRUFBRSw2RUFBNkUsRUFBRTtJQUM3RyxnQkFBZ0I7SUFDaEIsWUFBWTtJQUNaLDhCQUE4QixFQUFFO1FBQzlCLFlBQVksRUFBRTtzQkFDSSxnQkFBZ0IsQ0FBQyxTQUFTO21DQUNiLGdCQUFnQixjQUFjLFdBQVc7OztpQ0FHM0MsWUFBWTs7Ozs7O01BTXZDO0tBQ0g7Q0FDRixDQUFDLENBQUM7QUFFSCxRQUFRO0FBQ1IsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gSW1wb3J0c1xuaW1wb3J0IHsgQXBwLCBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQXBpR2F0ZXdheVRvRHluYW1vREIgfSBmcm9tIFwiLi4vbGliXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZUludGVnU3RhY2tOYW1lIH0gZnJvbSAnQGF3cy1zb2x1dGlvbnMtY29uc3RydWN0cy9jb3JlJztcbmltcG9ydCAqIGFzIGR5bmFtb2RiIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZHluYW1vZGJcIjtcblxuLy8gU2V0dXBcbmNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcbmNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKGFwcCwgZ2VuZXJhdGVJbnRlZ1N0YWNrTmFtZShfX2ZpbGVuYW1lKSk7XG5zdGFjay50ZW1wbGF0ZU9wdGlvbnMuZGVzY3JpcHRpb24gPSAnSW50ZWdyYXRpb24gVGVzdCBmb3IgYXdzLWFwaWdhdGV3YXktZHluYW1vZGInO1xuXG5jb25zdCBwYXJ0aXRpb25LZXlOYW1lID0gJ1BLJztcbmNvbnN0IHNvcnRLZXlOYW1lID0gJ1NLJztcbmNvbnN0IHJlc291cmNlTmFtZSA9ICdpZCc7XG5cbmNvbnN0IGV4aXN0aW5nVGFibGVPYmogPSBuZXcgZHluYW1vZGIuVGFibGUoc3RhY2ssICdleGlzdGluZy10YWJsZScsIHtcbiAgcGFydGl0aW9uS2V5OiB7XG4gICAgbmFtZTogcGFydGl0aW9uS2V5TmFtZSxcbiAgICB0eXBlOiBkeW5hbW9kYi5BdHRyaWJ1dGVUeXBlLlNUUklORyxcbiAgfSxcbiAgc29ydEtleToge1xuICAgIG5hbWU6IHNvcnRLZXlOYW1lLFxuICAgIHR5cGU6IGR5bmFtb2RiLkF0dHJpYnV0ZVR5cGUuU1RSSU5HXG4gIH0sXG4gIHBvaW50SW5UaW1lUmVjb3Zlcnk6IHRydWUsXG4gIGVuY3J5cHRpb246IGR5bmFtb2RiLlRhYmxlRW5jcnlwdGlvbi5BV1NfTUFOQUdFRCxcbiAgYmlsbGluZ01vZGU6IGR5bmFtb2RiLkJpbGxpbmdNb2RlLlBBWV9QRVJfUkVRVUVTVFxufSk7XG5cbm5ldyBBcGlHYXRld2F5VG9EeW5hbW9EQihzdGFjaywgJ3Rlc3QtYXBpLWdhdGV3YXktZHluYW1vZGItYWRkaXRpb25hbC1yZXF1ZXN0LXRlbXBsYXRlcy1jdXN0b20tcmVzb3VyY2UtbmFtZScsIHtcbiAgZXhpc3RpbmdUYWJsZU9iaixcbiAgcmVzb3VyY2VOYW1lLFxuICBhZGRpdGlvbmFsUmVhZFJlcXVlc3RUZW1wbGF0ZXM6IHtcbiAgICAndGV4dC9wbGFpbic6IGB7IFxcXG4gICAgICBcIlRhYmxlTmFtZVwiOiBcIiR7ZXhpc3RpbmdUYWJsZU9iai50YWJsZU5hbWV9XCIsIFxcXG4gICAgICBcIktleUNvbmRpdGlvbkV4cHJlc3Npb25cIjogXCIke3BhcnRpdGlvbktleU5hbWV9ID0gOnYyIEFORCAke3NvcnRLZXlOYW1lfSA9IDp2MVwiLCBcXFxuICAgICAgXCJFeHByZXNzaW9uQXR0cmlidXRlVmFsdWVzXCI6IHsgXFxcbiAgICAgICAgXCI6djFcIjogeyBcXFxuICAgICAgICAgIFwiU1wiOiBcIiRpbnB1dC5wYXJhbXMoJyR7cmVzb3VyY2VOYW1lfScpXCIgXFxcbiAgICAgICAgfSwgXFxcbiAgICAgICAgXCI6djJcIjogeyBcXFxuICAgICAgICAgIFwiU1wiOiBcIk1ZX1ZBTFVFXCIgXFxcbiAgICAgICAgfSBcXFxuICAgICAgfSBcXFxuICAgIH1gLFxuICB9XG59KTtcblxuLy8gU3ludGhcbmFwcC5zeW50aCgpOyJdfQ==
@@ -4,19 +4,19 @@
4
4
  "existingtableE51CCC93": {
5
5
  "Type": "AWS::DynamoDB::Table",
6
6
  "Properties": {
7
- "KeySchema": [
7
+ "AttributeDefinitions": [
8
8
  {
9
9
  "AttributeName": "id",
10
- "KeyType": "HASH"
10
+ "AttributeType": "S"
11
11
  }
12
12
  ],
13
- "AttributeDefinitions": [
13
+ "BillingMode": "PAY_PER_REQUEST",
14
+ "KeySchema": [
14
15
  {
15
16
  "AttributeName": "id",
16
- "AttributeType": "S"
17
+ "KeyType": "HASH"
17
18
  }
18
19
  ],
19
- "BillingMode": "PAY_PER_REQUEST",
20
20
  "PointInTimeRecoverySpecification": {
21
21
  "PointInTimeRecoveryEnabled": true
22
22
  },
@@ -60,10 +60,10 @@
60
60
  "testapigatewaydynamodbadditionalrequesttemplatesRestApiDeployment0AE7C47741477f52c0bb6da128d2999e75c543fc": {
61
61
  "Type": "AWS::ApiGateway::Deployment",
62
62
  "Properties": {
63
+ "Description": "Automatically created by the RestApi construct",
63
64
  "RestApiId": {
64
65
  "Ref": "testapigatewaydynamodbadditionalrequesttemplatesRestApi03F6484C"
65
- },
66
- "Description": "Automatically created by the RestApi construct"
66
+ }
67
67
  },
68
68
  "DependsOn": [
69
69
  "testapigatewaydynamodbadditionalrequesttemplatesRestApiidGET05129D15",
@@ -83,9 +83,6 @@
83
83
  "testapigatewaydynamodbadditionalrequesttemplatesRestApiDeploymentStageprod33ED5D23": {
84
84
  "Type": "AWS::ApiGateway::Stage",
85
85
  "Properties": {
86
- "RestApiId": {
87
- "Ref": "testapigatewaydynamodbadditionalrequesttemplatesRestApi03F6484C"
88
- },
89
86
  "AccessLogSetting": {
90
87
  "DestinationArn": {
91
88
  "Fn::GetAtt": [
@@ -106,6 +103,9 @@
106
103
  "ResourcePath": "/*"
107
104
  }
108
105
  ],
106
+ "RestApiId": {
107
+ "Ref": "testapigatewaydynamodbadditionalrequesttemplatesRestApi03F6484C"
108
+ },
109
109
  "StageName": "prod",
110
110
  "TracingEnabled": true
111
111
  }
@@ -128,14 +128,8 @@
128
128
  "testapigatewaydynamodbadditionalrequesttemplatesRestApiidGET05129D15": {
129
129
  "Type": "AWS::ApiGateway::Method",
130
130
  "Properties": {
131
- "HttpMethod": "GET",
132
- "ResourceId": {
133
- "Ref": "testapigatewaydynamodbadditionalrequesttemplatesRestApiidA77CCE90"
134
- },
135
- "RestApiId": {
136
- "Ref": "testapigatewaydynamodbadditionalrequesttemplatesRestApi03F6484C"
137
- },
138
131
  "AuthorizationType": "AWS_IAM",
132
+ "HttpMethod": "GET",
139
133
  "Integration": {
140
134
  "Credentials": {
141
135
  "Fn::GetAtt": [
@@ -217,7 +211,13 @@
217
211
  },
218
212
  "StatusCode": "500"
219
213
  }
220
- ]
214
+ ],
215
+ "ResourceId": {
216
+ "Ref": "testapigatewaydynamodbadditionalrequesttemplatesRestApiidA77CCE90"
217
+ },
218
+ "RestApiId": {
219
+ "Ref": "testapigatewaydynamodbadditionalrequesttemplatesRestApi03F6484C"
220
+ }
221
221
  }
222
222
  },
223
223
  "testapigatewaydynamodbadditionalrequesttemplatesRestApiUsagePlan905D10C7": {
@@ -415,4 +415,4 @@
415
415
  ]
416
416
  }
417
417
  }
418
- }
418
+ }
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
6
+ * with the License. A copy of the License is located at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
11
+ * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
12
+ * and limitations under the License.
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ // Imports
16
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
17
+ const lib_1 = require("../lib");
18
+ const core_1 = require("@aws-solutions-constructs/core");
19
+ const dynamodb = require("aws-cdk-lib/aws-dynamodb");
20
+ // Setup
21
+ const app = new aws_cdk_lib_1.App();
22
+ const stack = new aws_cdk_lib_1.Stack(app, core_1.generateIntegStackName(__filename));
23
+ stack.templateOptions.description = 'Integration Test for aws-apigateway-dynamodb';
24
+ const partitionKeyName = 'id';
25
+ const existingTableObj = new dynamodb.Table(stack, 'existing-table', {
26
+ partitionKey: {
27
+ name: partitionKeyName,
28
+ type: dynamodb.AttributeType.STRING,
29
+ },
30
+ pointInTimeRecovery: true,
31
+ encryption: dynamodb.TableEncryption.AWS_MANAGED,
32
+ billingMode: dynamodb.BillingMode.PAY_PER_REQUEST
33
+ });
34
+ new lib_1.ApiGatewayToDynamoDB(stack, 'test-api-gateway-dynamodb-additional-request-templates', {
35
+ existingTableObj,
36
+ additionalReadRequestTemplates: {
37
+ 'text/plain': `{ \
38
+ "TableName": "${existingTableObj.tableName}", \
39
+ "KeyConditionExpression": "${partitionKeyName} = :v1", \
40
+ "ExpressionAttributeValues": { \
41
+ ":v1": { \
42
+ "S": "$input.params('${partitionKeyName}')" \
43
+ } \
44
+ } \
45
+ }`
46
+ }
47
+ });
48
+ // Synth
49
+ app.synth();
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWcuYXBpZGRiLWFkZGl0aW9uYWwtcmVxdWVzdC10ZW1wbGF0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbnRlZy5hcGlkZGItYWRkaXRpb25hbC1yZXF1ZXN0LXRlbXBsYXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7O0FBRUgsVUFBVTtBQUNWLDZDQUF5QztBQUN6QyxnQ0FBOEM7QUFDOUMseURBQXdFO0FBQ3hFLHFEQUFxRDtBQUVyRCxRQUFRO0FBQ1IsTUFBTSxHQUFHLEdBQUcsSUFBSSxpQkFBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxDQUFDLEdBQUcsRUFBRSw2QkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLEtBQUssQ0FBQyxlQUFlLENBQUMsV0FBVyxHQUFHLDhDQUE4QyxDQUFDO0FBRW5GLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0FBRTlCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRTtJQUNuRSxZQUFZLEVBQUU7UUFDWixJQUFJLEVBQUUsZ0JBQWdCO1FBQ3RCLElBQUksRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU07S0FDcEM7SUFDRCxtQkFBbUIsRUFBRSxJQUFJO0lBQ3pCLFVBQVUsRUFBRSxRQUFRLENBQUMsZUFBZSxDQUFDLFdBQVc7SUFDaEQsV0FBVyxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsZUFBZTtDQUNsRCxDQUFDLENBQUM7QUFFSCxJQUFJLDBCQUFvQixDQUFDLEtBQUssRUFBRSx3REFBd0QsRUFBRTtJQUN4RixnQkFBZ0I7SUFDaEIsOEJBQThCLEVBQUU7UUFDOUIsWUFBWSxFQUFFO3NCQUNJLGdCQUFnQixDQUFDLFNBQVM7bUNBQ2IsZ0JBQWdCOzs7aUNBR2xCLGdCQUFnQjs7O01BRzNDO0tBQ0g7Q0FDRixDQUFDLENBQUM7QUFFSCxRQUFRO0FBQ1IsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gSW1wb3J0c1xuaW1wb3J0IHsgQXBwLCBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQXBpR2F0ZXdheVRvRHluYW1vREIgfSBmcm9tIFwiLi4vbGliXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZUludGVnU3RhY2tOYW1lIH0gZnJvbSAnQGF3cy1zb2x1dGlvbnMtY29uc3RydWN0cy9jb3JlJztcbmltcG9ydCAqIGFzIGR5bmFtb2RiIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZHluYW1vZGJcIjtcblxuLy8gU2V0dXBcbmNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcbmNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKGFwcCwgZ2VuZXJhdGVJbnRlZ1N0YWNrTmFtZShfX2ZpbGVuYW1lKSk7XG5zdGFjay50ZW1wbGF0ZU9wdGlvbnMuZGVzY3JpcHRpb24gPSAnSW50ZWdyYXRpb24gVGVzdCBmb3IgYXdzLWFwaWdhdGV3YXktZHluYW1vZGInO1xuXG5jb25zdCBwYXJ0aXRpb25LZXlOYW1lID0gJ2lkJztcblxuY29uc3QgZXhpc3RpbmdUYWJsZU9iaiA9IG5ldyBkeW5hbW9kYi5UYWJsZShzdGFjaywgJ2V4aXN0aW5nLXRhYmxlJywge1xuICBwYXJ0aXRpb25LZXk6IHtcbiAgICBuYW1lOiBwYXJ0aXRpb25LZXlOYW1lLFxuICAgIHR5cGU6IGR5bmFtb2RiLkF0dHJpYnV0ZVR5cGUuU1RSSU5HLFxuICB9LFxuICBwb2ludEluVGltZVJlY292ZXJ5OiB0cnVlLFxuICBlbmNyeXB0aW9uOiBkeW5hbW9kYi5UYWJsZUVuY3J5cHRpb24uQVdTX01BTkFHRUQsXG4gIGJpbGxpbmdNb2RlOiBkeW5hbW9kYi5CaWxsaW5nTW9kZS5QQVlfUEVSX1JFUVVFU1Rcbn0pO1xuXG5uZXcgQXBpR2F0ZXdheVRvRHluYW1vREIoc3RhY2ssICd0ZXN0LWFwaS1nYXRld2F5LWR5bmFtb2RiLWFkZGl0aW9uYWwtcmVxdWVzdC10ZW1wbGF0ZXMnLCB7XG4gIGV4aXN0aW5nVGFibGVPYmosXG4gIGFkZGl0aW9uYWxSZWFkUmVxdWVzdFRlbXBsYXRlczoge1xuICAgICd0ZXh0L3BsYWluJzogYHsgXFxcbiAgICAgIFwiVGFibGVOYW1lXCI6IFwiJHtleGlzdGluZ1RhYmxlT2JqLnRhYmxlTmFtZX1cIiwgXFxcbiAgICAgIFwiS2V5Q29uZGl0aW9uRXhwcmVzc2lvblwiOiBcIiR7cGFydGl0aW9uS2V5TmFtZX0gPSA6djFcIiwgXFxcbiAgICAgIFwiRXhwcmVzc2lvbkF0dHJpYnV0ZVZhbHVlc1wiOiB7IFxcXG4gICAgICAgIFwiOnYxXCI6IHsgXFxcbiAgICAgICAgICBcIlNcIjogXCIkaW5wdXQucGFyYW1zKCcke3BhcnRpdGlvbktleU5hbWV9JylcIiBcXFxuICAgICAgICB9IFxcXG4gICAgICB9IFxcXG4gICAgfWBcbiAgfVxufSk7XG5cbi8vIFN5bnRoXG5hcHAuc3ludGgoKTsiXX0=
@@ -4,19 +4,19 @@
4
4
  "testapigatewaydynamodbDynamoTableEEE3F463": {
5
5
  "Type": "AWS::DynamoDB::Table",
6
6
  "Properties": {
7
- "KeySchema": [
7
+ "AttributeDefinitions": [
8
8
  {
9
9
  "AttributeName": "id",
10
- "KeyType": "HASH"
10
+ "AttributeType": "S"
11
11
  }
12
12
  ],
13
- "AttributeDefinitions": [
13
+ "BillingMode": "PAY_PER_REQUEST",
14
+ "KeySchema": [
14
15
  {
15
16
  "AttributeName": "id",
16
- "AttributeType": "S"
17
+ "KeyType": "HASH"
17
18
  }
18
19
  ],
19
- "BillingMode": "PAY_PER_REQUEST",
20
20
  "PointInTimeRecoverySpecification": {
21
21
  "PointInTimeRecoveryEnabled": true
22
22
  },
@@ -60,10 +60,10 @@
60
60
  "testapigatewaydynamodbRestApiDeployment1898674B00abb8cad507ed5309ac584f2dddf379": {
61
61
  "Type": "AWS::ApiGateway::Deployment",
62
62
  "Properties": {
63
+ "Description": "Automatically created by the RestApi construct",
63
64
  "RestApiId": {
64
65
  "Ref": "testapigatewaydynamodbRestApi80489300"
65
- },
66
- "Description": "Automatically created by the RestApi construct"
66
+ }
67
67
  },
68
68
  "DependsOn": [
69
69
  "testapigatewaydynamodbRestApiidDELETE6FC8A9F3",
@@ -86,9 +86,6 @@
86
86
  "testapigatewaydynamodbRestApiDeploymentStageprod2855C2C3": {
87
87
  "Type": "AWS::ApiGateway::Stage",
88
88
  "Properties": {
89
- "RestApiId": {
90
- "Ref": "testapigatewaydynamodbRestApi80489300"
91
- },
92
89
  "AccessLogSetting": {
93
90
  "DestinationArn": {
94
91
  "Fn::GetAtt": [
@@ -109,6 +106,9 @@
109
106
  "ResourcePath": "/*"
110
107
  }
111
108
  ],
109
+ "RestApiId": {
110
+ "Ref": "testapigatewaydynamodbRestApi80489300"
111
+ },
112
112
  "StageName": "prod",
113
113
  "TracingEnabled": true
114
114
  }
@@ -131,14 +131,8 @@
131
131
  "testapigatewaydynamodbRestApiidGET6196F638": {
132
132
  "Type": "AWS::ApiGateway::Method",
133
133
  "Properties": {
134
- "HttpMethod": "GET",
135
- "ResourceId": {
136
- "Ref": "testapigatewaydynamodbRestApiid78018D34"
137
- },
138
- "RestApiId": {
139
- "Ref": "testapigatewaydynamodbRestApi80489300"
140
- },
141
134
  "AuthorizationType": "AWS_IAM",
135
+ "HttpMethod": "GET",
142
136
  "Integration": {
143
137
  "Credentials": {
144
138
  "Fn::GetAtt": [
@@ -208,20 +202,20 @@
208
202
  },
209
203
  "StatusCode": "500"
210
204
  }
211
- ]
212
- }
213
- },
214
- "testapigatewaydynamodbRestApiidPUT1F965B23": {
215
- "Type": "AWS::ApiGateway::Method",
216
- "Properties": {
217
- "HttpMethod": "PUT",
205
+ ],
218
206
  "ResourceId": {
219
207
  "Ref": "testapigatewaydynamodbRestApiid78018D34"
220
208
  },
221
209
  "RestApiId": {
222
210
  "Ref": "testapigatewaydynamodbRestApi80489300"
223
- },
211
+ }
212
+ }
213
+ },
214
+ "testapigatewaydynamodbRestApiidPUT1F965B23": {
215
+ "Type": "AWS::ApiGateway::Method",
216
+ "Properties": {
224
217
  "AuthorizationType": "AWS_IAM",
218
+ "HttpMethod": "PUT",
225
219
  "Integration": {
226
220
  "Credentials": {
227
221
  "Fn::GetAtt": [
@@ -291,20 +285,20 @@
291
285
  },
292
286
  "StatusCode": "500"
293
287
  }
294
- ]
295
- }
296
- },
297
- "testapigatewaydynamodbRestApiidDELETE6FC8A9F3": {
298
- "Type": "AWS::ApiGateway::Method",
299
- "Properties": {
300
- "HttpMethod": "DELETE",
288
+ ],
301
289
  "ResourceId": {
302
290
  "Ref": "testapigatewaydynamodbRestApiid78018D34"
303
291
  },
304
292
  "RestApiId": {
305
293
  "Ref": "testapigatewaydynamodbRestApi80489300"
306
- },
294
+ }
295
+ }
296
+ },
297
+ "testapigatewaydynamodbRestApiidDELETE6FC8A9F3": {
298
+ "Type": "AWS::ApiGateway::Method",
299
+ "Properties": {
307
300
  "AuthorizationType": "AWS_IAM",
301
+ "HttpMethod": "DELETE",
308
302
  "Integration": {
309
303
  "Credentials": {
310
304
  "Fn::GetAtt": [
@@ -374,23 +368,20 @@
374
368
  },
375
369
  "StatusCode": "500"
376
370
  }
377
- ]
371
+ ],
372
+ "ResourceId": {
373
+ "Ref": "testapigatewaydynamodbRestApiid78018D34"
374
+ },
375
+ "RestApiId": {
376
+ "Ref": "testapigatewaydynamodbRestApi80489300"
377
+ }
378
378
  }
379
379
  },
380
380
  "testapigatewaydynamodbRestApiPOSTE99BD0BD": {
381
381
  "Type": "AWS::ApiGateway::Method",
382
382
  "Properties": {
383
- "HttpMethod": "POST",
384
- "ResourceId": {
385
- "Fn::GetAtt": [
386
- "testapigatewaydynamodbRestApi80489300",
387
- "RootResourceId"
388
- ]
389
- },
390
- "RestApiId": {
391
- "Ref": "testapigatewaydynamodbRestApi80489300"
392
- },
393
383
  "AuthorizationType": "AWS_IAM",
384
+ "HttpMethod": "POST",
394
385
  "Integration": {
395
386
  "Credentials": {
396
387
  "Fn::GetAtt": [
@@ -460,7 +451,16 @@
460
451
  },
461
452
  "StatusCode": "500"
462
453
  }
463
- ]
454
+ ],
455
+ "ResourceId": {
456
+ "Fn::GetAtt": [
457
+ "testapigatewaydynamodbRestApi80489300",
458
+ "RootResourceId"
459
+ ]
460
+ },
461
+ "RestApiId": {
462
+ "Ref": "testapigatewaydynamodbRestApi80489300"
463
+ }
464
464
  }
465
465
  },
466
466
  "testapigatewaydynamodbRestApiUsagePlan244F06C8": {
@@ -688,4 +688,4 @@
688
688
  ]
689
689
  }
690
690
  }
691
- }
691
+ }