Mike Kaplinskiy created BEAM-6266:
-------------------------------------

             Summary: Newest AWS SDK causes errors on startup without usage
                 Key: BEAM-6266
                 URL: https://issues.apache.org/jira/browse/BEAM-6266
             Project: Beam
          Issue Type: Bug
          Components: io-java-aws
    Affects Versions: 2.9.0, 2.8.0, 2.7.0, 2.6.0
            Reporter: Mike Kaplinskiy
            Assignee: Ismaël Mejía


The S3 filesystem implementation in Beam logs a message like this if it is 
linked in:
{code:java}
2018-12-18 22:17:55 INFO  S3FileSystem:104 - The AWS S3 Beam extension was 
included in this build, but the awsRegion flag was not specified. If you don't 
plan to use S3, then ignore this message.{code}
Previous versions of the AWS libraries seemed to allow you to {{ignore this 
message}} , but the newest libraries throw an exception:
{code:java}
org.apache.beam.sdk.Pipeline.create Pipeline.java: 145
org.apache.beam.sdk.PipelineRunner.fromOptions PipelineRunner.java: 47
org.apache.beam.sdk.io.FileSystems.setDefaultPipelineOptions FileSystems.java: 
482
org.apache.beam.sdk.io.FileSystems.verifySchemesAreUnique FileSystems.java: 492
org.apache.beam.sdk.io.aws.s3.S3FileSystemRegistrar.fromOptions 
S3FileSystemRegistrar.java: 39
org.apache.beam.sdk.io.aws.s3.S3FileSystem.<init> S3FileSystem.java: 108
org.apache.beam.sdk.io.aws.s3.S3FileSystem.buildAmazonS3Client 
S3FileSystem.java: 122
com.amazonaws.client.builder.AwsClientBuilder.withRegion AwsClientBuilder.java: 
245
com.amazonaws.client.builder.AwsClientBuilder.getRegionObject 
AwsClientBuilder.java: 258
com.amazonaws.SdkClientException: Could not find region information for 'null' 
in SDK metadata.
retryable: true{code}
(this stack trace is from 2.6.0, but master is also affected)

 

The root cause is this code that gets run unconditionally 
(https://github.com/apache/beam/blob/master/sdks/java/io/amazon-web-services/src/main/java/org/apache/beam/sdk/io/aws/s3/DefaultS3ClientBuilderFactory.java#L42):
{code:java}
builder = builder.withRegion(s3Options.getAwsRegion());{code}
Unfortunately the latest AWS library will throw if you pass {{null}} to 
{{withRegion}}. It previously did nothing. This release of the AWS java sdk 
added the error check: 
[https://github.com/aws/aws-sdk-java/commit/8f07cc35eec9047f7cfdbc7de3abc6d4327b08d0]

 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to