@aws-sdk/middleware-sdk-rds 3.25.0 → 3.32.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.
- package/CHANGELOG.md +38 -0
- package/dist/cjs/index.js +11 -22
- package/dist/es/index.js +24 -42
- package/package.json +6 -7
- package/src/index.ts +13 -24
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,44 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [3.32.0](https://github.com/aws/aws-sdk-js-v3/compare/v3.31.0...v3.32.0) (2021-09-17)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @aws-sdk/middleware-sdk-rds
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# [3.31.0](https://github.com/aws/aws-sdk-js-v3/compare/v3.30.0...v3.31.0) (2021-09-11)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* **middleware-sdk-rds:** stop throw when source id key is optional ([#2770](https://github.com/aws/aws-sdk-js-v3/issues/2770)) ([299cbbb](https://github.com/aws/aws-sdk-js-v3/commit/299cbbbef934380cdf56c668cc8cd7eebb7f73e5))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
# [3.30.0](https://github.com/aws/aws-sdk-js-v3/compare/v3.29.0...v3.30.0) (2021-09-07)
|
|
26
|
+
|
|
27
|
+
**Note:** Version bump only for package @aws-sdk/middleware-sdk-rds
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
# [3.29.0](https://github.com/aws/aws-sdk-js-v3/compare/v3.28.0...v3.29.0) (2021-09-02)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
### Bug Fixes
|
|
37
|
+
|
|
38
|
+
* **middleware-sdk-rds:** double encoding the presigned url ([#2711](https://github.com/aws/aws-sdk-js-v3/issues/2711)) ([8a271be](https://github.com/aws/aws-sdk-js-v3/commit/8a271be6ac94080010aa4c3567b6770a2eee5547))
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
6
44
|
# [3.25.0](https://github.com/aws/aws-sdk-js-v3/compare/v3.24.0...v3.25.0) (2021-08-05)
|
|
7
45
|
|
|
8
46
|
**Note:** Version bump only for package @aws-sdk/middleware-sdk-rds
|
package/dist/cjs/index.js
CHANGED
|
@@ -4,19 +4,13 @@ exports.getCrossRegionPresignedUrlPlugin = exports.crossRegionPresignedUrlMiddle
|
|
|
4
4
|
const protocol_http_1 = require("@aws-sdk/protocol-http");
|
|
5
5
|
const signature_v4_1 = require("@aws-sdk/signature-v4");
|
|
6
6
|
const util_format_url_1 = require("@aws-sdk/util-format-url");
|
|
7
|
-
const util_uri_escape_1 = require("@aws-sdk/util-uri-escape");
|
|
8
7
|
const regARN = /arn:[\w+=/,.@-]+:[\w+=/,.@-]+:([\w+=/,.@-]*)?:[0-9]+:[\w+=/,.@-]+(:[\w+=/,.@-]+)?(:[\w+=/,.@-]+)?/;
|
|
9
|
-
const sourceIds = [
|
|
10
|
-
"SourceDBSnapshotIdentifier",
|
|
11
|
-
"SourceDBInstanceIdentifier",
|
|
12
|
-
"ReplicationSourceIdentifier",
|
|
13
|
-
"SourceDBClusterSnapshotIdentifier",
|
|
14
|
-
];
|
|
15
8
|
const sourceIdToCommandKeyMap = {
|
|
16
9
|
SourceDBSnapshotIdentifier: "CopyDBSnapshot",
|
|
17
10
|
SourceDBInstanceIdentifier: "CreateDBInstanceReadReplica",
|
|
18
11
|
ReplicationSourceIdentifier: "CreateDBCluster",
|
|
19
12
|
SourceDBClusterSnapshotIdentifier: "CopyDBClusterSnapshot",
|
|
13
|
+
SourceDBInstanceArn: "StartDBInstanceAutomatedBackupsReplication",
|
|
20
14
|
};
|
|
21
15
|
const version = "2014-10-31";
|
|
22
16
|
/**
|
|
@@ -27,18 +21,13 @@ function crossRegionPresignedUrlMiddleware(options) {
|
|
|
27
21
|
return (next) => async (args) => {
|
|
28
22
|
const { input } = args;
|
|
29
23
|
const region = await options.region();
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
if (!sourceId) {
|
|
38
|
-
throw new Error("Source identifier key not set");
|
|
39
|
-
}
|
|
40
|
-
if (!input.PreSignedUrl && isARN(input[sourceId]) && region !== getEndpointFromARN(input[sourceId])) {
|
|
41
|
-
const sourceRegion = getEndpointFromARN(input[sourceId]);
|
|
24
|
+
const sourceIdKey = Object.keys(sourceIdToCommandKeyMap).filter((sourceKeyId) => input.hasOwnProperty(sourceKeyId))[0];
|
|
25
|
+
// Source id is optional.
|
|
26
|
+
if (!sourceIdKey)
|
|
27
|
+
return next(args);
|
|
28
|
+
const command = sourceIdToCommandKeyMap[sourceIdKey];
|
|
29
|
+
if (!input.PreSignedUrl && isARN(input[sourceIdKey]) && region !== getEndpointFromARN(input[sourceIdKey])) {
|
|
30
|
+
const sourceRegion = getEndpointFromARN(input[sourceIdKey]);
|
|
42
31
|
const resolvedEndpoint = await options.endpoint();
|
|
43
32
|
resolvedEndpoint.hostname = `rds.${sourceRegion}.amazonaws.com`;
|
|
44
33
|
const request = new protocol_http_1.HttpRequest({
|
|
@@ -52,7 +41,7 @@ function crossRegionPresignedUrlMiddleware(options) {
|
|
|
52
41
|
Version: version,
|
|
53
42
|
KmsKeyId: input.KmsKeyId,
|
|
54
43
|
DestinationRegion: region,
|
|
55
|
-
[
|
|
44
|
+
[sourceIdKey]: input[sourceIdKey],
|
|
56
45
|
},
|
|
57
46
|
});
|
|
58
47
|
const signer = new signature_v4_1.SignatureV4({
|
|
@@ -69,7 +58,7 @@ function crossRegionPresignedUrlMiddleware(options) {
|
|
|
69
58
|
...args,
|
|
70
59
|
input: {
|
|
71
60
|
...args.input,
|
|
72
|
-
PreSignedUrl:
|
|
61
|
+
PreSignedUrl: util_format_url_1.formatUrl(presignedRequest),
|
|
73
62
|
},
|
|
74
63
|
};
|
|
75
64
|
}
|
|
@@ -101,4 +90,4 @@ function getEndpointFromARN(arn) {
|
|
|
101
90
|
}
|
|
102
91
|
return arnArr[3];
|
|
103
92
|
}
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMERBQXFEO0FBQ3JELHdEQUFvRDtBQWNwRCw4REFBcUQ7QUFFckQsTUFBTSxNQUFNLEdBQUcsbUdBQW1HLENBQUM7QUFFbkgsTUFBTSx1QkFBdUIsR0FBOEI7SUFDekQsMEJBQTBCLEVBQUUsZ0JBQWdCO0lBQzVDLDBCQUEwQixFQUFFLDZCQUE2QjtJQUN6RCwyQkFBMkIsRUFBRSxpQkFBaUI7SUFDOUMsaUNBQWlDLEVBQUUsdUJBQXVCO0lBQzFELG1CQUFtQixFQUFFLDRDQUE0QztDQUNsRSxDQUFDO0FBRUYsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDO0FBVTdCOzs7R0FHRztBQUNILFNBQWdCLGlDQUFpQyxDQUFDLE9BQTJCO0lBQzNFLE9BQU8sQ0FBZ0MsSUFBb0MsRUFBa0MsRUFBRSxDQUM3RyxLQUFLLEVBQUUsSUFBcUMsRUFBNEMsRUFBRTtRQUN4RixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3RDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUM5RSxLQUFLLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUNsQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ0wseUJBQXlCO1FBQ3pCLElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFcEMsTUFBTSxPQUFPLEdBQUcsdUJBQXVCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMs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Y29sLWh0dHBcIjtcbmltcG9ydCB7IFNpZ25hdHVyZVY0IH0gZnJvbSBcIkBhd3Mtc2RrL3NpZ25hdHVyZS12NFwiO1xuaW1wb3J0IHtcbiAgQ3JlZGVudGlhbHMsXG4gIEVuZHBvaW50LFxuICBIYXNoQ29uc3RydWN0b3IsXG4gIEluaXRpYWxpemVIYW5kbGVyLFxuICBJbml0aWFsaXplSGFuZGxlckFyZ3VtZW50cyxcbiAgSW5pdGlhbGl6ZUhhbmRsZXJPcHRpb25zLFxuICBJbml0aWFsaXplSGFuZGxlck91dHB1dCxcbiAgSW5pdGlhbGl6ZU1pZGRsZXdhcmUsXG4gIE1ldGFkYXRhQmVhcmVyLFxuICBQbHVnZ2FibGUsXG4gIFByb3ZpZGVyLFxufSBmcm9tIFwiQGF3cy1zZGsvdHlwZXNcIjtcbmltcG9ydCB7IGZvcm1hdFVybCB9IGZyb20gXCJAYXdzLXNkay91dGlsLWZvcm1hdC11cmxcIjtcblxuY29uc3QgcmVnQVJOID0gL2FybjpbXFx3Kz0vLC5ALV0rOltcXHcrPS8sLkAtXSs6KFtcXHcrPS8sLkAtXSopPzpbMC05XSs6W1xcdys9LywuQC1dKyg6W1xcdys9LywuQC1dKyk/KDpbXFx3Kz0vLC5ALV0rKT8vO1xuXG5jb25zdCBzb3VyY2VJZFRvQ29tbWFuZEtleU1hcDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgU291cmNlREJTbmFwc2hvdElkZW50aWZpZXI6IFwiQ29weURCU25hcHNob3RcIixcbiAgU291cmNlREJJbnN0YW5jZUlkZW50aWZpZXI6IFwiQ3JlYXRlREJJbnN0YW5jZVJlYWRSZXBsaWNhXCIsXG4gIFJlcGxpY2F0aW9uU291cmNlSWRlbnRpZmllcjogXCJDcmVhdGVEQkNsdXN0ZXJcIiwgLy8gVGhpcyBrZXkgaXMgb3B0aW9uYWwuXG4gIFNvdXJjZURCQ2x1c3RlclNuYXBzaG90SWRlbnRpZmllcjogXCJDb3B5REJDbHVzdGVyU25hcHNob3RcIixcbiAgU291cmNlREJJbnN0YW5jZUFybjogXCJTdGFydERCSW5zdGFuY2VBdXRvbWF0ZWRCYWNrdXBzUmVwbGljYXRpb25cIixcbn07XG5cbmNvbnN0IHZlcnNpb24gPSBcIjIwMTQtMTAtMzFcIjtcblxuaW50ZXJmYWNlIFByZXZpb3VzbHlSZXNvbHZlZCB7XG4gIGNyZWRlbnRpYWxzOiBQcm92aWRlcjxDcmVkZW50aWFscz47XG4gIGVuZHBvaW50OiBQcm92aWRlcjxFbmRwb2ludD47XG4gIHJlZ2lvbjogUHJvdmlkZXI8c3RyaW5nPjtcbiAgc2hhMjU2OiBIYXNoQ29uc3RydWN0b3I7XG4gIHNpZ25pbmdFc2NhcGVQYXRoOiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbmZpZyBvZiB0aGUgbWlkZGxld2FyZSB0byBhdXRvbWF0aWNhbGx5IGFkZCBwcmVzaWduZWQgVVJMIHRvIHJlcXVlc3QuXG4gKiBUaGUgcHJlc2lnbmVkIFVSTCBpcyBnZW5lcmF0ZWQgYnkgc2lnVjRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyb3NzUmVnaW9uUHJlc2lnbmVkVXJsTWlkZGxld2FyZShvcHRpb25zOiBQcmV2aW91c2x5UmVzb2x2ZWQpOiBJbml0aWFsaXplTWlkZGxld2FyZTxhbnksIGFueT4ge1xuICByZXR1cm4gPE91dHB1dCBleHRlbmRzIE1ldGFkYXRhQmVhcmVyPihuZXh0OiBJbml0aWFsaXplSGFuZGxlcjxhbnksIE91dHB1dD4pOiBJbml0aWFsaXplSGFuZGxlcjxhbnksIE91dHB1dD4gPT5cbiAgICBhc3luYyAoYXJnczogSW5pdGlhbGl6ZUhhbmRsZXJBcmd1bWVudHM8YW55Pik6IFByb21pc2U8SW5pdGlhbGl6ZUhhbmRsZXJPdXRwdXQ8T3V0cHV0Pj4gPT4ge1xuICAgICAgY29uc3QgeyBpbnB1dCB9ID0gYXJncztcbiAgICAgIGNvbnN0IHJlZ2lvbiA9IGF3YWl0IG9wdGlvbnMucmVnaW9uKCk7XG4gICAgICBjb25zdCBzb3VyY2VJZEtleSA9IE9iamVjdC5rZXlzKHNvdXJjZUlkVG9Db21tYW5kS2V5TWFwKS5maWx0ZXIoKHNvdXJjZUtleUlkKSA9PlxuICAgICAgICBpbnB1dC5oYXNPd25Qcm9wZXJ0eShzb3VyY2VLZXlJZClcbiAgICAgIClbMF07XG4gICAgICAvLyBTb3VyY2UgaWQgaXMgb3B0aW9uYWwuXG4gICAgICBpZiAoIXNvdXJjZUlkS2V5KSByZXR1cm4gbmV4dChhcmdzKTtcblxuICAgICAgY29uc3QgY29tbWFuZCA9IHNvdXJjZUlkVG9Db21tYW5kS2V5TWFwW3NvdXJjZUlkS2V5XTtcbiAgICAgIGlmICghaW5wdXQuUHJlU2lnbmVkVXJsICYmIGlzQVJOKGlucHV0W3NvdXJjZUlkS2V5XSkgJiYgcmVnaW9uICE9PSBnZXRFbmRwb2ludEZyb21BUk4oaW5wdXRbc291cmNlSWRLZXldKSkge1xuICAgICAgICBjb25zdCBzb3VyY2VSZWdpb24gPSBnZXRFbmRwb2ludEZyb21BUk4oaW5wdXRbc291cmNlSWRLZXldKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRFbmRwb2ludCA9IGF3YWl0IG9wdGlvbnMuZW5kcG9pbnQoKTtcbiAgICAgICAgcmVzb2x2ZWRFbmRwb2ludC5ob3N0bmFtZSA9IGByZHMuJHtzb3VyY2VSZWdpb259LmFtYXpvbmF3cy5jb21gO1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gbmV3IEh0dHBSZXF1ZXN0KHtcbiAgICAgICAgICAuLi5yZXNvbHZlZEVuZHBvaW50LFxuICAgICAgICAgIHByb3RvY29sOiBcImh0dHBzXCIsXG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgaG9zdDogcmVzb2x2ZWRFbmRwb2ludC5ob3N0bmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHF1ZXJ5OiB7XG4gICAgICAgICAgICBBY3Rpb246IGNvbW1hbmQsXG4gICAgICAgICAgICBWZXJzaW9uOiB2ZXJzaW9uLFxuICAgICAgICAgICAgS21zS2V5SWQ6IGlucHV0Lkttc0tleUlkLFxuICAgICAgICAgICAgRGVzdGluYXRpb25SZWdpb246IHJlZ2lvbixcbiAgICAgICAgICAgIFtzb3VyY2VJZEtleV06IGlucHV0W3NvdXJjZUlkS2V5XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgc2lnbmVyID0gbmV3IFNpZ25hdHVyZVY0KHtcbiAgICAgICAgICBjcmVkZW50aWFsczogb3B0aW9ucy5jcmVkZW50aWFscyxcbiAgICAgICAgICByZWdpb246IHNvdXJjZVJlZ2lvbixcbiAgICAgICAgICBzZXJ2aWNlOiBcInJkc1wiLFxuICAgICAgICAgIHNoYTI1Njogb3B0aW9ucy5zaGEyNTYsXG4gICAgICAgICAgdXJpRXNjYXBlUGF0aDogb3B0aW9ucy5zaWduaW5nRXNjYXBlUGF0aCxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHByZXNpZ25lZFJlcXVlc3QgPSBhd2FpdCBzaWduZXIucHJlc2lnbihyZXF1ZXN0LCB7XG4gICAgICAgICAgZXhwaXJlc0luOiAzNjAwLFxuICAgICAgICB9KTtcbiAgICAgICAgYXJncyA9IHtcbiAgICAgICAgICAuLi5hcmdzLFxuICAgICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgICAuLi5hcmdzLmlucHV0LFxuICAgICAgICAgICAgUHJlU2lnbmVkVXJsOiBmb3JtYXRVcmwocHJlc2lnbmVkUmVxdWVzdCksXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXh0KGFyZ3MpO1xuICAgIH07XG59XG5cbmV4cG9ydCBjb25zdCBjcm9zc1JlZ2lvblByZXNpZ25lZFVybE1pZGRsZXdhcmVPcHRpb25zOiBJbml0aWFsaXplSGFuZGxlck9wdGlvbnMgPSB7XG4gIHN0ZXA6IFwiaW5pdGlhbGl6ZVwiLFxuICB0YWdzOiBbXCJDUk9TU19SRUdJT05fUFJFU0lHTkVEX1VSTFwiXSxcbiAgbmFtZTogXCJjcm9zc1JlZ2lvblByZXNpZ25lZFVybE1pZGRsZXdhcmVcIixcbiAgb3ZlcnJpZGU6IHRydWUsXG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q3Jvc3NSZWdpb25QcmVzaWduZWRVcmxQbHVnaW4gPSAoY29uZmlnOiBQcmV2aW91c2x5UmVzb2x2ZWQpOiBQbHVnZ2FibGU8YW55LCBhbnk+ID0+ICh7XG4gIGFwcGx5VG9TdGFjazogKGNsaWVudFN0YWNrKSA9PiB7XG4gICAgY2xpZW50U3RhY2suYWRkKGNyb3NzUmVnaW9uUHJlc2lnbmVkVXJsTWlkZGxld2FyZShjb25maWcpLCBjcm9zc1JlZ2lvblByZXNpZ25lZFVybE1pZGRsZXdhcmVPcHRpb25zKTtcbiAgfSxcbn0pO1xuXG5mdW5jdGlvbiBpc0FSTihpZDogc3RyaW5nIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gIGlmICghaWQpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIHJlZ0FSTi50ZXN0KGlkKTtcbn1cblxuZnVuY3Rpb24gZ2V0RW5kcG9pbnRGcm9tQVJOKGFybjogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgYXJuQXJyID0gYXJuLnNwbGl0KFwiOlwiKTtcbiAgaWYgKGFybkFyci5sZW5ndGggPCA0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgaW5mZXIgZW5kcG9pbnQgZnJvbSAnJHthcm59J2ApO1xuICB9XG4gIHJldHVybiBhcm5BcnJbM107XG59XG4iXX0=
|
package/dist/es/index.js
CHANGED
|
@@ -1,20 +1,14 @@
|
|
|
1
|
-
import { __assign, __awaiter, __generator
|
|
1
|
+
import { __assign, __awaiter, __generator } from "tslib";
|
|
2
2
|
import { HttpRequest } from "@aws-sdk/protocol-http";
|
|
3
3
|
import { SignatureV4 } from "@aws-sdk/signature-v4";
|
|
4
4
|
import { formatUrl } from "@aws-sdk/util-format-url";
|
|
5
|
-
import { escapeUri } from "@aws-sdk/util-uri-escape";
|
|
6
5
|
var regARN = /arn:[\w+=/,.@-]+:[\w+=/,.@-]+:([\w+=/,.@-]*)?:[0-9]+:[\w+=/,.@-]+(:[\w+=/,.@-]+)?(:[\w+=/,.@-]+)?/;
|
|
7
|
-
var sourceIds = [
|
|
8
|
-
"SourceDBSnapshotIdentifier",
|
|
9
|
-
"SourceDBInstanceIdentifier",
|
|
10
|
-
"ReplicationSourceIdentifier",
|
|
11
|
-
"SourceDBClusterSnapshotIdentifier",
|
|
12
|
-
];
|
|
13
6
|
var sourceIdToCommandKeyMap = {
|
|
14
7
|
SourceDBSnapshotIdentifier: "CopyDBSnapshot",
|
|
15
8
|
SourceDBInstanceIdentifier: "CreateDBInstanceReadReplica",
|
|
16
9
|
ReplicationSourceIdentifier: "CreateDBCluster",
|
|
17
10
|
SourceDBClusterSnapshotIdentifier: "CopyDBClusterSnapshot",
|
|
11
|
+
SourceDBInstanceArn: "StartDBInstanceAutomatedBackupsReplication",
|
|
18
12
|
};
|
|
19
13
|
var version = "2014-10-31";
|
|
20
14
|
/**
|
|
@@ -25,50 +19,38 @@ export function crossRegionPresignedUrlMiddleware(options) {
|
|
|
25
19
|
var _this = this;
|
|
26
20
|
return function (next) {
|
|
27
21
|
return function (args) { return __awaiter(_this, void 0, void 0, function () {
|
|
28
|
-
var input, region,
|
|
29
|
-
var
|
|
30
|
-
return __generator(this, function (
|
|
31
|
-
switch (
|
|
22
|
+
var input, region, sourceIdKey, command, sourceRegion, resolvedEndpoint, request, signer, presignedRequest;
|
|
23
|
+
var _a;
|
|
24
|
+
return __generator(this, function (_b) {
|
|
25
|
+
switch (_b.label) {
|
|
32
26
|
case 0:
|
|
33
27
|
input = args.input;
|
|
34
28
|
return [4 /*yield*/, options.region()];
|
|
35
29
|
case 1:
|
|
36
|
-
region =
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
47
|
-
finally {
|
|
48
|
-
try {
|
|
49
|
-
if (sourceIds_1_1 && !sourceIds_1_1.done && (_a = sourceIds_1.return)) _a.call(sourceIds_1);
|
|
50
|
-
}
|
|
51
|
-
finally { if (e_1) throw e_1.error; }
|
|
52
|
-
}
|
|
53
|
-
if (!sourceId) {
|
|
54
|
-
throw new Error("Source identifier key not set");
|
|
55
|
-
}
|
|
56
|
-
if (!(!input.PreSignedUrl && isARN(input[sourceId]) && region !== getEndpointFromARN(input[sourceId]))) return [3 /*break*/, 4];
|
|
57
|
-
sourceRegion = getEndpointFromARN(input[sourceId]);
|
|
30
|
+
region = _b.sent();
|
|
31
|
+
sourceIdKey = Object.keys(sourceIdToCommandKeyMap).filter(function (sourceKeyId) {
|
|
32
|
+
return input.hasOwnProperty(sourceKeyId);
|
|
33
|
+
})[0];
|
|
34
|
+
// Source id is optional.
|
|
35
|
+
if (!sourceIdKey)
|
|
36
|
+
return [2 /*return*/, next(args)];
|
|
37
|
+
command = sourceIdToCommandKeyMap[sourceIdKey];
|
|
38
|
+
if (!(!input.PreSignedUrl && isARN(input[sourceIdKey]) && region !== getEndpointFromARN(input[sourceIdKey]))) return [3 /*break*/, 4];
|
|
39
|
+
sourceRegion = getEndpointFromARN(input[sourceIdKey]);
|
|
58
40
|
return [4 /*yield*/, options.endpoint()];
|
|
59
41
|
case 2:
|
|
60
|
-
resolvedEndpoint =
|
|
42
|
+
resolvedEndpoint = _b.sent();
|
|
61
43
|
resolvedEndpoint.hostname = "rds." + sourceRegion + ".amazonaws.com";
|
|
62
44
|
request = new HttpRequest(__assign(__assign({}, resolvedEndpoint), { protocol: "https", headers: {
|
|
63
45
|
host: resolvedEndpoint.hostname,
|
|
64
|
-
}, query: (
|
|
46
|
+
}, query: (_a = {
|
|
65
47
|
Action: command,
|
|
66
48
|
Version: version,
|
|
67
49
|
KmsKeyId: input.KmsKeyId,
|
|
68
50
|
DestinationRegion: region
|
|
69
51
|
},
|
|
70
|
-
|
|
71
|
-
|
|
52
|
+
_a[sourceIdKey] = input[sourceIdKey],
|
|
53
|
+
_a) }));
|
|
72
54
|
signer = new SignatureV4({
|
|
73
55
|
credentials: options.credentials,
|
|
74
56
|
region: sourceRegion,
|
|
@@ -80,9 +62,9 @@ export function crossRegionPresignedUrlMiddleware(options) {
|
|
|
80
62
|
expiresIn: 3600,
|
|
81
63
|
})];
|
|
82
64
|
case 3:
|
|
83
|
-
presignedRequest =
|
|
84
|
-
args = __assign(__assign({}, args), { input: __assign(__assign({}, args.input), { PreSignedUrl:
|
|
85
|
-
|
|
65
|
+
presignedRequest = _b.sent();
|
|
66
|
+
args = __assign(__assign({}, args), { input: __assign(__assign({}, args.input), { PreSignedUrl: formatUrl(presignedRequest) }) });
|
|
67
|
+
_b.label = 4;
|
|
86
68
|
case 4: return [2 /*return*/, next(args)];
|
|
87
69
|
}
|
|
88
70
|
});
|
|
@@ -112,4 +94,4 @@ function getEndpointFromARN(arn) {
|
|
|
112
94
|
}
|
|
113
95
|
return arnArr[3];
|
|
114
96
|
}
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFjcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJELElBQU0sTUFBTSxHQUFHLG1HQUFtRyxDQUFDO0FBRW5ILElBQU0sdUJBQXVCLEdBQThCO0lBQ3pELDBCQUEwQixFQUFFLGdCQUFnQjtJQUM1QywwQkFBMEIsRUFBRSw2QkFBNkI7SUFDekQsMkJBQTJCLEVBQUUsaUJBQWlCO0lBQzlDLGlDQUFpQyxFQUFFLHVCQUF1QjtJQUMxRCxtQkFBbUIsRUFBRSw0Q0FBNEM7Q0FDbEUsQ0FBQztBQUVGLElBQU0sT0FBTyxHQUFHLFlBQVksQ0FBQztBQVU3Qjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsaUNBQWlDLENBQUMsT0FBMkI7SUFBN0UsaUJBa0RDO0lBakRDLE9BQU8sVUFBZ0MsSUFBb0M7UUFDekUsT0FBQSxVQUFPLElBQXFDOzs7Ozs7d0JBQ2xDLEtBQUssR0FBSyxJQUFJLE1BQVQsQ0FBVTt3QkFDUixxQkFBTSxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUE7O3dCQUEvQixNQUFNLEdBQUcsU0FBc0I7d0JBQy9CLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUMsTUFBTSxDQUFDLFVBQUMsV0FBVzs0QkFDMUUsT0FBQSxLQUFLLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQzt3QkFBakMsQ0FBaUMsQ0FDbEMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDTCx5QkFBeUI7d0JBQ3pCLElBQUksQ0FBQyxXQUFXOzRCQUFFLHNCQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQzt3QkFFOUIsT0FBTyxHQUFHLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxDQUFDOzZCQUNqRCxDQUFBLENBQUMsS0FBSyxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksTUFBTSxLQUFLLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFBLEVBQXJHLHdCQUFxRzt3QkFDakcsWUFBWSxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO3dCQUNuQyxxQkFBTSxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUE7O3dCQUEzQyxnQkFBZ0IsR0FBRyxTQUF3Qjt3QkFDakQsZ0JBQWdCLENBQUMsUUFBUSxHQUFHLFNBQU8sWUFBWSxtQkFBZ0IsQ0FBQzt3QkFDMUQsT0FBTyxHQUFHLElBQUksV0FBVyx1QkFDMUIsZ0JBQWdCLEtBQ25CLFFBQVEsRUFBRSxPQUFPLEVBQ2pCLE9BQU8sRUFBRTtnQ0FDUCxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsUUFBUTs2QkFDaEMsRUFDRCxLQUFLO29DQUNILE1BQU0sRUFBRSxPQUFPO29DQUNmLE9BQU8sRUFBRSxPQUFPO29DQUNoQixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7b0NBQ3hCLGlCQUFpQixFQUFFLE1BQU07O2dDQUN6QixHQUFDLFdBQVcsSUFBRyxLQUFLLENBQUMsV0FBVyxDQUFDO3VDQUVuQyxDQUFDO3dCQUNHLE1BQU0sR0FBRyxJQUFJLFdBQVcsQ0FBQzs0QkFDN0IsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXOzRCQUNoQyxNQUFNLEVBQUUsWUFBWTs0QkFDcEIsT0FBTyxFQUFFLEtBQUs7NEJBQ2QsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNOzRCQUN0QixhQUFhLEVBQUUsT0FBTyxDQUFDLGlCQUFpQjt5QkFDekMsQ0FBQyxDQUFDO3dCQUNzQixxQkFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtnQ0FDckQsU0FBUyxFQUFFLElBQUk7NkJBQ2hCLENBQUMsRUFBQTs7d0JBRkksZ0JBQWdCLEdBQUcsU0FFdkI7d0JBQ0YsSUFBSSx5QkFDQyxJQUFJLEtBQ1AsS0FBSyx3QkFDQSxJQUFJLENBQUMsS0FBSyxLQUNiLFlBQVksRUFBRSxTQUFTLENBQUMsZ0JBQWdCLENBQUMsTUFFNUMsQ0FBQzs7NEJBRUosc0JBQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFDOzs7YUFDbkI7SUEvQ0QsQ0ErQ0MsQ0FBQztBQUNOLENBQUM7QUFFRCxNQUFNLENBQUMsSUFBTSx3Q0FBd0MsR0FBNkI7SUFDaEYsSUFBSSxFQUFFLFlBQVk7SUFDbEIsSUFBSSxFQUFFLENBQUMsNEJBQTRCLENBQUM7SUFDcEMsSUFBSSxFQUFFLG1DQUFtQztJQUN6QyxRQUFRLEVBQUUsSUFBSTtDQUNmLENBQUM7QUFFRixNQUFNLENBQUMsSUFBTSxnQ0FBZ0MsR0FBRyxVQUFDLE1BQTBCLElBQTBCLE9BQUEsQ0FBQztJQUNwRyxZQUFZLEVBQUUsVUFBQyxXQUFXO1FBQ3hCLFdBQVcsQ0FBQyxHQUFHLENBQUMsaUNBQWlDLENBQUMsTUFBTSxDQUFDLEVBQUUsd0NBQXdDLENBQUMsQ0FBQztJQUN2RyxDQUFDO0NBQ0YsQ0FBQyxFQUptRyxDQUluRyxDQUFDO0FBRUgsU0FBUyxLQUFLLENBQUMsRUFBc0I7SUFDbkMsSUFBSSxDQUFDLEVBQUU7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUN0QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekIsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsR0FBVztJQUNyQyxJQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBK0IsR0FBRyxNQUFHLENBQUMsQ0FBQztLQUN4RDtJQUNELE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUmVxdWVzdCB9IGZyb20gXCJAYXdzLXNkay9wcm90b2NvbC1odHRwXCI7XG5pbXBvcnQgeyBTaWduYXR1cmVWNCB9IGZyb20gXCJAYXdzLXNkay9zaWduYXR1cmUtdjRcIjtcbmltcG9ydCB7XG4gIENyZWRlbnRpYWxzLFxuICBFbmRwb2ludCxcbiAgSGFzaENvbnN0cnVjdG9yLFxuICBJbml0aWFsaXplSGFuZGxlcixcbiAgSW5pdGlhbGl6ZUhhbmRsZXJBcmd1bWVudHMsXG4gIEluaXRpYWxpemVIYW5kbGVyT3B0aW9ucyxcbiAgSW5pdGlhbGl6ZUhhbmRsZXJPdXRwdXQsXG4gIEluaXRpYWxpemVNaWRkbGV3YXJlLFxuICBNZXRhZGF0YUJlYXJlcixcbiAgUGx1Z2dhYmxlLFxuICBQcm92aWRlcixcbn0gZnJvbSBcIkBhd3Mtc2RrL3R5cGVzXCI7XG5pbXBvcnQgeyBmb3JtYXRVcmwgfSBmcm9tIFwiQGF3cy1zZGsvdXRpbC1mb3JtYXQtdXJsXCI7XG5cbmNvbnN0IHJlZ0FSTiA9IC9hcm46W1xcdys9LywuQC1dKzpbXFx3Kz0vLC5ALV0rOihbXFx3Kz0vLC5ALV0qKT86WzAtOV0rOltcXHcrPS8sLkAtXSsoOltcXHcrPS8sLkAtXSspPyg6W1xcdys9LywuQC1dKyk/LztcblxuY29uc3Qgc291cmNlSWRUb0NvbW1hbmRLZXlNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gIFNvdXJjZURCU25hcHNob3RJZGVudGlmaWVyOiBcIkNvcHlEQlNuYXBzaG90XCIsXG4gIFNvdXJjZURCSW5zdGFuY2VJZGVudGlmaWVyOiBcIkNyZWF0ZURCSW5zdGFuY2VSZWFkUmVwbGljYVwiLFxuICBSZXBsaWNhdGlvblNvdXJjZUlkZW50aWZpZXI6IFwiQ3JlYXRlREJDbHVzdGVyXCIsIC8vIFRoaXMga2V5IGlzIG9wdGlvbmFsLlxuICBTb3VyY2VEQkNsdXN0ZXJTbmFwc2hvdElkZW50aWZpZXI6IFwiQ29weURCQ2x1c3RlclNuYXBzaG90XCIsXG4gIFNvdXJjZURCSW5zdGFuY2VBcm46IFwiU3RhcnREQkluc3RhbmNlQXV0b21hdGVkQmFja3Vwc1JlcGxpY2F0aW9uXCIsXG59O1xuXG5jb25zdCB2ZXJzaW9uID0gXCIyMDE0LTEwLTMxXCI7XG5cbmludGVyZmFjZSBQcmV2aW91c2x5UmVzb2x2ZWQge1xuICBjcmVkZW50aWFsczogUHJvdmlkZXI8Q3JlZGVudGlhbHM+O1xuICBlbmRwb2ludDogUHJvdmlkZXI8RW5kcG9pbnQ+O1xuICByZWdpb246IFByb3ZpZGVyPHN0cmluZz47XG4gIHNoYTI1NjogSGFzaENvbnN0cnVjdG9yO1xuICBzaWduaW5nRXNjYXBlUGF0aDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb25maWcgb2YgdGhlIG1pZGRsZXdhcmUgdG8gYXV0b21hdGljYWxseSBhZGQgcHJlc2lnbmVkIFVSTCB0byByZXF1ZXN0LlxuICogVGhlIHByZXNpZ25lZCBVUkwgaXMgZ2VuZXJhdGVkIGJ5IHNpZ1Y0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcm9zc1JlZ2lvblByZXNpZ25lZFVybE1pZGRsZXdhcmUob3B0aW9uczogUHJldmlvdXNseVJlc29sdmVkKTogSW5pdGlhbGl6ZU1pZGRsZXdhcmU8YW55LCBhbnk+IHtcbiAgcmV0dXJuIDxPdXRwdXQgZXh0ZW5kcyBNZXRhZGF0YUJlYXJlcj4obmV4dDogSW5pdGlhbGl6ZUhhbmRsZXI8YW55LCBPdXRwdXQ+KTogSW5pdGlhbGl6ZUhhbmRsZXI8YW55LCBPdXRwdXQ+ID0+XG4gICAgYXN5bmMgKGFyZ3M6IEluaXRpYWxpemVIYW5kbGVyQXJndW1lbnRzPGFueT4pOiBQcm9taXNlPEluaXRpYWxpemVIYW5kbGVyT3V0cHV0PE91dHB1dD4+ID0+IHtcbiAgICAgIGNvbnN0IHsgaW5wdXQgfSA9IGFyZ3M7XG4gICAgICBjb25zdCByZWdpb24gPSBhd2FpdCBvcHRpb25zLnJlZ2lvbigpO1xuICAgICAgY29uc3Qgc291cmNlSWRLZXkgPSBPYmplY3Qua2V5cyhzb3VyY2VJZFRvQ29tbWFuZEtleU1hcCkuZmlsdGVyKChzb3VyY2VLZXlJZCkgPT5cbiAgICAgICAgaW5wdXQuaGFzT3duUHJvcGVydHkoc291cmNlS2V5SWQpXG4gICAgICApWzBdO1xuICAgICAgLy8gU291cmNlIGlkIGlzIG9wdGlvbmFsLlxuICAgICAgaWYgKCFzb3VyY2VJZEtleSkgcmV0dXJuIG5leHQoYXJncyk7XG5cbiAgICAgIGNvbnN0IGNvbW1hbmQgPSBzb3VyY2VJZFRvQ29tbWFuZEtleU1hcFtzb3VyY2VJZEtleV07XG4gICAgICBpZiAoIWlucHV0LlByZVNpZ25lZFVybCAmJiBpc0FSTihpbnB1dFtzb3VyY2VJZEtleV0pICYmIHJlZ2lvbiAhPT0gZ2V0RW5kcG9pbnRGcm9tQVJOKGlucHV0W3NvdXJjZUlkS2V5XSkpIHtcbiAgICAgICAgY29uc3Qgc291cmNlUmVnaW9uID0gZ2V0RW5kcG9pbnRGcm9tQVJOKGlucHV0W3NvdXJjZUlkS2V5XSk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkRW5kcG9pbnQgPSBhd2FpdCBvcHRpb25zLmVuZHBvaW50KCk7XG4gICAgICAgIHJlc29sdmVkRW5kcG9pbnQuaG9zdG5hbWUgPSBgcmRzLiR7c291cmNlUmVnaW9ufS5hbWF6b25hd3MuY29tYDtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IG5ldyBIdHRwUmVxdWVzdCh7XG4gICAgICAgICAgLi4ucmVzb2x2ZWRFbmRwb2ludCxcbiAgICAgICAgICBwcm90b2NvbDogXCJodHRwc1wiLFxuICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgIGhvc3Q6IHJlc29sdmVkRW5kcG9pbnQuaG9zdG5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgQWN0aW9uOiBjb21tYW5kLFxuICAgICAgICAgICAgVmVyc2lvbjogdmVyc2lvbixcbiAgICAgICAgICAgIEttc0tleUlkOiBpbnB1dC5LbXNLZXlJZCxcbiAgICAgICAgICAgIERlc3RpbmF0aW9uUmVnaW9uOiByZWdpb24sXG4gICAgICAgICAgICBbc291cmNlSWRLZXldOiBpbnB1dFtzb3VyY2VJZEtleV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHNpZ25lciA9IG5ldyBTaWduYXR1cmVWNCh7XG4gICAgICAgICAgY3JlZGVudGlhbHM6IG9wdGlvbnMuY3JlZGVudGlhbHMsXG4gICAgICAgICAgcmVnaW9uOiBzb3VyY2VSZWdpb24sXG4gICAgICAgICAgc2VydmljZTogXCJyZHNcIixcbiAgICAgICAgICBzaGEyNTY6IG9wdGlvbnMuc2hhMjU2LFxuICAgICAgICAgIHVyaUVzY2FwZVBhdGg6IG9wdGlvbnMuc2lnbmluZ0VzY2FwZVBhdGgsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBwcmVzaWduZWRSZXF1ZXN0ID0gYXdhaXQgc2lnbmVyLnByZXNpZ24ocmVxdWVzdCwge1xuICAgICAgICAgIGV4cGlyZXNJbjogMzYwMCxcbiAgICAgICAgfSk7XG4gICAgICAgIGFyZ3MgPSB7XG4gICAgICAgICAgLi4uYXJncyxcbiAgICAgICAgICBpbnB1dDoge1xuICAgICAgICAgICAgLi4uYXJncy5pbnB1dCxcbiAgICAgICAgICAgIFByZVNpZ25lZFVybDogZm9ybWF0VXJsKHByZXNpZ25lZFJlcXVlc3QpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV4dChhcmdzKTtcbiAgICB9O1xufVxuXG5leHBvcnQgY29uc3QgY3Jvc3NSZWdpb25QcmVzaWduZWRVcmxNaWRkbGV3YXJlT3B0aW9uczogSW5pdGlhbGl6ZUhhbmRsZXJPcHRpb25zID0ge1xuICBzdGVwOiBcImluaXRpYWxpemVcIixcbiAgdGFnczogW1wiQ1JPU1NfUkVHSU9OX1BSRVNJR05FRF9VUkxcIl0sXG4gIG5hbWU6IFwiY3Jvc3NSZWdpb25QcmVzaWduZWRVcmxNaWRkbGV3YXJlXCIsXG4gIG92ZXJyaWRlOiB0cnVlLFxufTtcblxuZXhwb3J0IGNvbnN0IGdldENyb3NzUmVnaW9uUHJlc2lnbmVkVXJsUGx1Z2luID0gKGNvbmZpZzogUHJldmlvdXNseVJlc29sdmVkKTogUGx1Z2dhYmxlPGFueSwgYW55PiA9PiAoe1xuICBhcHBseVRvU3RhY2s6IChjbGllbnRTdGFjaykgPT4ge1xuICAgIGNsaWVudFN0YWNrLmFkZChjcm9zc1JlZ2lvblByZXNpZ25lZFVybE1pZGRsZXdhcmUoY29uZmlnKSwgY3Jvc3NSZWdpb25QcmVzaWduZWRVcmxNaWRkbGV3YXJlT3B0aW9ucyk7XG4gIH0sXG59KTtcblxuZnVuY3Rpb24gaXNBUk4oaWQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICBpZiAoIWlkKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiByZWdBUk4udGVzdChpZCk7XG59XG5cbmZ1bmN0aW9uIGdldEVuZHBvaW50RnJvbUFSTihhcm46IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGFybkFyciA9IGFybi5zcGxpdChcIjpcIik7XG4gIGlmIChhcm5BcnIubGVuZ3RoIDwgNCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGluZmVyIGVuZHBvaW50IGZyb20gJyR7YXJufSdgKTtcbiAgfVxuICByZXR1cm4gYXJuQXJyWzNdO1xufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-sdk/middleware-sdk-rds",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.32.0",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"build:cjs": "tsc -p tsconfig.cjs.json",
|
|
6
6
|
"build:es": "tsc -p tsconfig.es.json",
|
|
@@ -17,17 +17,16 @@
|
|
|
17
17
|
},
|
|
18
18
|
"license": "Apache-2.0",
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@aws-sdk/protocol-http": "3.
|
|
21
|
-
"@aws-sdk/signature-v4": "3.
|
|
22
|
-
"@aws-sdk/types": "3.
|
|
23
|
-
"@aws-sdk/util-format-url": "3.
|
|
24
|
-
"@aws-sdk/util-uri-escape": "3.23.0",
|
|
20
|
+
"@aws-sdk/protocol-http": "3.32.0",
|
|
21
|
+
"@aws-sdk/signature-v4": "3.32.0",
|
|
22
|
+
"@aws-sdk/types": "3.32.0",
|
|
23
|
+
"@aws-sdk/util-format-url": "3.32.0",
|
|
25
24
|
"tslib": "^2.3.0"
|
|
26
25
|
},
|
|
27
26
|
"devDependencies": {
|
|
28
27
|
"@types/jest": "^26.0.4",
|
|
29
28
|
"jest": "^26.1.0",
|
|
30
|
-
"typescript": "~4.3.
|
|
29
|
+
"typescript": "~4.3.5"
|
|
31
30
|
},
|
|
32
31
|
"engines": {
|
|
33
32
|
"node": ">= 10.0.0"
|
package/src/index.ts
CHANGED
|
@@ -14,22 +14,15 @@ import {
|
|
|
14
14
|
Provider,
|
|
15
15
|
} from "@aws-sdk/types";
|
|
16
16
|
import { formatUrl } from "@aws-sdk/util-format-url";
|
|
17
|
-
import { escapeUri } from "@aws-sdk/util-uri-escape";
|
|
18
17
|
|
|
19
18
|
const regARN = /arn:[\w+=/,.@-]+:[\w+=/,.@-]+:([\w+=/,.@-]*)?:[0-9]+:[\w+=/,.@-]+(:[\w+=/,.@-]+)?(:[\w+=/,.@-]+)?/;
|
|
20
19
|
|
|
21
|
-
const sourceIds: string[] = [
|
|
22
|
-
"SourceDBSnapshotIdentifier",
|
|
23
|
-
"SourceDBInstanceIdentifier",
|
|
24
|
-
"ReplicationSourceIdentifier",
|
|
25
|
-
"SourceDBClusterSnapshotIdentifier",
|
|
26
|
-
];
|
|
27
|
-
|
|
28
20
|
const sourceIdToCommandKeyMap: { [key: string]: string } = {
|
|
29
21
|
SourceDBSnapshotIdentifier: "CopyDBSnapshot",
|
|
30
22
|
SourceDBInstanceIdentifier: "CreateDBInstanceReadReplica",
|
|
31
|
-
ReplicationSourceIdentifier: "CreateDBCluster",
|
|
23
|
+
ReplicationSourceIdentifier: "CreateDBCluster", // This key is optional.
|
|
32
24
|
SourceDBClusterSnapshotIdentifier: "CopyDBClusterSnapshot",
|
|
25
|
+
SourceDBInstanceArn: "StartDBInstanceAutomatedBackupsReplication",
|
|
33
26
|
};
|
|
34
27
|
|
|
35
28
|
const version = "2014-10-31";
|
|
@@ -46,24 +39,20 @@ interface PreviouslyResolved {
|
|
|
46
39
|
* Config of the middleware to automatically add presigned URL to request.
|
|
47
40
|
* The presigned URL is generated by sigV4
|
|
48
41
|
*/
|
|
49
|
-
|
|
50
42
|
export function crossRegionPresignedUrlMiddleware(options: PreviouslyResolved): InitializeMiddleware<any, any> {
|
|
51
43
|
return <Output extends MetadataBearer>(next: InitializeHandler<any, Output>): InitializeHandler<any, Output> =>
|
|
52
44
|
async (args: InitializeHandlerArguments<any>): Promise<InitializeHandlerOutput<Output>> => {
|
|
53
45
|
const { input } = args;
|
|
54
46
|
const region = await options.region();
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
if (!
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
if (!input.PreSignedUrl && isARN(input[sourceId]) && region !== getEndpointFromARN(input[sourceId])) {
|
|
66
|
-
const sourceRegion = getEndpointFromARN(input[sourceId]);
|
|
47
|
+
const sourceIdKey = Object.keys(sourceIdToCommandKeyMap).filter((sourceKeyId) =>
|
|
48
|
+
input.hasOwnProperty(sourceKeyId)
|
|
49
|
+
)[0];
|
|
50
|
+
// Source id is optional.
|
|
51
|
+
if (!sourceIdKey) return next(args);
|
|
52
|
+
|
|
53
|
+
const command = sourceIdToCommandKeyMap[sourceIdKey];
|
|
54
|
+
if (!input.PreSignedUrl && isARN(input[sourceIdKey]) && region !== getEndpointFromARN(input[sourceIdKey])) {
|
|
55
|
+
const sourceRegion = getEndpointFromARN(input[sourceIdKey]);
|
|
67
56
|
const resolvedEndpoint = await options.endpoint();
|
|
68
57
|
resolvedEndpoint.hostname = `rds.${sourceRegion}.amazonaws.com`;
|
|
69
58
|
const request = new HttpRequest({
|
|
@@ -77,7 +66,7 @@ export function crossRegionPresignedUrlMiddleware(options: PreviouslyResolved):
|
|
|
77
66
|
Version: version,
|
|
78
67
|
KmsKeyId: input.KmsKeyId,
|
|
79
68
|
DestinationRegion: region,
|
|
80
|
-
[
|
|
69
|
+
[sourceIdKey]: input[sourceIdKey],
|
|
81
70
|
},
|
|
82
71
|
});
|
|
83
72
|
const signer = new SignatureV4({
|
|
@@ -94,7 +83,7 @@ export function crossRegionPresignedUrlMiddleware(options: PreviouslyResolved):
|
|
|
94
83
|
...args,
|
|
95
84
|
input: {
|
|
96
85
|
...args.input,
|
|
97
|
-
PreSignedUrl:
|
|
86
|
+
PreSignedUrl: formatUrl(presignedRequest),
|
|
98
87
|
},
|
|
99
88
|
};
|
|
100
89
|
}
|