@@ -87,22 +87,43 @@ c.Application.logging_config = {
8787EOT
8888fi
8989
90- # Setting this to +x to not log credentials from the response of fetching credentials.
91- set +x
90+ # Add debug call to get domain info
91+ if [ ! -z " $dataZoneEndPoint " ]; then
92+ domain_response=$( aws datazone get-domain --debug --endpoint-url " $dataZoneEndPoint " --identifier " $dataZoneDomainId " --region " $dataZoneDomainRegion " 2>&1 )
9293
93- # Note: The $? check immediately follows the sagemaker-studio command to ensure we're checking its exit status.
94- # Adding commands between these lines could lead to incorrect error handling.
95- response=$( timeout 30 sagemaker-studio credentials get-domain-execution-role-credential-in-space --domain-id " $dataZoneDomainId " --profile default)
96- responseStatus=$?
94+ else
95+ domain_response=$( aws datazone get-domain --debug --identifier " $dataZoneDomainId " --region " $dataZoneDomainRegion " 2>&1 )
96+ fi
97+
98+ # Check if domain is in express mode
99+ response_body=$( echo " $domain_response " | grep -A1 " Response body:" | tail -n1 | sed ' s/^b' \' ' //;s/' \' ' $//' )
100+ # Remove leading/trailing whitespace and the 'b' prefix
101+ cleaned_response=$( echo " $response_body " | sed ' s/\\n//g' )
102+ is_express_mode=$( echo " $cleaned_response " | jq -r ' .preferences.DOMAIN_MODE == "EXPRESS"' )
103+
104+ if [ " $is_express_mode " = " true" ]; then
105+ echo " Domain is in express mode. Using default credentials"
106+ # Use default credentials - no additional configuration needed
107+ aws configure set credential_source EcsContainer --profile DomainExecutionRoleCreds
108+ echo " Successfully configured DomainExecutionRoleCreds profile with default credentials"
109+ else
110+ echo " Domain is not in express mode"
111+ # Setting this to +x to not log credentials from the response of fetching credentials.
112+ set +x
113+ # Note: The $? check immediately follows the sagemaker-studio command to ensure we're checking its exit status.
114+ # Adding commands between these lines could lead to incorrect error handling.
115+ response=$( timeout 30 sagemaker-studio credentials get-domain-execution-role-credential-in-space --domain-id " $dataZoneDomainId " --profile default)
116+ responseStatus=$?
97117
98- set -x
118+ set -x
99119
100- if [ $responseStatus -ne 0 ]; then
120+ if [ $responseStatus -ne 0 ]; then
101121 echo " Failed to fetch domain execution role credentials. Will skip adding new credentials profile: DomainExecutionRoleCreds."
102122 write_status_to_file " error" " Network issue detected. Your domain may be using a public subnet, which affects IDE functionality. Please contact your admin."
103- else
123+ else
104124 aws configure set credential_process " sagemaker-studio credentials get-domain-execution-role-credential-in-space --domain-id $dataZoneDomainId --profile default" --profile DomainExecutionRoleCreds
105125 echo " Successfully configured DomainExecutionRoleCreds profile"
126+ fi
106127fi
107128
108129# Run AWS CLI command to get the username from DataZone User Profile.
@@ -179,7 +200,7 @@ mkdir -p "$HOME/.config" # Create config directory if it doesn't exist
179200jq -n \
180201 --arg smusProjectDirectory " $SMUS_PROJECT_DIR " \
181202 --arg isGitProject " $IS_GIT_PROJECT " \
182- ' {
203+ ' {
183204 smusProjectDirectory: $smusProjectDirectory,
184205 isGitProject: ($isGitProject == "true")
185206 }' > " $HOME /.config/smus-storage-metadata.json"
210231
211232# Generate sagemaker pysdk intelligent default config
212233nohup python /etc/sagemaker/sm_pysdk_default_config.py &
213- # Only run the following commands if SAGEMAKER_APP_TYPE_LOWERCASE is jupyterlab
214- if [ " ${SAGEMAKER_APP_TYPE_LOWERCASE} " = " jupyterlab" ]; then
234+ # Only run the following commands if SAGEMAKER_APP_TYPE_LOWERCASE is jupyterlab and domain is not in express mode
235+ if [ " ${SAGEMAKER_APP_TYPE_LOWERCASE} " = " jupyterlab" ] && [ " $is_express_mode " != " true " ] ; then
215236 # do not fail immediately for non-zero exit code returned
216237 # by start-workflows-container. An expected non-zero exit
217238 # code will be returned if there is not a minimum of 2
@@ -224,7 +245,7 @@ if [ "${SAGEMAKER_APP_TYPE_LOWERCASE}" = "jupyterlab" ]; then
224245
225246 # write unexpected error to file if any of the remaining scripts fail.
226247 trap ' write_status_to_file "error" "An unexpected error occurred. Please stop and restart your space to retry."' ERR
227-
248+
228249 # Install conda and pip dependencies if lib mgmt config existing
229250 bash /etc/sagemaker-ui/libmgmt/install-lib.sh
230251
0 commit comments