Search in sources :

Example 6 with S3AsyncClient

use of org.jclouds.s3.S3AsyncClient in project uploader by smoketurner.

the class UploaderApplication method run.

@Override
public void run(@Nonnull final UploaderConfiguration configuration, @Nonnull final Environment environment) throws Exception {
    final NettyConfiguration nettyConfig = configuration.getNetty();
    final AwsConfiguration awsConfig = configuration.getAws();
    // we create the event loop groups first so we can share them between
    // the Netty server receiving the requests and the AWS S3 client
    // uploading the batches to S3.
    final EventLoopGroup bossGroup = Netty.newBossEventLoopGroup();
    final EventLoopGroup workerGroup = Netty.newWorkerEventLoopGroup();
    environment.lifecycle().manage(new EventLoopGroupManager(bossGroup));
    environment.lifecycle().manage(new EventLoopGroupManager(workerGroup));
    final Size maxUploadSize = awsConfig.getMaxUploadSize();
    final EventLoopGroupConfiguration eventLoopConfig = EventLoopGroupConfiguration.builder().eventLoopGroup(workerGroup).build();
    final NettySdkHttpClientFactory nettyFactory = NettySdkHttpClientFactory.builder().eventLoopGroupConfiguration(eventLoopConfig).build();
    final ClientAsyncHttpConfiguration httpConfig = ClientAsyncHttpConfiguration.builder().httpClientFactory(nettyFactory).build();
    // build the asynchronous S3 client with the configured credentials
    // provider and region and use the same Netty event group as the server.
    final S3AsyncClient s3 = S3AsyncClient.builder().credentialsProvider(awsConfig.getCredentials()).region(awsConfig.getRegion()).asyncHttpConfiguration(httpConfig).build();
    environment.lifecycle().manage(new AutoCloseableManager(s3));
    final Uploader uploader = new Uploader(s3, awsConfig);
    final UploadInitializer initializer = new UploadInitializer(nettyConfig, uploader, maxUploadSize.toBytes());
    final ServerBootstrap bootstrap = new ServerBootstrap();
    // Start the server
    final ChannelFuture future = bootstrap.group(bossGroup, workerGroup).handler(new LoggingHandler(LogLevel.INFO)).option(ChannelOption.SO_BACKLOG, 128).channel(Netty.serverChannelType()).childOption(ChannelOption.SO_KEEPALIVE, true).childHandler(initializer).bind(nettyConfig.getListenPort());
    environment.lifecycle().manage(new ChannelFutureManager(future));
    // Resources
    environment.jersey().register(new BatchResource(uploader));
    environment.jersey().register(new PingResource());
    environment.jersey().register(new VersionResource());
}
Also used : ChannelFuture(io.netty.channel.ChannelFuture) AwsConfiguration(com.smoketurner.uploader.config.AwsConfiguration) NettySdkHttpClientFactory(software.amazon.awssdk.http.nio.netty.NettySdkHttpClientFactory) LoggingHandler(io.netty.handler.logging.LoggingHandler) EventLoopGroupConfiguration(software.amazon.awssdk.http.nio.netty.EventLoopGroupConfiguration) AutoCloseableManager(io.dropwizard.lifecycle.AutoCloseableManager) Size(io.dropwizard.util.Size) ChannelFutureManager(com.smoketurner.uploader.managed.ChannelFutureManager) VersionResource(com.smoketurner.uploader.resources.VersionResource) EventLoopGroupManager(com.smoketurner.uploader.managed.EventLoopGroupManager) ServerBootstrap(io.netty.bootstrap.ServerBootstrap) PingResource(com.smoketurner.uploader.resources.PingResource) S3AsyncClient(software.amazon.awssdk.services.s3.S3AsyncClient) ClientAsyncHttpConfiguration(software.amazon.awssdk.core.client.builder.ClientAsyncHttpConfiguration) EventLoopGroup(io.netty.channel.EventLoopGroup) UploadInitializer(com.smoketurner.uploader.handler.UploadInitializer) NettyConfiguration(com.smoketurner.uploader.config.NettyConfiguration) BatchResource(com.smoketurner.uploader.resources.BatchResource) Uploader(com.smoketurner.uploader.core.Uploader)

Example 7 with S3AsyncClient

use of org.jclouds.s3.S3AsyncClient in project flink by apache.

the class KinesisFirehoseTableITTest method readFromS3.

private List<Order> readFromS3() throws Exception {
    Deadline deadline = Deadline.fromNow(Duration.ofMinutes(1));
    List<S3Object> ordersObjects;
    List<Order> orders;
    do {
        Thread.sleep(1000);
        ordersObjects = listBucketObjects(s3AsyncClient, BUCKET_NAME);
        orders = readObjectsFromS3Bucket(s3AsyncClient, ordersObjects, BUCKET_NAME, responseBytes -> fromJson(new String(responseBytes.asByteArrayUnsafe()), Order.class));
    } while (deadline.hasTimeLeft() && orders.size() < NUM_ELEMENTS);
    return orders;
}
Also used : IntStream(java.util.stream.IntStream) JsonProperty(com.fasterxml.jackson.annotation.JsonProperty) Deadline(org.apache.flink.api.common.time.Deadline) BeforeClass(org.junit.BeforeClass) DockerImageName(org.testcontainers.utility.DockerImageName) S3Object(software.amazon.awssdk.services.s3.model.S3Object) AWSServicesTestUtils.createBucket(org.apache.flink.connector.aws.testutils.AWSServicesTestUtils.createBucket) DockerImageVersions(org.apache.flink.util.DockerImageVersions) LoggerFactory(org.slf4j.LoggerFactory) IamAsyncClient(software.amazon.awssdk.services.iam.IamAsyncClient) LocalstackContainer(org.apache.flink.connector.aws.testutils.LocalstackContainer) Network(org.testcontainers.containers.Network) TestUtils(org.apache.flink.tests.util.TestUtils) SdkSystemSetting(software.amazon.awssdk.core.SdkSystemSetting) KinesisFirehoseTestUtils.createFirehoseClient(org.apache.flink.connector.firehose.sink.testutils.KinesisFirehoseTestUtils.createFirehoseClient) KinesisFirehoseTestUtils.createDeliveryStream(org.apache.flink.connector.firehose.sink.testutils.KinesisFirehoseTestUtils.createDeliveryStream) SQLJobSubmission(org.apache.flink.tests.util.flink.SQLJobSubmission) After(org.junit.After) Duration(java.time.Duration) TestLogger(org.apache.flink.util.TestLogger) Timeout(org.junit.rules.Timeout) Assertions(org.assertj.core.api.Assertions) ClassRule(org.junit.ClassRule) SdkAsyncHttpClient(software.amazon.awssdk.http.async.SdkAsyncHttpClient) Path(java.nio.file.Path) Before(org.junit.Before) AWSServicesTestUtils.createIAMRole(org.apache.flink.connector.aws.testutils.AWSServicesTestUtils.createIAMRole) AfterClass(org.junit.AfterClass) AWSServicesTestUtils.createS3Client(org.apache.flink.connector.aws.testutils.AWSServicesTestUtils.createS3Client) Logger(org.slf4j.Logger) AWSServicesTestUtils.listBucketObjects(org.apache.flink.connector.aws.testutils.AWSServicesTestUtils.listBucketObjects) S3AsyncClient(software.amazon.awssdk.services.s3.S3AsyncClient) Files(java.nio.file.Files) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException) Test(org.junit.Test) Collectors(java.util.stream.Collectors) Objects(java.util.Objects) TimeUnit(java.util.concurrent.TimeUnit) List(java.util.List) AWSServicesTestUtils.createHttpClient(org.apache.flink.connector.aws.testutils.AWSServicesTestUtils.createHttpClient) Paths(java.nio.file.Paths) FirehoseAsyncClient(software.amazon.awssdk.services.firehose.FirehoseAsyncClient) FlinkContainers(org.apache.flink.tests.util.flink.container.FlinkContainers) AWSServicesTestUtils.readObjectsFromS3Bucket(org.apache.flink.connector.aws.testutils.AWSServicesTestUtils.readObjectsFromS3Bucket) AWSServicesTestUtils.createIamClient(org.apache.flink.connector.aws.testutils.AWSServicesTestUtils.createIamClient) Deadline(org.apache.flink.api.common.time.Deadline) S3Object(software.amazon.awssdk.services.s3.model.S3Object)

Aggregations

S3AsyncClient (software.amazon.awssdk.services.s3.S3AsyncClient)6 Region (software.amazon.awssdk.regions.Region)3 JsonProperty (com.fasterxml.jackson.annotation.JsonProperty)1 JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)1 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)1 AwsConfiguration (com.smoketurner.uploader.config.AwsConfiguration)1 NettyConfiguration (com.smoketurner.uploader.config.NettyConfiguration)1 Uploader (com.smoketurner.uploader.core.Uploader)1 UploadInitializer (com.smoketurner.uploader.handler.UploadInitializer)1 ChannelFutureManager (com.smoketurner.uploader.managed.ChannelFutureManager)1 EventLoopGroupManager (com.smoketurner.uploader.managed.EventLoopGroupManager)1 BatchResource (com.smoketurner.uploader.resources.BatchResource)1 PingResource (com.smoketurner.uploader.resources.PingResource)1 VersionResource (com.smoketurner.uploader.resources.VersionResource)1 AutoCloseableManager (io.dropwizard.lifecycle.AutoCloseableManager)1 Size (io.dropwizard.util.Size)1 ServerBootstrap (io.netty.bootstrap.ServerBootstrap)1 ChannelFuture (io.netty.channel.ChannelFuture)1 EventLoopGroup (io.netty.channel.EventLoopGroup)1 LoggingHandler (io.netty.handler.logging.LoggingHandler)1