AWS specific components for managing endpoints in Smithy
npx @tessl/cli install tessl/maven-software-amazon-smithy--smithy-aws-endpoints@1.58.0Smithy AWS Endpoints provides AWS-specific endpoint components for the Smithy framework, focusing on rule-set functions for AWS partitions, ARN parsing, endpoint authentication utilities, and S3 virtual hosting capabilities. It integrates with Smithy's rules engine to enable AWS-aware endpoint resolution and is designed for use in AWS service modeling, SDK generation, and endpoint rule evaluation.
build.gradle.kts:
dependencies {
implementation("software.amazon.smithy:smithy-aws-endpoints:1.58.0")
}import software.amazon.smithy.rulesengine.aws.language.functions.AwsRuleSetExtension;
import software.amazon.smithy.rulesengine.aws.language.functions.AwsPartition;
import software.amazon.smithy.rulesengine.aws.language.functions.ParseArn;
import software.amazon.smithy.rulesengine.aws.language.functions.IsVirtualHostableS3Bucket;
import software.amazon.smithy.rulesengine.aws.language.functions.EndpointAuthUtils;
import software.amazon.smithy.rulesengine.aws.traits.*;import software.amazon.smithy.rulesengine.aws.language.functions.AwsPartition;
import software.amazon.smithy.rulesengine.aws.language.functions.ParseArn;
import software.amazon.smithy.rulesengine.aws.language.functions.AwsArn;
// Use AWS partition function to resolve regional information
var partitionFunction = AwsPartition.getDefinition();
// Parse an AWS ARN to extract components
Optional<AwsArn> parsedArn = AwsArn.parse("arn:aws:s3:us-east-1:123456789012:bucket/my-bucket");
if (parsedArn.isPresent()) {
AwsArn arn = parsedArn.get();
String partition = arn.getPartition(); // "aws"
String service = arn.getService(); // "s3"
String region = arn.getRegion(); // "us-east-1"
String accountId = arn.getAccountId(); // "123456789012"
}The Smithy AWS Endpoints package is built around several key components:
AwsRuleSetExtension provides AWS-specific built-ins and functions to the Smithy rules engineAwsBuiltIns defines AWS-specific parameters like region, FIPS, dual-stack configurationMain extension class that integrates AWS-specific functionality into the Smithy rules engine, providing built-in parameters, library functions, and authentication validators.
public final class AwsRuleSetExtension implements EndpointRuleSetExtension {
public List<Parameter> getBuiltIns();
public List<FunctionDefinition> getLibraryFunctions();
public List<AuthSchemeValidator> getAuthSchemeValidators();
}Defines AWS-specific built-in parameters for endpoint rules including region, dual-stack, FIPS, and service-specific configurations.
public final class AwsBuiltIns {
public static final Parameter REGION;
public static final Parameter DUALSTACK;
public static final Parameter FIPS;
public static final Parameter ACCOUNT_ID;
// ... additional parameters
}Functions for mapping AWS regions to partitions and resolving partition-specific endpoint information.
public final class AwsPartition extends LibraryFunction {
public static final String ID = "aws.partition";
public static Definition getDefinition();
public static AwsPartition ofExpressions(ToExpression region);
}Components for parsing and working with AWS ARNs, including validation and component extraction.
public final class ParseArn extends LibraryFunction {
public static final String ID = "aws.parseArn";
public static Definition getDefinition();
public static ParseArn ofExpressions(ToExpression arn);
}
public final class AwsArn implements ToSmithyBuilder<AwsArn> {
public static Optional<AwsArn> parse(String arn);
public String getPartition();
public String getService();
public String getRegion();
public String getAccountId();
public List<String> getResource();
}Utilities for determining S3 virtual hosting capabilities and bucket name validation.
public final class IsVirtualHostableS3Bucket extends LibraryFunction {
public static final String ID = "aws.isVirtualHostableS3Bucket";
public static Definition getDefinition();
public static IsVirtualHostableS3Bucket ofExpressions(ToExpression bucket, ToExpression allowSubdomains);
}Helper methods for constructing AWS authentication schemes in endpoint rules.
public final class EndpointAuthUtils {
public static Endpoint.Builder sigv4(Endpoint.Builder builder, Literal signingRegion, Literal signingService);
public static Endpoint.Builder sigv4a(Endpoint.Builder builder, List<Literal> signingRegionSet, Literal signingService);
public static boolean isSigV4EquivalentAuthScheme(String authScheme);
}Annotation traits for describing AWS endpoint behavior and configuration in Smithy models.
public final class RuleBasedEndpointsTrait extends AnnotationTrait {
public static final ShapeId ID = ShapeId.from("aws.endpoints#rulesBasedEndpoints");
}
public final class StandardRegionalEndpointsTrait extends AnnotationTrait {
public static final ShapeId ID = ShapeId.from("aws.endpoints#standardRegionalEndpoints");
}
public final class EndpointModifierTrait extends AbstractTrait {
public static final ShapeId ID = ShapeId.from("aws.endpoints#endpointModifier");
public EndpointPatternType getPattern();
public List<PartitionSpecialCase> getSpecialCases();
}Validators for AWS-specific endpoint rules, built-in parameters, and special case configurations.
public final class RuleSetAwsBuiltInValidator implements Validator {
// Validates AWS built-in parameter usage in rule sets
}
public final class AwsSpecialCaseEndpointValidator implements Validator {
// Validates AWS endpoint special case configurations
}