All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.polyglotted.common.aws.AwsConfig Maven / Gradle / Ivy

package io.polyglotted.common.aws;

import com.amazonaws.regions.Regions;
import com.amazonaws.services.sns.AmazonSNS;
import com.amazonaws.services.sns.AmazonSNSClientBuilder;
import com.amazonaws.services.sqs.AmazonSQS;
import com.amazonaws.services.sqs.AmazonSQSClientBuilder;
import io.polyglotted.applauncher.settings.Attribute;
import io.polyglotted.applauncher.settings.Settings;
import io.polyglotted.common.aws.AbaciCredentialsProviderChain.ConfigCredentialsProvider;

@Settings
@SuppressWarnings("unused")
public interface AwsConfig {
    int MAX_MESSAGE_SIZE = 262144; //256KB

    @Attribute(name = "aws.access_key")
    default String accessKey() { return ""; }

    @Attribute(name = "aws.secret_key", encrypted = true)
    default String secretKey() { return ""; }

    @Attribute(name = "aws.region")
    default String region() { return "eu-west-1"; }

    static AmazonSQS createSqsClient(AwsConfig config) {
        return AmazonSQSClientBuilder.standard()
            .withCredentials(new AbaciCredentialsProviderChain(new ConfigCredentialsProvider(config)))
            .withRegion(Regions.fromName(config.region()))
            .build();
    }

    static AmazonSNS createSnsClient(AwsConfig config) {
        return AmazonSNSClientBuilder.standard()
            .withCredentials(new AbaciCredentialsProviderChain(new ConfigCredentialsProvider(config)))
            .withRegion(Regions.fromName(config.region()))
            .build();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy