embulk-input-s3 0.2.11 → 0.2.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 034a5456271657abde4e9dc5aac76f7e05efc7e4
4
- data.tar.gz: 74f38ae4046a4292487361a81d74c3be201b5aaa
3
+ metadata.gz: 99dc2bbe73f61b74e92b3f345c963b73ebb75bd0
4
+ data.tar.gz: 6c42a7ae99a51dad4d9ec4c20b629a9b235db8b3
5
5
  SHA512:
6
- metadata.gz: 3cc77fc7cf409ce21e2a7373fc983727953a0d22b3c5676c43f4a4c3182a15de487ec3633d3b7b037386451317b5ea5ee2861ce46ae22aff66e1ef0a462b4f42
7
- data.tar.gz: 19ff469baf507e141f91a17161d7bf2b48172e273b87b1ef1abb2464c385dc7ea7ced75e64baf04928295bce218203d5f48d2ecedd718efd7291ba53693c78c0
6
+ metadata.gz: 8dee445a23d719bb9f7bf1fd9dde6f0d25faa2e38e8eec567e8d7a61518841f933caf8e35ce79a27a70327d7b75ab65eb1cb54327d7d4e664c848ed3fc24b265
7
+ data.tar.gz: 728534ca59e6c3d334335f821d0834bc04f8fd76c5934adfa62132b638a81b1b6dc12874ee718d8352adabe1de3bf26eee3f1a8b3bcf8d117f74076cdc4a3935
@@ -1,21 +1,18 @@
1
1
  package org.embulk.input.s3;
2
2
 
3
3
  import java.util.List;
4
- import java.util.ArrayList;
5
- import java.util.Collections;
6
4
  import java.util.Iterator;
7
5
  import java.io.IOException;
8
6
  import java.io.InterruptedIOException;
9
7
  import java.io.InputStream;
10
8
 
9
+ import com.amazonaws.services.s3.AmazonS3;
10
+ import com.amazonaws.services.s3.AmazonS3ClientBuilder;
11
11
  import com.google.common.annotations.VisibleForTesting;
12
- import com.google.common.collect.ImmutableList;
13
12
  import com.google.common.base.Optional;
14
13
  import com.google.common.base.Throwables;
15
14
  import org.slf4j.Logger;
16
- import com.amazonaws.auth.AWSCredentials;
17
15
  import com.amazonaws.auth.AWSCredentialsProvider;
18
- import com.amazonaws.services.s3.AmazonS3Client;
19
16
  import com.amazonaws.services.s3.model.ListObjectsRequest;
20
17
  import com.amazonaws.services.s3.model.S3ObjectSummary;
21
18
  import com.amazonaws.services.s3.model.ObjectListing;
@@ -44,8 +41,6 @@ import org.embulk.spi.util.RetryExecutor.RetryGiveupException;
44
41
  import org.embulk.util.aws.credentials.AwsCredentials;
45
42
  import org.embulk.util.aws.credentials.AwsCredentialsTask;
46
43
 
47
- import static com.amazonaws.Protocol.HTTP;
48
- import static com.amazonaws.Protocol.HTTPS;
49
44
  import static org.embulk.spi.util.RetryExecutor.retryExecutor;
50
45
 
51
46
  public abstract class AbstractS3FileInputPlugin
@@ -133,9 +128,22 @@ public abstract class AbstractS3FileInputPlugin
133
128
  // do nothing
134
129
  }
135
130
 
136
- protected AmazonS3Client newS3Client(PluginTask task)
137
- {
138
- return new AmazonS3Client(getCredentialsProvider(task), getClientConfiguration(task));
131
+ /**
132
+ * Provide an overridable default client.
133
+ * Since this returns an immutable object, it is not for any further customizations by mutating,
134
+ * e.g., {@link AmazonS3#setEndpoint} will throw a runtime {@link UnsupportedOperationException}
135
+ * Subclass's customization should be done through {@link AbstractS3FileInputPlugin#defaultS3ClientBuilder}.
136
+ */
137
+ protected AmazonS3 newS3Client(PluginTask task) {
138
+ return defaultS3ClientBuilder(task).build();
139
+ }
140
+
141
+ /** A base builder for the subclasses to then customize. */
142
+ protected AmazonS3ClientBuilder defaultS3ClientBuilder(PluginTask task) {
143
+ return AmazonS3ClientBuilder
144
+ .standard()
145
+ .withCredentials(getCredentialsProvider(task))
146
+ .withClientConfiguration(getClientConfiguration(task));
139
147
  }
140
148
 
141
149
  protected AWSCredentialsProvider getCredentialsProvider(PluginTask task)
@@ -187,7 +195,7 @@ public abstract class AbstractS3FileInputPlugin
187
195
  private FileList listFiles(PluginTask task)
188
196
  {
189
197
  try {
190
- AmazonS3Client client = newS3Client(task);
198
+ AmazonS3 client = newS3Client(task);
191
199
  String bucketName = task.getBucket();
192
200
 
193
201
  if (task.getPathPrefix().equals("/")) {
@@ -218,7 +226,7 @@ public abstract class AbstractS3FileInputPlugin
218
226
  * The resulting list does not include the file that's size == 0.
219
227
  */
220
228
  public static void listS3FilesByPrefix(FileList.Builder builder,
221
- AmazonS3Client client, String bucketName,
229
+ AmazonS3 client, String bucketName,
222
230
  String prefix, Optional<String> lastPath)
223
231
  {
224
232
  String lastKey = lastPath.orNull();
@@ -250,11 +258,11 @@ public abstract class AbstractS3FileInputPlugin
250
258
  {
251
259
  private final Logger log = Exec.getLogger(S3InputStreamReopener.class);
252
260
 
253
- private final AmazonS3Client client;
261
+ private final AmazonS3 client;
254
262
  private final GetObjectRequest request;
255
263
  private final long contentLength;
256
264
 
257
- public S3InputStreamReopener(AmazonS3Client client, GetObjectRequest request, long contentLength)
265
+ public S3InputStreamReopener(AmazonS3 client, GetObjectRequest request, long contentLength)
258
266
  {
259
267
  this.client = client;
260
268
  this.request = request;
@@ -336,7 +344,7 @@ public abstract class AbstractS3FileInputPlugin
336
344
  private class SingleFileProvider
337
345
  implements InputStreamFileInput.Provider
338
346
  {
339
- private AmazonS3Client client;
347
+ private AmazonS3 client;
340
348
  private final String bucket;
341
349
  private final Iterator<String> iterator;
342
350
 
@@ -1,10 +1,16 @@
1
1
  package org.embulk.input.s3;
2
2
 
3
- import com.google.common.base.Optional;
3
+ import com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration;
4
+ import com.amazonaws.services.s3.AmazonS3;
4
5
  import com.amazonaws.services.s3.AmazonS3Client;
6
+ import com.amazonaws.services.s3.AmazonS3ClientBuilder;
7
+ import com.google.common.base.Optional;
5
8
  import org.embulk.config.Config;
6
9
  import org.embulk.config.ConfigDefault;
7
- import org.embulk.input.s3.AbstractS3FileInputPlugin;
10
+
11
+ import static com.amazonaws.services.s3.AmazonS3Client.S3_SERVICE_NAME;
12
+ import static com.amazonaws.util.AwsHostNameUtils.parseRegion;
13
+ import static com.amazonaws.util.RuntimeHttpUtils.toUri;
8
14
 
9
15
  public class S3FileInputPlugin
10
16
  extends AbstractS3FileInputPlugin
@@ -24,16 +30,24 @@ public class S3FileInputPlugin
24
30
  }
25
31
 
26
32
  @Override
27
- protected AmazonS3Client newS3Client(PluginTask task)
33
+ protected AmazonS3 newS3Client(PluginTask task)
28
34
  {
29
35
  S3PluginTask t = (S3PluginTask) task;
30
36
 
31
- AmazonS3Client client = super.newS3Client(t);
37
+ AmazonS3ClientBuilder builder = super.defaultS3ClientBuilder(t);
32
38
 
33
39
  if (t.getEndpoint().isPresent()) {
34
- client.setEndpoint(t.getEndpoint().get());
40
+ String endpoint = t.getEndpoint().get();
41
+ builder.setEndpointConfiguration(new EndpointConfiguration(
42
+ endpoint,
43
+ // Although client will treat endpoint's region as the signer region
44
+ // if we left this as null, but such that behaviour is undocumented,
45
+ // so it is explicitly calculated here for future-proofing.
46
+ parseRegion(
47
+ toUri(endpoint, getClientConfiguration(task)).getHost(),
48
+ S3_SERVICE_NAME)));
35
49
  }
36
50
 
37
- return client;
51
+ return builder.build();
38
52
  }
39
53
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embulk-input-s3
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.11
4
+ version: 0.2.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sadayuki Furuhashi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-27 00:00:00.000000000 Z
11
+ date: 2018-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -57,15 +57,21 @@ files:
57
57
  - src/test/java/org/embulk/input/s3/TestS3FileInputPlugin.java
58
58
  - src/test/java/org/embulk/input/s3/TestS3InputStreamReopener.java
59
59
  - src/test/resources/sample_01.csv
60
- - classpath/aws-java-sdk-core-1.10.33.jar
61
- - classpath/aws-java-sdk-kms-1.10.33.jar
62
- - classpath/aws-java-sdk-s3-1.10.33.jar
63
- - classpath/commons-codec-1.6.jar
64
- - classpath/embulk-input-s3-0.2.11.jar
65
- - classpath/embulk-util-aws-credentials-0.2.11.jar
66
- - classpath/httpclient-4.3.6.jar
67
- - classpath/httpcore-4.3.3.jar
60
+ - classpath/aws-java-sdk-core-1.11.253.jar
61
+ - classpath/aws-java-sdk-kms-1.11.253.jar
62
+ - classpath/aws-java-sdk-s3-1.11.253.jar
63
+ - classpath/commons-codec-1.9.jar
64
+ - classpath/embulk-input-s3-0.2.12.jar
65
+ - classpath/embulk-util-aws-credentials-0.2.12.jar
66
+ - classpath/httpclient-4.5.2.jar
67
+ - classpath/httpcore-4.4.4.jar
68
+ - classpath/ion-java-1.0.2.jar
69
+ - classpath/jackson-annotations-2.6.0.jar
70
+ - classpath/jackson-core-2.6.7.jar
71
+ - classpath/jackson-databind-2.6.7.1.jar
72
+ - classpath/jackson-dataformat-cbor-2.6.7.jar
68
73
  - classpath/jcl-over-slf4j-1.7.12.jar
74
+ - classpath/jmespath-java-1.11.253.jar
69
75
  homepage: https://github.com/embulk/embulk-input-s3
70
76
  licenses:
71
77
  - Apache 2.0
Binary file