Skip to content

Commit 29fa5f1

Browse files
committed
fix(storage): use unsigned payload for pre-signed urls
1 parent 7d61814 commit 29fa5f1

File tree

4 files changed

+35
-3
lines changed

4 files changed

+35
-3
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ packages/**/esm/
1111
packages/**/cjs/
1212
**/.DS_Store
1313
.vscode
14+
.kiro
1415
.idea
1516
*.log
1617
.npm/

packages/core/src/clients/index.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ export {
1313
PresignUrlOptions,
1414
SignRequestOptions,
1515
} from './middleware/signing/signer/signatureV4';
16-
export { EMPTY_HASH as EMPTY_SHA256_HASH } from './middleware/signing/signer/signatureV4/constants';
16+
export {
17+
EMPTY_HASH as EMPTY_SHA256_HASH,
18+
UNSIGNED_PAYLOAD,
19+
} from './middleware/signing/signer/signatureV4/constants';
1720
export { extendedEncodeURIComponent } from './middleware/signing/utils/extendedEncodeURIComponent';
1821
export {
1922
signingMiddlewareFactory,

packages/storage/__tests__/providers/s3/utils/client/S3/getPresignedGetObjectUrl.test.ts

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
22
// SPDX-License-Identifier: Apache-2.0
33

4-
import { presignUrl } from '@aws-amplify/core/internals/aws-client-utils';
4+
import {
5+
UNSIGNED_PAYLOAD,
6+
presignUrl,
7+
} from '@aws-amplify/core/internals/aws-client-utils';
58

69
import { getPresignedGetObjectUrl } from '../../../../../../src/providers/s3/utils/client/s3data';
710

@@ -110,4 +113,28 @@ describe('serializeGetObjectRequest', () => {
110113
);
111114
expect(actual.searchParams.get('x-amz-user-agent')).toBe('UA');
112115
});
116+
117+
it('should use UNSIGNED-PAYLOAD for presigned URLs', async () => {
118+
mockPresignUrl.mockClear();
119+
120+
await getPresignedGetObjectUrl(
121+
{
122+
...defaultConfigWithStaticCredentials,
123+
signingRegion: defaultConfigWithStaticCredentials.region,
124+
signingService: 's3',
125+
expiration: 900,
126+
},
127+
{
128+
Bucket: 'bucket',
129+
Key: 'key',
130+
},
131+
);
132+
133+
expect(mockPresignUrl).toHaveBeenCalledWith(
134+
expect.objectContaining({
135+
body: UNSIGNED_PAYLOAD,
136+
}),
137+
expect.anything(),
138+
);
139+
});
113140
});

packages/storage/src/providers/s3/utils/client/s3data/getObject.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
HttpRequest,
88
HttpResponse,
99
PresignUrlOptions,
10+
UNSIGNED_PAYLOAD,
1011
UserAgentOptions,
1112
parseMetadata,
1213
presignUrl,
@@ -199,7 +200,7 @@ export const getPresignedGetObjectUrl = async (
199200
}
200201

201202
return presignUrl(
202-
{ method, url, body: undefined },
203+
{ method, url, body: UNSIGNED_PAYLOAD },
203204
{
204205
signingService: defaultConfig.service,
205206
signingRegion: config.region,

0 commit comments

Comments
 (0)