diff --git a/core/src/main/java/ch/cyberduck/core/Profile.java b/core/src/main/java/ch/cyberduck/core/Profile.java index bea4fa65dc0..c2f723ba196 100644 --- a/core/src/main/java/ch/cyberduck/core/Profile.java +++ b/core/src/main/java/ch/cyberduck/core/Profile.java @@ -685,6 +685,9 @@ public Map getProperties() { property -> StringUtils.contains(property, '=') ? substitutor.replace(StringUtils.substringAfter(property, '=')) : StringUtils.EMPTY))); // In profile as dict properties.putAll(this.map(PROPERTIES_KEY)); + if(null != this.getContext()) { + properties.put(CONTEXT_KEY, this.getContext()); + } return properties; } diff --git a/s3/src/main/java/ch/cyberduck/core/auth/AWSSessionCredentialsRetriever.java b/s3/src/main/java/ch/cyberduck/core/auth/AWSSessionCredentialsRetriever.java index 8112fc11b9d..83e4a974d83 100644 --- a/s3/src/main/java/ch/cyberduck/core/auth/AWSSessionCredentialsRetriever.java +++ b/s3/src/main/java/ch/cyberduck/core/auth/AWSSessionCredentialsRetriever.java @@ -75,7 +75,7 @@ public Credentials get() throws BackgroundException { final HttpClientBuilder configuration = builder.build(ProxyFactory.get(), new DisabledTranscriptListener(), new DisabledLoginCallback()); try (CloseableHttpClient client = configuration.build()) { - final HttpRequestBase resource = new HttpGet(new HostUrlProvider().withUsername(false).withPath(true).get(address)); + final HttpRequestBase resource = new HttpGet(url); return client.execute(resource, response -> { switch(response.getStatusLine().getStatusCode()) { case HttpStatus.SC_OK: diff --git a/s3/src/main/java/ch/cyberduck/core/s3/S3Session.java b/s3/src/main/java/ch/cyberduck/core/s3/S3Session.java index 4aea90cfa13..5a02d28ead1 100644 --- a/s3/src/main/java/ch/cyberduck/core/s3/S3Session.java +++ b/s3/src/main/java/ch/cyberduck/core/s3/S3Session.java @@ -27,6 +27,7 @@ import ch.cyberduck.core.LoginCallback; import ch.cyberduck.core.Path; import ch.cyberduck.core.PathContainerService; +import ch.cyberduck.core.Profile; import ch.cyberduck.core.Scheme; import ch.cyberduck.core.TemporaryAccessTokens; import ch.cyberduck.core.UrlProvider; @@ -268,10 +269,11 @@ protected S3CredentialsStrategy configureCredentialsStrategy(final HttpClientBui } if(S3Session.isAwsHostname(host.getHostname())) { // Try auto-configure - if(Scheme.isURL(host.getProtocol().getContext())) { - log.debug("Auto-configure credentials from instance metadata {}", host.getProtocol().getContext()); + final String context = preferences.getProperty(Profile.CONTEXT_KEY); + if(Scheme.isURL(context)) { + log.debug("Auto-configure credentials from HTTP endpoint {}", context); // Fetch temporary session token from instance metadata - return new AWSSessionCredentialsRetriever(trust, key, host.getProtocol().getContext()); + return new AWSSessionCredentialsRetriever(trust, key, context); } } if(host.getProtocol().isRoleConfigurable()) {