Skip to content

Commit 4d3ec71

Browse files
fix(custom-resources): bad payload deserialization (#26797)
When `AwsCustomResource` was updated to use sdkv3, it wasn't updated to correctly handle the change in returned value when calling `lambda.invokeFunction`. The payload property was changed from type `Buffer` to `Uint8Array` to increase compatibility in browsers. Added a check in the `flatten` function used to format payloads in `AwsCustomResource`'s runtime to correctly decode values if they are a typed array or a buffer. Created a new integ test which fails to deploy if the payload property is not serialized correctly and able to be made a Cfn output. Fixes: #26730 ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
1 parent 728af19 commit 4d3ec71

File tree

187 files changed

+13825
-10656
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

187 files changed

+13825
-10656
lines changed
Original file line numberDiff line numberDiff line change
@@ -1538,6 +1538,88 @@ var require_eventStream = __commonJS({
15381538
}
15391539
});
15401540

1541+
// ../../../node_modules/@smithy/types/dist-cjs/extensions/checksum.js
1542+
var require_checksum2 = __commonJS({
1543+
"../../../node_modules/@smithy/types/dist-cjs/extensions/checksum.js"(exports) {
1544+
"use strict";
1545+
Object.defineProperty(exports, "__esModule", { value: true });
1546+
exports.resolveChecksumRuntimeConfig = exports.getChecksumConfiguration = exports.AlgorithmId = void 0;
1547+
var AlgorithmId;
1548+
(function(AlgorithmId2) {
1549+
AlgorithmId2["MD5"] = "md5";
1550+
AlgorithmId2["CRC32"] = "crc32";
1551+
AlgorithmId2["CRC32C"] = "crc32c";
1552+
AlgorithmId2["SHA1"] = "sha1";
1553+
AlgorithmId2["SHA256"] = "sha256";
1554+
})(AlgorithmId = exports.AlgorithmId || (exports.AlgorithmId = {}));
1555+
var getChecksumConfiguration = (runtimeConfig) => {
1556+
const checksumAlgorithms = [];
1557+
if (runtimeConfig.sha256 !== void 0) {
1558+
checksumAlgorithms.push({
1559+
algorithmId: () => AlgorithmId.SHA256,
1560+
checksumConstructor: () => runtimeConfig.sha256
1561+
});
1562+
}
1563+
if (runtimeConfig.md5 != void 0) {
1564+
checksumAlgorithms.push({
1565+
algorithmId: () => AlgorithmId.MD5,
1566+
checksumConstructor: () => runtimeConfig.md5
1567+
});
1568+
}
1569+
return {
1570+
_checksumAlgorithms: checksumAlgorithms,
1571+
addChecksumAlgorithm(algo) {
1572+
this._checksumAlgorithms.push(algo);
1573+
},
1574+
checksumAlgorithms() {
1575+
return this._checksumAlgorithms;
1576+
}
1577+
};
1578+
};
1579+
exports.getChecksumConfiguration = getChecksumConfiguration;
1580+
var resolveChecksumRuntimeConfig = (clientConfig) => {
1581+
const runtimeConfig = {};
1582+
clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => {
1583+
runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor();
1584+
});
1585+
return runtimeConfig;
1586+
};
1587+
exports.resolveChecksumRuntimeConfig = resolveChecksumRuntimeConfig;
1588+
}
1589+
});
1590+
1591+
// ../../../node_modules/@smithy/types/dist-cjs/extensions/defaultClientConfiguration.js
1592+
var require_defaultClientConfiguration = __commonJS({
1593+
"../../../node_modules/@smithy/types/dist-cjs/extensions/defaultClientConfiguration.js"(exports) {
1594+
"use strict";
1595+
Object.defineProperty(exports, "__esModule", { value: true });
1596+
exports.resolveDefaultRuntimeConfig = exports.getDefaultClientConfiguration = void 0;
1597+
var checksum_1 = require_checksum2();
1598+
var getDefaultClientConfiguration = (runtimeConfig) => {
1599+
return {
1600+
...(0, checksum_1.getChecksumConfiguration)(runtimeConfig)
1601+
};
1602+
};
1603+
exports.getDefaultClientConfiguration = getDefaultClientConfiguration;
1604+
var resolveDefaultRuntimeConfig = (config) => {
1605+
return {
1606+
...(0, checksum_1.resolveChecksumRuntimeConfig)(config)
1607+
};
1608+
};
1609+
exports.resolveDefaultRuntimeConfig = resolveDefaultRuntimeConfig;
1610+
}
1611+
});
1612+
1613+
// ../../../node_modules/@smithy/types/dist-cjs/extensions/index.js
1614+
var require_extensions = __commonJS({
1615+
"../../../node_modules/@smithy/types/dist-cjs/extensions/index.js"(exports) {
1616+
"use strict";
1617+
Object.defineProperty(exports, "__esModule", { value: true });
1618+
var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports));
1619+
tslib_1.__exportStar(require_defaultClientConfiguration(), exports);
1620+
}
1621+
});
1622+
15411623
// ../../../node_modules/@smithy/types/dist-cjs/http.js
15421624
var require_http = __commonJS({
15431625
"../../../node_modules/@smithy/types/dist-cjs/http.js"(exports) {
@@ -1756,6 +1838,7 @@ var require_dist_cjs = __commonJS({
17561838
tslib_1.__exportStar(require_endpoint(), exports);
17571839
tslib_1.__exportStar(require_endpoints(), exports);
17581840
tslib_1.__exportStar(require_eventStream(), exports);
1841+
tslib_1.__exportStar(require_extensions(), exports);
17591842
tslib_1.__exportStar(require_http(), exports);
17601843
tslib_1.__exportStar(require_identity2(), exports);
17611844
tslib_1.__exportStar(require_logger(), exports);
@@ -5224,7 +5307,7 @@ var require_blob_types = __commonJS({
52245307
});
52255308

52265309
// ../../../node_modules/@aws-sdk/types/dist-cjs/checksum.js
5227-
var require_checksum2 = __commonJS({
5310+
var require_checksum3 = __commonJS({
52285311
"../../../node_modules/@aws-sdk/types/dist-cjs/checksum.js"(exports) {
52295312
"use strict";
52305313
Object.defineProperty(exports, "__esModule", { value: true });
@@ -5518,7 +5601,7 @@ var require_dist_cjs17 = __commonJS({
55185601
tslib_1.__exportStar(require_abort2(), exports);
55195602
tslib_1.__exportStar(require_auth2(), exports);
55205603
tslib_1.__exportStar(require_blob_types(), exports);
5521-
tslib_1.__exportStar(require_checksum2(), exports);
5604+
tslib_1.__exportStar(require_checksum3(), exports);
55225605
tslib_1.__exportStar(require_client2(), exports);
55235606
tslib_1.__exportStar(require_command2(), exports);
55245607
tslib_1.__exportStar(require_connection2(), exports);
@@ -10396,7 +10479,7 @@ var require_package = __commonJS({
1039610479
module2.exports = {
1039710480
name: "@aws-sdk/client-sfn",
1039810481
description: "AWS SDK for JavaScript Sfn Client for Node.js, Browser and React Native",
10399-
version: "3.388.0",
10482+
version: "3.391.0",
1040010483
scripts: {
1040110484
build: "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'",
1040210485
"build:cjs": "tsc -p tsconfig.cjs.json",
@@ -10416,37 +10499,37 @@ var require_package = __commonJS({
1041610499
dependencies: {
1041710500
"@aws-crypto/sha256-browser": "3.0.0",
1041810501
"@aws-crypto/sha256-js": "3.0.0",
10419-
"@aws-sdk/client-sts": "3.388.0",
10420-
"@aws-sdk/credential-provider-node": "3.388.0",
10421-
"@aws-sdk/middleware-host-header": "3.387.0",
10422-
"@aws-sdk/middleware-logger": "3.387.0",
10423-
"@aws-sdk/middleware-recursion-detection": "3.387.0",
10424-
"@aws-sdk/middleware-signing": "3.387.0",
10425-
"@aws-sdk/middleware-user-agent": "3.387.0",
10426-
"@aws-sdk/types": "3.387.0",
10427-
"@aws-sdk/util-endpoints": "3.387.0",
10428-
"@aws-sdk/util-user-agent-browser": "3.387.0",
10429-
"@aws-sdk/util-user-agent-node": "3.387.0",
10430-
"@smithy/config-resolver": "^2.0.2",
10431-
"@smithy/fetch-http-handler": "^2.0.2",
10432-
"@smithy/hash-node": "^2.0.2",
10433-
"@smithy/invalid-dependency": "^2.0.2",
10434-
"@smithy/middleware-content-length": "^2.0.2",
10435-
"@smithy/middleware-endpoint": "^2.0.2",
10436-
"@smithy/middleware-retry": "^2.0.2",
10437-
"@smithy/middleware-serde": "^2.0.2",
10502+
"@aws-sdk/client-sts": "3.391.0",
10503+
"@aws-sdk/credential-provider-node": "3.391.0",
10504+
"@aws-sdk/middleware-host-header": "3.391.0",
10505+
"@aws-sdk/middleware-logger": "3.391.0",
10506+
"@aws-sdk/middleware-recursion-detection": "3.391.0",
10507+
"@aws-sdk/middleware-signing": "3.391.0",
10508+
"@aws-sdk/middleware-user-agent": "3.391.0",
10509+
"@aws-sdk/types": "3.391.0",
10510+
"@aws-sdk/util-endpoints": "3.391.0",
10511+
"@aws-sdk/util-user-agent-browser": "3.391.0",
10512+
"@aws-sdk/util-user-agent-node": "3.391.0",
10513+
"@smithy/config-resolver": "^2.0.3",
10514+
"@smithy/fetch-http-handler": "^2.0.3",
10515+
"@smithy/hash-node": "^2.0.3",
10516+
"@smithy/invalid-dependency": "^2.0.3",
10517+
"@smithy/middleware-content-length": "^2.0.3",
10518+
"@smithy/middleware-endpoint": "^2.0.3",
10519+
"@smithy/middleware-retry": "^2.0.3",
10520+
"@smithy/middleware-serde": "^2.0.3",
1043810521
"@smithy/middleware-stack": "^2.0.0",
10439-
"@smithy/node-config-provider": "^2.0.2",
10440-
"@smithy/node-http-handler": "^2.0.2",
10441-
"@smithy/protocol-http": "^2.0.2",
10442-
"@smithy/smithy-client": "^2.0.2",
10443-
"@smithy/types": "^2.1.0",
10444-
"@smithy/url-parser": "^2.0.2",
10522+
"@smithy/node-config-provider": "^2.0.3",
10523+
"@smithy/node-http-handler": "^2.0.3",
10524+
"@smithy/protocol-http": "^2.0.3",
10525+
"@smithy/smithy-client": "^2.0.3",
10526+
"@smithy/types": "^2.2.0",
10527+
"@smithy/url-parser": "^2.0.3",
1044510528
"@smithy/util-base64": "^2.0.0",
1044610529
"@smithy/util-body-length-browser": "^2.0.0",
1044710530
"@smithy/util-body-length-node": "^2.0.0",
10448-
"@smithy/util-defaults-mode-browser": "^2.0.2",
10449-
"@smithy/util-defaults-mode-node": "^2.0.2",
10531+
"@smithy/util-defaults-mode-browser": "^2.0.3",
10532+
"@smithy/util-defaults-mode-node": "^2.0.3",
1045010533
"@smithy/util-retry": "^2.0.0",
1045110534
"@smithy/util-utf8": "^2.0.0",
1045210535
tslib: "^2.5.0"
@@ -10535,7 +10618,7 @@ var require_package2 = __commonJS({
1053510618
module2.exports = {
1053610619
name: "@aws-sdk/client-sts",
1053710620
description: "AWS SDK for JavaScript Sts Client for Node.js, Browser and React Native",
10538-
version: "3.388.0",
10621+
version: "3.391.0",
1053910622
scripts: {
1054010623
build: "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'",
1054110624
"build:cjs": "tsc -p tsconfig.cjs.json",
@@ -10557,37 +10640,37 @@ var require_package2 = __commonJS({
1055710640
dependencies: {
1055810641
"@aws-crypto/sha256-browser": "3.0.0",
1055910642
"@aws-crypto/sha256-js": "3.0.0",
10560-
"@aws-sdk/credential-provider-node": "3.388.0",
10561-
"@aws-sdk/middleware-host-header": "3.387.0",
10562-
"@aws-sdk/middleware-logger": "3.387.0",
10563-
"@aws-sdk/middleware-recursion-detection": "3.387.0",
10564-
"@aws-sdk/middleware-sdk-sts": "3.387.0",
10565-
"@aws-sdk/middleware-signing": "3.387.0",
10566-
"@aws-sdk/middleware-user-agent": "3.387.0",
10567-
"@aws-sdk/types": "3.387.0",
10568-
"@aws-sdk/util-endpoints": "3.387.0",
10569-
"@aws-sdk/util-user-agent-browser": "3.387.0",
10570-
"@aws-sdk/util-user-agent-node": "3.387.0",
10571-
"@smithy/config-resolver": "^2.0.2",
10572-
"@smithy/fetch-http-handler": "^2.0.2",
10573-
"@smithy/hash-node": "^2.0.2",
10574-
"@smithy/invalid-dependency": "^2.0.2",
10575-
"@smithy/middleware-content-length": "^2.0.2",
10576-
"@smithy/middleware-endpoint": "^2.0.2",
10577-
"@smithy/middleware-retry": "^2.0.2",
10578-
"@smithy/middleware-serde": "^2.0.2",
10643+
"@aws-sdk/credential-provider-node": "3.391.0",
10644+
"@aws-sdk/middleware-host-header": "3.391.0",
10645+
"@aws-sdk/middleware-logger": "3.391.0",
10646+
"@aws-sdk/middleware-recursion-detection": "3.391.0",
10647+
"@aws-sdk/middleware-sdk-sts": "3.391.0",
10648+
"@aws-sdk/middleware-signing": "3.391.0",
10649+
"@aws-sdk/middleware-user-agent": "3.391.0",
10650+
"@aws-sdk/types": "3.391.0",
10651+
"@aws-sdk/util-endpoints": "3.391.0",
10652+
"@aws-sdk/util-user-agent-browser": "3.391.0",
10653+
"@aws-sdk/util-user-agent-node": "3.391.0",
10654+
"@smithy/config-resolver": "^2.0.3",
10655+
"@smithy/fetch-http-handler": "^2.0.3",
10656+
"@smithy/hash-node": "^2.0.3",
10657+
"@smithy/invalid-dependency": "^2.0.3",
10658+
"@smithy/middleware-content-length": "^2.0.3",
10659+
"@smithy/middleware-endpoint": "^2.0.3",
10660+
"@smithy/middleware-retry": "^2.0.3",
10661+
"@smithy/middleware-serde": "^2.0.3",
1057910662
"@smithy/middleware-stack": "^2.0.0",
10580-
"@smithy/node-config-provider": "^2.0.2",
10581-
"@smithy/node-http-handler": "^2.0.2",
10582-
"@smithy/protocol-http": "^2.0.2",
10583-
"@smithy/smithy-client": "^2.0.2",
10584-
"@smithy/types": "^2.1.0",
10585-
"@smithy/url-parser": "^2.0.2",
10663+
"@smithy/node-config-provider": "^2.0.3",
10664+
"@smithy/node-http-handler": "^2.0.3",
10665+
"@smithy/protocol-http": "^2.0.3",
10666+
"@smithy/smithy-client": "^2.0.3",
10667+
"@smithy/types": "^2.2.0",
10668+
"@smithy/url-parser": "^2.0.3",
1058610669
"@smithy/util-base64": "^2.0.0",
1058710670
"@smithy/util-body-length-browser": "^2.0.0",
1058810671
"@smithy/util-body-length-node": "^2.0.0",
10589-
"@smithy/util-defaults-mode-browser": "^2.0.2",
10590-
"@smithy/util-defaults-mode-node": "^2.0.2",
10672+
"@smithy/util-defaults-mode-browser": "^2.0.3",
10673+
"@smithy/util-defaults-mode-node": "^2.0.3",
1059110674
"@smithy/util-retry": "^2.0.0",
1059210675
"@smithy/util-utf8": "^2.0.0",
1059310676
"fast-xml-parser": "4.2.5",
@@ -14806,7 +14889,7 @@ var require_package3 = __commonJS({
1480614889
module2.exports = {
1480714890
name: "@aws-sdk/client-sso",
1480814891
description: "AWS SDK for JavaScript Sso Client for Node.js, Browser and React Native",
14809-
version: "3.387.0",
14892+
version: "3.391.0",
1481014893
scripts: {
1481114894
build: "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'",
1481214895
"build:cjs": "tsc -p tsconfig.cjs.json",
@@ -14826,34 +14909,34 @@ var require_package3 = __commonJS({
1482614909
dependencies: {
1482714910
"@aws-crypto/sha256-browser": "3.0.0",
1482814911
"@aws-crypto/sha256-js": "3.0.0",
14829-
"@aws-sdk/middleware-host-header": "3.387.0",
14830-
"@aws-sdk/middleware-logger": "3.387.0",
14831-
"@aws-sdk/middleware-recursion-detection": "3.387.0",
14832-
"@aws-sdk/middleware-user-agent": "3.387.0",
14833-
"@aws-sdk/types": "3.387.0",
14834-
"@aws-sdk/util-endpoints": "3.387.0",
14835-
"@aws-sdk/util-user-agent-browser": "3.387.0",
14836-
"@aws-sdk/util-user-agent-node": "3.387.0",
14837-
"@smithy/config-resolver": "^2.0.2",
14838-
"@smithy/fetch-http-handler": "^2.0.2",
14839-
"@smithy/hash-node": "^2.0.2",
14840-
"@smithy/invalid-dependency": "^2.0.2",
14841-
"@smithy/middleware-content-length": "^2.0.2",
14842-
"@smithy/middleware-endpoint": "^2.0.2",
14843-
"@smithy/middleware-retry": "^2.0.2",
14844-
"@smithy/middleware-serde": "^2.0.2",
14912+
"@aws-sdk/middleware-host-header": "3.391.0",
14913+
"@aws-sdk/middleware-logger": "3.391.0",
14914+
"@aws-sdk/middleware-recursion-detection": "3.391.0",
14915+
"@aws-sdk/middleware-user-agent": "3.391.0",
14916+
"@aws-sdk/types": "3.391.0",
14917+
"@aws-sdk/util-endpoints": "3.391.0",
14918+
"@aws-sdk/util-user-agent-browser": "3.391.0",
14919+
"@aws-sdk/util-user-agent-node": "3.391.0",
14920+
"@smithy/config-resolver": "^2.0.3",
14921+
"@smithy/fetch-http-handler": "^2.0.3",
14922+
"@smithy/hash-node": "^2.0.3",
14923+
"@smithy/invalid-dependency": "^2.0.3",
14924+
"@smithy/middleware-content-length": "^2.0.3",
14925+
"@smithy/middleware-endpoint": "^2.0.3",
14926+
"@smithy/middleware-retry": "^2.0.3",
14927+
"@smithy/middleware-serde": "^2.0.3",
1484514928
"@smithy/middleware-stack": "^2.0.0",
14846-
"@smithy/node-config-provider": "^2.0.2",
14847-
"@smithy/node-http-handler": "^2.0.2",
14848-
"@smithy/protocol-http": "^2.0.2",
14849-
"@smithy/smithy-client": "^2.0.2",
14850-
"@smithy/types": "^2.1.0",
14851-
"@smithy/url-parser": "^2.0.2",
14929+
"@smithy/node-config-provider": "^2.0.3",
14930+
"@smithy/node-http-handler": "^2.0.3",
14931+
"@smithy/protocol-http": "^2.0.3",
14932+
"@smithy/smithy-client": "^2.0.3",
14933+
"@smithy/types": "^2.2.0",
14934+
"@smithy/url-parser": "^2.0.3",
1485214935
"@smithy/util-base64": "^2.0.0",
1485314936
"@smithy/util-body-length-browser": "^2.0.0",
1485414937
"@smithy/util-body-length-node": "^2.0.0",
14855-
"@smithy/util-defaults-mode-browser": "^2.0.2",
14856-
"@smithy/util-defaults-mode-node": "^2.0.2",
14938+
"@smithy/util-defaults-mode-browser": "^2.0.3",
14939+
"@smithy/util-defaults-mode-node": "^2.0.3",
1485714940
"@smithy/util-retry": "^2.0.0",
1485814941
"@smithy/util-utf8": "^2.0.0",
1485914942
tslib: "^2.5.0"
Original file line numberDiff line numberDiff line change
@@ -561,15 +561,25 @@ var import_sdk_v2_to_v3_adapter = __toESM(require_lib());
561561

562562
// custom-resources/lib/aws-custom-resource/runtime/shared.ts
563563
var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:";
564+
var decoder = new TextDecoder();
565+
function parseField(value) {
566+
if (Buffer.isBuffer(value)) {
567+
return value.toString("utf8");
568+
} else if (ArrayBuffer.isView(value)) {
569+
return decoder.decode(value.buffer);
570+
}
571+
return value;
572+
}
564573
function flatten(object) {
574+
function _flatten(child, path = []) {
575+
return [].concat(...Object.keys(child).map((key) => {
576+
const childKey = parseField(child[key]);
577+
return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey };
578+
}));
579+
}
565580
return Object.assign(
566581
{},
567-
...function _flatten(child, path = []) {
568-
return [].concat(...Object.keys(child).map((key) => {
569-
const childKey = Buffer.isBuffer(child[key]) ? child[key].toString("utf8") : child[key];
570-
return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey };
571-
}));
572-
}(object)
582+
..._flatten(object)
573583
);
574584
}
575585
function decodeSpecialValues(object, physicalResourceId) {

0 commit comments

Comments
 (0)