diff --git a/packages/providers/upload-aws-s3/src/__tests__/utils.test.ts b/packages/providers/upload-aws-s3/src/__tests__/utils.test.ts index 8aab32fd2f..cf48d5b3bd 100644 --- a/packages/providers/upload-aws-s3/src/__tests__/utils.test.ts +++ b/packages/providers/upload-aws-s3/src/__tests__/utils.test.ts @@ -16,7 +16,7 @@ const defaultOptions = { describe('Utils', () => { describe('Extract credentials for V4 different aws provider configurations', () => { - test('[Legacy] Credentials directly in the options', async () => { + test('[Legacy] Credentials directly in the options', () => { const options: InitOptions = { accessKeyId, secretAccessKey, @@ -30,7 +30,7 @@ describe('Utils', () => { }); }); - test('[Legacy] credentials directly in s3Options', async () => { + test('[Legacy] credentials directly in s3Options', () => { const options: InitOptions = { s3Options: { accessKeyId, @@ -46,7 +46,7 @@ describe('Utils', () => { }); }); - test('Credentials in credentials object inside s3Options', async () => { + test('Credentials in credentials object inside s3Options', () => { const options: InitOptions = { s3Options: { credentials: { @@ -63,5 +63,15 @@ describe('Utils', () => { secretAccessKey, }); }); + test('Does not throw an error when credentials are not present', () => { + const options: InitOptions = { + s3Options: { + ...defaultOptions, + }, + }; + const credentials = extractCredentials(options); + + expect(credentials).toEqual(null); + }); }); }); diff --git a/packages/providers/upload-aws-s3/src/index.ts b/packages/providers/upload-aws-s3/src/index.ts index 1a280536da..dac9ea3a29 100644 --- a/packages/providers/upload-aws-s3/src/index.ts +++ b/packages/providers/upload-aws-s3/src/index.ts @@ -76,11 +76,11 @@ const getConfig = ({ baseUrl, rootPath, s3Options, ...legacyS3Options }: InitOpt "S3 configuration options passed at root level of the plugin's providerOptions is deprecated and will be removed in a future release. Please wrap them inside the 's3Options:{}' property." ); } - + const credentials = extractCredentials({ s3Options, ...legacyS3Options }); const config = { ...s3Options, ...legacyS3Options, - credentials: extractCredentials({ s3Options, ...legacyS3Options }), + ...(credentials ? { credentials } : {}), }; config.params.ACL = getOr(ObjectCannedACL.public_read, ['params', 'ACL'], config); diff --git a/packages/providers/upload-aws-s3/src/utils.ts b/packages/providers/upload-aws-s3/src/utils.ts index 31e5f34ec6..8847cb0579 100644 --- a/packages/providers/upload-aws-s3/src/utils.ts +++ b/packages/providers/upload-aws-s3/src/utils.ts @@ -89,7 +89,7 @@ function getBucketFromAwsUrl(fileUrl: string): BucketInfo { } // TODO Remove this in V5 since we will only support the new config structure -export const extractCredentials = (options: InitOptions): AwsCredentialIdentity => { +export const extractCredentials = (options: InitOptions): AwsCredentialIdentity | null => { // legacy if (options.accessKeyId && options.secretAccessKey) { return { @@ -115,5 +115,5 @@ export const extractCredentials = (options: InitOptions): AwsCredentialIdentity }; } - throw new Error("Couldn't find AWS credentials."); + return null; };