in plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/execution/sam/SamInvokeRunner.kt [31:68]
override fun canRun(executorId: String, profile: RunProfile): Boolean {
if (profile !is LocalLambdaRunConfiguration) {
return false
}
if (DefaultRunExecutor.EXECUTOR_ID == executorId) {
// Always true so that the run icon is shown, error is then told to user that runtime doesnt work
return true
}
if (DefaultDebugExecutor.EXECUTOR_ID != executorId) {
// Only support debugging if it is the default executor
return false
}
val runtimeValue = if (profile.isUsingTemplate() && !profile.isImage) {
LOG.tryOrNull("Failed to get runtime of ${profile.logicalId()}", Level.WARN) {
SamTemplateUtils.findZipFunctionsFromTemplate(profile.project, File(profile.templateFile()))
.find { it.logicalName == profile.logicalId() }
?.runtime()
?.let {
Runtime.fromValue(it)?.validOrNull
}
}
} else if (!profile.isImage) {
profile.runtime()?.toSdkRuntime()
} else {
null
}
val runtimeGroup = runtimeValue?.runtimeGroup
val canRunRuntime = runtimeGroup != null &&
RuntimeDebugSupport.supportedRuntimeGroups().contains(runtimeGroup) &&
RuntimeDebugSupport.getInstanceOrNull(runtimeGroup)?.isSupported(runtimeValue) ?: false
val canRunImage = profile.isImage && profile.imageDebugger() != null
return canRunRuntime || canRunImage
}