Sha256: 26a4b21536643fa9857d9f8628a49f084742dac0a31ac74027e611cc585fc921

Contents?: true

Size: 1.76 KB

Versions: 1

Compression:

Stored size: 1.76 KB

Contents

package org.embulk.input.s3;

import com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.google.common.base.Optional;
import org.embulk.config.Config;
import org.embulk.config.ConfigDefault;

import static com.amazonaws.services.s3.AmazonS3Client.S3_SERVICE_NAME;
import static com.amazonaws.util.AwsHostNameUtils.parseRegion;
import static com.amazonaws.util.RuntimeHttpUtils.toUri;

public class S3FileInputPlugin
        extends AbstractS3FileInputPlugin
{
    public interface S3PluginTask
            extends PluginTask
    {
        @Config("endpoint")
        @ConfigDefault("null")
        public Optional<String> getEndpoint();
    }

    @Override
    protected Class<? extends PluginTask> getTaskClass()
    {
        return S3PluginTask.class;
    }

    @Override
    protected AmazonS3 newS3Client(PluginTask task)
    {
        S3PluginTask t = (S3PluginTask) task;

        AmazonS3ClientBuilder builder = super.defaultS3ClientBuilder(t);

        if (t.getEndpoint().isPresent()) {
            String endpoint = t.getEndpoint().get();
            builder.setEndpointConfiguration(new EndpointConfiguration(
                    endpoint,
                    // Although client will treat endpoint's region as the signer region
                    // if we left this as null, but such that behaviour is undocumented,
                    // so it is explicitly calculated here for future-proofing.
                    parseRegion(
                            toUri(endpoint, getClientConfiguration(task)).getHost(),
                            S3_SERVICE_NAME)));
        }

        return builder.build();
    }
}

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
embulk-input-s3-0.2.12 src/main/java/org/embulk/input/s3/S3FileInputPlugin.java