Skip to content

Commit 1adce4f

Browse files
committed
Always show console link, conditional show studio link
1 parent b34d0d8 commit 1adce4f

File tree

2 files changed

+33
-25
lines changed

2 files changed

+33
-25
lines changed

sagemaker-train/src/sagemaker/train/common_utils/trainer_wait.py

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -307,37 +307,39 @@ def get_cached_mlflow_url():
307307
header_table.add_row("TrainingJob Name", f"[bold green]{training_job.training_job_name}[/bold green]")
308308
header_table.add_row("TrainingJob ARN", f"[dim]{training_job.training_job_arn}[/dim]")
309309

310-
# Build links row
311-
links = []
310+
# Build links rows
311+
links_row1 = []
312+
links_row2 = []
312313
try:
313314
from sagemaker.train.common_utils.metrics_visualizer import (
314315
_is_in_studio, get_console_job_url, get_cloudwatch_logs_url, get_studio_url
315316
)
317+
console_url = get_console_job_url(training_job.training_job_arn)
318+
if console_url:
319+
links_row1.append(f"[bright_blue underline][link={console_url}]🔗 Training Job (Console)[/link][/bright_blue underline]")
316320
if _is_in_studio():
317321
studio_url = get_studio_url(training_job)
318322
if studio_url:
319-
links.append(f"[bright_blue underline][link={studio_url}]🔗 Training Job (Studio)[/link][/bright_blue underline]")
320-
else:
321-
console_url = get_console_job_url(training_job.training_job_arn)
322-
if console_url:
323-
links.append(f"[bright_blue underline][link={console_url}]🔗 Training Job[/link][/bright_blue underline]")
323+
links_row1.append(f"[bright_blue underline][link={studio_url}]🔗 Training Job (Studio)[/link][/bright_blue underline]")
324324
cw_url = get_cloudwatch_logs_url(training_job.training_job_arn)
325325
if cw_url:
326-
links.append(f"[bright_blue underline][link={cw_url}]🔗 CloudWatch Logs[/link][/bright_blue underline]")
326+
links_row2.append(f"[bright_blue underline][link={cw_url}]🔗 CloudWatch Logs[/link][/bright_blue underline]")
327327
except Exception:
328328
pass
329329
if has_mlflow_config:
330330
cached_url = get_cached_mlflow_url()
331331
if cached_url:
332-
links.append(f"[bright_blue underline][link={cached_url}]🔗 MLflow Experiment[/link][/bright_blue underline]")
332+
links_row2.append(f"[bright_blue underline][link={cached_url}]🔗 MLflow Experiment[/link][/bright_blue underline]")
333333
elif mlflow_link_cache['error']:
334334
header_table.add_row("MLflow Experiment", f"[red]{mlflow_link_cache['error']}[/red]")
335335
if has_mlflow_config:
336336
exp_name = training_job.mlflow_config.mlflow_experiment_name if hasattr(training_job, 'mlflow_config') else None
337337
if exp_name and not _is_unassigned_attribute(exp_name):
338338
header_table.add_row("MLflow Experiment", f"{exp_name}")
339-
if links:
340-
header_table.add_row("Links", " | ".join(links))
339+
if links_row1:
340+
header_table.add_row("Links", " | ".join(links_row1))
341+
if links_row2:
342+
header_table.add_row("" if links_row1 else "Links", " | ".join(links_row2))
341343

342344
status_table = Table(show_header=False, box=None, padding=(0, 1))
343345
status_table.add_column("Property", style="cyan bold", width=20)

sagemaker-train/src/sagemaker/train/evaluate/execution.py

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1051,45 +1051,51 @@ def wait(
10511051
if job_arn_entries:
10521052
links_table = Table(show_header=True, header_style="bold magenta", box=None, padding=(0, 1))
10531053
links_table.add_column("Step", style="cyan", width=20)
1054-
links_table.add_column("Job Link", style="dim")
1055-
links_table.add_column("Logs", style="dim")
1056-
links_table.add_column("Job ARN", style="dim", overflow="fold")
1054+
links_table.add_column("Console", style="dim")
10571055
from sagemaker.train.common_utils.metrics_visualizer import (
10581056
_is_in_studio, _parse_job_arn, _get_studio_base_url,
10591057
get_console_job_url, get_cloudwatch_logs_url,
10601058
)
10611059
in_studio = _is_in_studio()
10621060
studio_base = _get_studio_base_url(region) if in_studio else ""
1061+
if in_studio:
1062+
links_table.add_column("Studio", style="dim")
1063+
links_table.add_column("Logs", style="dim")
1064+
links_table.add_column("Job ARN", style="dim", overflow="fold")
10631065
studio_path_map = {
10641066
"training-job/": "jobs/train/",
10651067
"processing-job/": "jobs/processing/",
10661068
"transform-job/": "jobs/transform/",
10671069
}
10681070
for entry in job_arn_entries:
1069-
job_link = ""
1071+
console_link = ""
10701072
logs_link = ""
1073+
studio_link = ""
10711074
try:
10721075
arn = entry['job_arn']
1076+
url = get_console_job_url(arn)
1077+
if url:
1078+
console_link = f"[bright_blue underline][link={url}]🔗 link[/link][/bright_blue underline]"
1079+
cw_url = get_cloudwatch_logs_url(arn)
1080+
if cw_url:
1081+
logs_link = f"[bright_blue underline][link={cw_url}]🔗 logs[/link][/bright_blue underline]"
10731082
if in_studio and studio_base:
10741083
parsed = _parse_job_arn(arn)
10751084
if parsed:
10761085
_, resource = parsed
10771086
for prefix, path in studio_path_map.items():
10781087
if resource.startswith(prefix):
10791088
job_name = resource.split("/", 1)[1]
1080-
url = f"{studio_base}/{path}{job_name}"
1081-
job_link = f"[bright_blue underline][link={url}]🔗 link[/link][/bright_blue underline]"
1089+
s_url = f"{studio_base}/{path}{job_name}"
1090+
studio_link = f"[bright_blue underline][link={s_url}]🔗 studio[/link][/bright_blue underline]"
10821091
break
1083-
else:
1084-
url = get_console_job_url(arn)
1085-
if url:
1086-
job_link = f"[bright_blue underline][link={url}]🔗 link[/link][/bright_blue underline]"
1087-
cw_url = get_cloudwatch_logs_url(arn)
1088-
if cw_url:
1089-
logs_link = f"[bright_blue underline][link={cw_url}]🔗 logs[/link][/bright_blue underline]"
10901092
except Exception:
10911093
pass
1092-
links_table.add_row(entry['step_name'], job_link, logs_link, entry['job_arn'])
1094+
row = [entry['step_name'], console_link]
1095+
if in_studio:
1096+
row.append(studio_link)
1097+
row.extend([logs_link, entry['job_arn']])
1098+
links_table.add_row(*row)
10931099
content_parts.append(Text(""))
10941100
content_parts.append(Text("Job ARNs", style="bold magenta"))
10951101
content_parts.append(links_table)

0 commit comments

Comments
 (0)