[ 
https://issues.apache.org/jira/browse/HADOOP-18984?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17788407#comment-17788407
 ] 

Steve Loughran commented on HADOOP-18984:
-----------------------------------------

fyi, cloudstore now has a regions2 command to work this out. The classes we are 
using are tagged as {{@SdkProtectedApi}} so we shouldn't be using them. but....

maybe we should actually support a chain of region determiners, which go from 
bucket + endpoint => region

{code}
Determining region using SystemSettingsRegionProvider
=====================================================

System property aws.region
2023-11-21 12:45:44,339 [main] INFO  sdk2.Regions2 
(StoreDurationInfo.java:<init>(91)) - Starting: 
SystemSettingsRegionProvider.getRegion()
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further 
details.
2023-11-21 12:45:44,349 [main] INFO  sdk2.Regions2 
(StoreDurationInfo.java:close(193)) - Duration of 
SystemSettingsRegionProvider.getRegion(): 0:00:00.011
WARNING: Provider SystemSettingsRegionProvider raised an exception 
software.amazon.awssdk.core.exception.SdkClientException: Unable to load region 
from system settings. Region must be specified either via environment variable 
(AWS_REGION) or  system property (aws.region).
2023-11-21 12:45:44,350 [main] INFO  sdk2.Regions2 
(Regions2.java:printRegion(101)) - Provider raised an exception
software.amazon.awssdk.core.exception.SdkClientException: Unable to load region 
from system settings. Region must be specified either via environment variable 
(AWS_REGION) or  system property (aws.region).
        at 
software.amazon.awssdk.core.exception.SdkClientException$BuilderImpl.build(SdkClientException.java:111)
        at 
software.amazon.awssdk.regions.providers.SystemSettingsRegionProvider.exception(SystemSettingsRegionProvider.java:41)
        at java.util.Optional.orElseThrow(Optional.java:290)
        at 
software.amazon.awssdk.regions.providers.SystemSettingsRegionProvider.getRegion(SystemSettingsRegionProvider.java:33)
        at org.apache.hadoop.fs.s3a.sdk2.Regions2.printRegion(Regions2.java:98)
        at org.apache.hadoop.fs.s3a.sdk2.Regions2.run(Regions2.java:67)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:81)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:95)
        at org.apache.hadoop.fs.s3a.sdk2.Regions2.exec(Regions2.java:125)
        at org.apache.hadoop.fs.s3a.sdk2.Regions2.main(Regions2.java:134)
        at regions2.main(regions2.java:25)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.hadoop.util.RunJar.run(RunJar.java:318)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:232)
region is not known

Determining region using AwsProfileRegionProvider
=================================================

Region info in ~/.aws/config
2023-11-21 12:45:44,353 [main] INFO  sdk2.Regions2 
(StoreDurationInfo.java:<init>(91)) - Starting: 
AwsProfileRegionProvider.getRegion()
2023-11-21 12:45:44,380 [main] INFO  sdk2.Regions2 
(StoreDurationInfo.java:close(193)) - Duration of 
AwsProfileRegionProvider.getRegion(): 0:00:00.027
Region is determined as "eu-west-2"

Determining region using InstanceMetadataRegionProvider
=======================================================

EC2 metadata; will only work in AWS infrastructure
2023-11-21 12:45:44,380 [main] INFO  sdk2.Regions2 
(StoreDurationInfo.java:<init>(91)) - Starting: 
InstanceMetadataRegionProvider.getRegion()
2023-11-21 12:45:45,741 [main] INFO  sdk2.Regions2 
(StoreDurationInfo.java:close(193)) - Duration of 
InstanceMetadataRegionProvider.getRegion(): 0:00:01.360
WARNING: Provider InstanceMetadataRegionProvider raised an exception 
software.amazon.awssdk.core.exception.SdkClientException: Unable to contact EC2 
metadata service.
2023-11-21 12:45:45,742 [main] INFO  sdk2.Regions2 
(Regions2.java:printRegion(101)) - Provider raised an exception
software.amazon.awssdk.core.exception.SdkClientException: Unable to contact EC2 
metadata service.
        at 
software.amazon.awssdk.core.exception.SdkClientException$BuilderImpl.build(SdkClientException.java:111)
        at 
software.amazon.awssdk.regions.internal.util.EC2MetadataUtils.getItems(EC2MetadataUtils.java:403)
        at 
software.amazon.awssdk.regions.internal.util.EC2MetadataUtils.getItems(EC2MetadataUtils.java:414)
        at 
software.amazon.awssdk.regions.internal.util.EC2MetadataUtils.getItems(EC2MetadataUtils.java:414)
        at 
software.amazon.awssdk.regions.internal.util.EC2MetadataUtils.getData(EC2MetadataUtils.java:355)
        at 
software.amazon.awssdk.regions.internal.util.EC2MetadataUtils.getData(EC2MetadataUtils.java:351)
        at 
software.amazon.awssdk.regions.internal.util.EC2MetadataUtils.getEC2InstanceRegion(EC2MetadataUtils.java:235)
        at 
software.amazon.awssdk.regions.providers.InstanceProfileRegionProvider.tryDetectRegion(InstanceProfileRegionProvider.java:68)
        at 
software.amazon.awssdk.regions.providers.InstanceProfileRegionProvider.getRegion(InstanceProfileRegionProvider.java:52)
        at org.apache.hadoop.fs.s3a.sdk2.Regions2.printRegion(Regions2.java:98)
        at org.apache.hadoop.fs.s3a.sdk2.Regions2.run(Regions2.java:73)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:81)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:95)
        at org.apache.hadoop.fs.s3a.sdk2.Regions2.exec(Regions2.java:125)
        at org.apache.hadoop.fs.s3a.sdk2.Regions2.main(Regions2.java:134)
        at regions2.main(regions2.java:25)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.hadoop.util.RunJar.run(RunJar.java:318)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:232)
Caused by: java.net.SocketException: Connection reset
        at java.net.SocketInputStream.read(SocketInputStream.java:210)
        at java.net.SocketInputStream.read(SocketInputStream.java:141)
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
        at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:743)
        at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:678)
        at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:702)
        at 
sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1600)
        at 
sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1505)
        at 
java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
        at 
software.amazon.awssdk.regions.util.HttpResourcesUtils.readResource(HttpResourcesUtils.java:116)
        at 
software.amazon.awssdk.regions.internal.util.EC2MetadataUtils.doReadResource(EC2MetadataUtils.java:419)
        at 
software.amazon.awssdk.regions.internal.util.EC2MetadataUtils.getItems(EC2MetadataUtils.java:390)
        ... 20 more
region is not known

Region found: "eu-west-2"
=========================

Region was determined by AwsProfileRegionProvider as  "eu-west-2"


{code}


> S3A: Support dynamic region resolution
> --------------------------------------
>
>                 Key: HADOOP-18984
>                 URL: https://issues.apache.org/jira/browse/HADOOP-18984
>             Project: Hadoop Common
>          Issue Type: Sub-task
>          Components: fs/s3
>    Affects Versions: 3.4.0
>            Reporter: Steve Loughran
>            Assignee: Steve Loughran
>            Priority: Major
>
> AWS v1 SDK used to do dynamic region inference including EC2 metadata. See 
> HADOOP-17771 for that at work with the chain of: sysprops, env vars, EC2 
> metadata.
> I think we *try* to do this, but I'm not sure it is working, maybe related to 
> the region=null vs region="" options: its very hard to differentiate the two



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to