/*! * @license * Copyright Squiz Australia Pty Ltd. All Rights Reserved. */ import { LEGACY_RUNTIME_IMAGE, SUPPORTED_RUNTIME_IMAGES, getRuntimeImageOrDefault, isSupportedRuntimeImage, } from '../../constants/RuntimeImage.constants'; import { RuntimeImageTaskDefinitionError } from '../../errors'; import { ResolveRuntimeImageTaskDefinitionArnParams } from './ResolveRuntimeImageTaskDefinitionArn.types'; export const resolveRuntimeImageTaskDefinitionArn = ({ image, taskDefinitionArnsByRuntimeImage, legacyTaskDefinitionArn, }: ResolveRuntimeImageTaskDefinitionArnParams): string => { const runtimeImage = getRuntimeImageOrDefault(image); if (!isSupportedRuntimeImage(runtimeImage)) { throw new RuntimeImageTaskDefinitionError( `Unsupported runtime image "${runtimeImage}". Supported images are: ${SUPPORTED_RUNTIME_IMAGES.join(', ')}`, ); } const taskDefinitionArn = taskDefinitionArnsByRuntimeImage[runtimeImage] || (runtimeImage === LEGACY_RUNTIME_IMAGE ? legacyTaskDefinitionArn : undefined); if (!taskDefinitionArn) { throw new RuntimeImageTaskDefinitionError( `No ECS task definition ARN configured for runtime image "${runtimeImage}"`, ); } return taskDefinitionArn; };