diff --git a/packages/cdk-assets/lib/private/archive.ts b/packages/cdk-assets/lib/private/archive.ts index 36eedbddbf8e8..17137edfc8d58 100644 --- a/packages/cdk-assets/lib/private/archive.ts +++ b/packages/cdk-assets/lib/private/archive.ts @@ -11,7 +11,7 @@ type Logger = (x: string) => void; export async function zipDirectory(directory: string, outputFile: string, logger: Logger): Promise { // We write to a temporary file and rename at the last moment. This is so that if we are // interrupted during this process, we don't leave a half-finished file in the target location. - const temporaryOutputFile = `${outputFile}.${randomString()}._tmp`; + const temporaryOutputFile = `${outputFile}._tmp`; await writeZipFile(directory, temporaryOutputFile); await moveIntoPlace(temporaryOutputFile, outputFile, logger); } @@ -97,7 +97,3 @@ async function pathExists(x: string) { throw e; } } - -function randomString() { - return Math.random().toString(36).replace(/[^a-z0-9]+/g, ''); -} diff --git a/packages/cdk-assets/lib/private/handlers/files.ts b/packages/cdk-assets/lib/private/handlers/files.ts index da6fbc56c061c..4395ba8e70ef0 100644 --- a/packages/cdk-assets/lib/private/handlers/files.ts +++ b/packages/cdk-assets/lib/private/handlers/files.ts @@ -107,7 +107,7 @@ export class FileAssetHandler implements IAssetHandler { const contentType = 'application/zip'; await fs.mkdir(this.fileCacheRoot, { recursive: true }); - const packagedPath = path.join(this.fileCacheRoot, `${this.asset.id.assetId}.zip`); + const packagedPath = path.join(this.fileCacheRoot, `${this.asset.id.assetId}.${randomString()}.zip`); if (await pathExists(packagedPath)) { this.host.emitMessage(EventType.CACHED, `From cache ${packagedPath}`); @@ -272,3 +272,7 @@ async function cached(cache: Map, key: A, factory: (x: A) => Promise cache.set(key, fresh); return fresh; } + +function randomString() { + return Math.random().toString(36).replace(/[^a-z0-9]+/g, ''); +}