@@ -432,21 +432,8 @@ namespace Aws
432432 return Aws::String (m_endpoint);
433433 }
434434
435- #ifdef _MSC_VER
436- // VS2015 compiler's bug, warning s_ec2metadataClient: symbol will be dynamically initialized (implementation limitation)
437- AWS_SUPPRESS_WARNING (4592 ,
438- static std::shared_ptr<EC2MetadataClient> s_ec2metadataClient (nullptr );
439- )
440- #else
441- static std::shared_ptr<EC2MetadataClient> s_ec2metadataClient (nullptr );
442- #endif
443-
444- void InitEC2MetadataClient ()
435+ static Aws::String CalculateEC2MetadataServiceEndpoint ()
445436 {
446- if (s_ec2metadataClient)
447- {
448- return ;
449- }
450437 Aws::String ec2MetadataServiceEndpoint = Aws::Environment::GetEnv (" AWS_EC2_METADATA_SERVICE_ENDPOINT" );
451438 if (ec2MetadataServiceEndpoint.empty ())
452439 {
@@ -478,6 +465,36 @@ namespace Aws
478465 }
479466 }
480467 }
468+ return ec2MetadataServiceEndpoint;
469+ }
470+
471+ #ifdef _MSC_VER
472+ // VS2015 compiler's bug, warning s_ec2metadataClient: symbol will be dynamically initialized (implementation limitation)
473+ AWS_SUPPRESS_WARNING (4592 ,
474+ static std::shared_ptr<EC2MetadataClient> s_ec2metadataClient (nullptr );
475+ )
476+ #else
477+ static std::shared_ptr<EC2MetadataClient> s_ec2metadataClient (nullptr );
478+ #endif
479+
480+ void InitEC2MetadataClient (const Aws::Client::ClientConfiguration::CredentialProviderConfiguration& credentialConfig)
481+ {
482+ if (s_ec2metadataClient)
483+ {
484+ return ;
485+ }
486+ Aws::String ec2MetadataServiceEndpoint = CalculateEC2MetadataServiceEndpoint ();
487+ AWS_LOGSTREAM_INFO (EC2_METADATA_CLIENT_LOG_TAG, " Using IMDS endpoint: " << ec2MetadataServiceEndpoint);
488+ s_ec2metadataClient = Aws::MakeShared<EC2MetadataClient>(EC2_METADATA_CLIENT_LOG_TAG, credentialConfig, ec2MetadataServiceEndpoint.c_str ());
489+ }
490+
491+ void InitEC2MetadataClient ()
492+ {
493+ if (s_ec2metadataClient)
494+ {
495+ return ;
496+ }
497+ Aws::String ec2MetadataServiceEndpoint = CalculateEC2MetadataServiceEndpoint ();
481498 AWS_LOGSTREAM_INFO (EC2_METADATA_CLIENT_LOG_TAG, " Using IMDS endpoint: " << ec2MetadataServiceEndpoint);
482499 s_ec2metadataClient = Aws::MakeShared<EC2MetadataClient>(EC2_METADATA_CLIENT_LOG_TAG, ec2MetadataServiceEndpoint.c_str ());
483500 }
0 commit comments