Skip to content

Commit 54a709b

Browse files
committed
fix(middleware-sdk-rds): double encoding the presigned url
1 parent 648a41a commit 54a709b

File tree

3 files changed

+41
-43
lines changed

3 files changed

+41
-43
lines changed

packages/middleware-sdk-rds/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
"@aws-sdk/signature-v4": "3.25.0",
2222
"@aws-sdk/types": "3.25.0",
2323
"@aws-sdk/util-format-url": "3.25.0",
24-
"@aws-sdk/util-uri-escape": "3.23.0",
2524
"tslib": "^2.3.0"
2625
},
2726
"devDependencies": {

packages/middleware-sdk-rds/src/index.spec.ts

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,16 @@ describe("middleware-sdk-rds", () => {
3232
expect(middlewareOutput.input.TargetDBSnapshotIdentifier).toEqual(params.TargetDBSnapshotIdentifier);
3333
expect(middlewareOutput.input.KmsKeyId).toEqual(params.KmsKeyId);
3434
const presignedUrl = middlewareOutput.input.PreSignedUrl;
35-
expect(presignedUrl).toMatch(/https%3A%2F%2Frds\.src\-region\.amazonaws\.com%2F%3F/);
36-
expect(presignedUrl).toMatch(/Action%3DCopyDBSnapshot/);
37-
expect(presignedUrl).toMatch(/Version%3D2014\-10\-31/);
38-
expect(presignedUrl).toMatch(/X\-Amz\-Security\-Token%3Dsession/);
39-
expect(presignedUrl).toMatch(/X\-Amz\-Algorithm%3DAWS4\-HMAC\-SHA256/);
40-
expect(presignedUrl).toMatch(/X\-Amz\-SignedHeaders%3Dhost/);
41-
expect(presignedUrl).toMatch(/X\-Amz\-Credential%3D/);
42-
expect(presignedUrl).toMatch(/X\-Amz\-Date%3D/);
43-
expect(presignedUrl).toMatch(/X-Amz-Expires%3D([\d]+)/);
44-
expect(presignedUrl).toMatch(/X-Amz-Signature%3D000000/);
35+
expect(presignedUrl).toMatch(/https\:\/\/rds\.src\-region\.amazonaws\.com\/\?/);
36+
expect(presignedUrl).toMatch(/Action\=CopyDBSnapshot/);
37+
expect(presignedUrl).toMatch(/Version\=2014\-10\-31/);
38+
expect(presignedUrl).toMatch(/X\-Amz\-Security\-Token\=session/);
39+
expect(presignedUrl).toMatch(/X\-Amz\-Algorithm\=AWS4\-HMAC\-SHA256/);
40+
expect(presignedUrl).toMatch(/X\-Amz\-SignedHeaders\=host/);
41+
expect(presignedUrl).toMatch(/X\-Amz\-Credential\=/);
42+
expect(presignedUrl).toMatch(/X\-Amz\-Date\=/);
43+
expect(presignedUrl).toMatch(/X-Amz-Expires=([\d]+)/);
44+
expect(presignedUrl).toMatch(/X-Amz-Signature=000000/);
4545
});
4646

4747
it("should build CreateDBInstanceReadReplica cross origin presigned url correctly ", async () => {
@@ -57,16 +57,16 @@ describe("middleware-sdk-rds", () => {
5757
expect(middlewareOutput.input.DBInstanceIdentifier).toEqual(params.DBInstanceIdentifier);
5858
expect(middlewareOutput.input.KmsKeyId).toEqual(params.KmsKeyId);
5959
const presignedUrl = middlewareOutput.input.PreSignedUrl;
60-
expect(presignedUrl).toMatch(/https%3A%2F%2Frds\.src\-region\.amazonaws\.com%2F%3F/);
61-
expect(presignedUrl).toMatch(/Action%3DCreateDBInstanceReadReplica/);
62-
expect(presignedUrl).toMatch(/Version%3D2014\-10\-31/);
63-
expect(presignedUrl).toMatch(/X\-Amz\-Security\-Token%3Dsession/);
64-
expect(presignedUrl).toMatch(/X\-Amz\-Algorithm%3DAWS4\-HMAC\-SHA256/);
65-
expect(presignedUrl).toMatch(/X\-Amz\-SignedHeaders%3Dhost/);
66-
expect(presignedUrl).toMatch(/X\-Amz\-Credential%3D/);
67-
expect(presignedUrl).toMatch(/X\-Amz\-Date%3D/);
68-
expect(presignedUrl).toMatch(/X-Amz-Expires%3D([\d]+)/);
69-
expect(presignedUrl).toMatch(/X-Amz-Signature%3D000000/);
60+
expect(presignedUrl).toMatch(/https\:\/\/rds\.src\-region\.amazonaws\.com\/\?/);
61+
expect(presignedUrl).toMatch(/Action\=CreateDBInstanceReadReplica/);
62+
expect(presignedUrl).toMatch(/Version\=2014\-10\-31/);
63+
expect(presignedUrl).toMatch(/X\-Amz\-Security\-Token\=session/);
64+
expect(presignedUrl).toMatch(/X\-Amz\-Algorithm\=AWS4\-HMAC\-SHA256/);
65+
expect(presignedUrl).toMatch(/X\-Amz\-SignedHeaders\=host/);
66+
expect(presignedUrl).toMatch(/X\-Amz\-Credential\=/);
67+
expect(presignedUrl).toMatch(/X\-Amz\-Date\=/);
68+
expect(presignedUrl).toMatch(/X-Amz-Expires=([\d]+)/);
69+
expect(presignedUrl).toMatch(/X-Amz-Signature=000000/);
7070
});
7171

7272
it("should build CreateDBCluster cross origin presigned url correctly ", async () => {
@@ -82,16 +82,16 @@ describe("middleware-sdk-rds", () => {
8282
expect(middlewareOutput.input.DBClusterIdentifier).toEqual(params.DBClusterIdentifier);
8383
expect(middlewareOutput.input.KmsKeyId).toEqual(params.KmsKeyId);
8484
const presignedUrl = middlewareOutput.input.PreSignedUrl;
85-
expect(presignedUrl).toMatch(/https%3A%2F%2Frds\.src\-region\.amazonaws\.com%2F%3F/);
86-
expect(presignedUrl).toMatch(/Action%3DCreateDBCluster/);
87-
expect(presignedUrl).toMatch(/Version%3D2014\-10\-31/);
88-
expect(presignedUrl).toMatch(/X\-Amz\-Security\-Token%3Dsession/);
89-
expect(presignedUrl).toMatch(/X\-Amz\-Algorithm%3DAWS4\-HMAC\-SHA256/);
90-
expect(presignedUrl).toMatch(/X\-Amz\-SignedHeaders%3Dhost/);
91-
expect(presignedUrl).toMatch(/X\-Amz\-Credential%3D/);
92-
expect(presignedUrl).toMatch(/X\-Amz\-Date%3D/);
93-
expect(presignedUrl).toMatch(/X-Amz-Expires%3D([\d]+)/);
94-
expect(presignedUrl).toMatch(/X-Amz-Signature%3D000000/);
85+
expect(presignedUrl).toMatch(/https\:\/\/rds\.src\-region\.amazonaws\.com\/\?/);
86+
expect(presignedUrl).toMatch(/Action\=CreateDBCluster/);
87+
expect(presignedUrl).toMatch(/Version\=2014\-10\-31/);
88+
expect(presignedUrl).toMatch(/X\-Amz\-Security\-Token\=session/);
89+
expect(presignedUrl).toMatch(/X\-Amz\-Algorithm\=AWS4\-HMAC\-SHA256/);
90+
expect(presignedUrl).toMatch(/X\-Amz\-SignedHeaders\=host/);
91+
expect(presignedUrl).toMatch(/X\-Amz\-Credential\=/);
92+
expect(presignedUrl).toMatch(/X\-Amz\-Date\=/);
93+
expect(presignedUrl).toMatch(/X-Amz-Expires=([\d]+)/);
94+
expect(presignedUrl).toMatch(/X-Amz-Signature=000000/);
9595
});
9696

9797
it("should build CopyDBClusterSnapshot cross origin presigned url correctly ", async () => {
@@ -107,16 +107,16 @@ describe("middleware-sdk-rds", () => {
107107
expect(middlewareOutput.input.TargetDBClusterSnapshotIdentifier).toEqual(params.TargetDBClusterSnapshotIdentifier);
108108
expect(middlewareOutput.input.KmsKeyId).toEqual(params.KmsKeyId);
109109
const presignedUrl = middlewareOutput.input.PreSignedUrl;
110-
expect(presignedUrl).toMatch(/https%3A%2F%2Frds\.src\-region\.amazonaws\.com%2F%3F/);
111-
expect(presignedUrl).toMatch(/Action%3DCopyDBClusterSnapshot/);
112-
expect(presignedUrl).toMatch(/Version%3D2014\-10\-31/);
113-
expect(presignedUrl).toMatch(/X\-Amz\-Security\-Token%3Dsession/);
114-
expect(presignedUrl).toMatch(/X\-Amz\-Algorithm%3DAWS4\-HMAC\-SHA256/);
115-
expect(presignedUrl).toMatch(/X\-Amz\-SignedHeaders%3Dhost/);
116-
expect(presignedUrl).toMatch(/X\-Amz\-Credential%3D/);
117-
expect(presignedUrl).toMatch(/X\-Amz\-Date%3D/);
118-
expect(presignedUrl).toMatch(/X-Amz-Expires%3D([\d]+)/);
119-
expect(presignedUrl).toMatch(/X-Amz-Signature%3D000000/);
110+
expect(presignedUrl).toMatch(/https\:\/\/rds\.src\-region\.amazonaws\.com\/\?/);
111+
expect(presignedUrl).toMatch(/Action\=CopyDBClusterSnapshot/);
112+
expect(presignedUrl).toMatch(/Version\=2014\-10\-31/);
113+
expect(presignedUrl).toMatch(/X\-Amz\-Security\-Token\=session/);
114+
expect(presignedUrl).toMatch(/X\-Amz\-Algorithm\=AWS4\-HMAC\-SHA256/);
115+
expect(presignedUrl).toMatch(/X\-Amz\-SignedHeaders\=host/);
116+
expect(presignedUrl).toMatch(/X\-Amz\-Credential\=/);
117+
expect(presignedUrl).toMatch(/X\-Amz\-Date\=/);
118+
expect(presignedUrl).toMatch(/X-Amz-Expires=([\d]+)/);
119+
expect(presignedUrl).toMatch(/X-Amz-Signature=000000/);
120120
});
121121

122122
it("should not generate PreSignedUrl if source identifier is not ARN", async () => {

packages/middleware-sdk-rds/src/index.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import {
1414
Provider,
1515
} from "@aws-sdk/types";
1616
import { formatUrl } from "@aws-sdk/util-format-url";
17-
import { escapeUri } from "@aws-sdk/util-uri-escape";
1817

1918
const regARN = /arn:[\w+=/,.@-]+:[\w+=/,.@-]+:([\w+=/,.@-]*)?:[0-9]+:[\w+=/,.@-]+(:[\w+=/,.@-]+)?(:[\w+=/,.@-]+)?/;
2019

@@ -94,7 +93,7 @@ export function crossRegionPresignedUrlMiddleware(options: PreviouslyResolved):
9493
...args,
9594
input: {
9695
...args.input,
97-
PreSignedUrl: escapeUri(formatUrl(presignedRequest)),
96+
PreSignedUrl: formatUrl(presignedRequest),
9897
},
9998
};
10099
}

0 commit comments

Comments
 (0)