AWS rules engine library functions#
AWS-specific rules engine library functions make it possible to integrate AWS concepts like Amazon Resource Names (ARNs) and Partitions. An additional dependency is required to access these functions:
The following example adds smithy-aws-endpoints
as a dependency
to a Smithy project:
{
"maven": {
"dependencies": [
"software.amazon.smithy:smithy-aws-endpoints:1.53.0"
]
}
}
dependencies {
...
implementation("software.amazon.smithy:smithy-aws-endpoints:1.53.0")
...
}
dependencies {
...
implementation 'software.amazon.smithy:smithy-aws-endpoints:1.53.0'
...
}
aws.partition
function#
- Summary
- Provides a Partition structure of content for the
- Argument type
- region:
string
- region:
- Return type
option<Partition>
Contains the region's partition, or an empty optional if the region is unknown.
The following example uses aws.partition
to provide partition
information from the region in the value of the foo
parameter:
{
"fn": "aws.partition",
"argv": [
{"ref": "foo"}
]
}
Partition
structure#
The Partition
structure is returned from the aws.partition function when
its input is a known region. The Partition
object contains the following
properties:
Property | Type | Description |
---|---|---|
name | string |
The partition's name. |
dnsSuffix | string |
The partition's default DNS suffix. |
dualStackDnsSuffix | string |
The partition's dual-stack specific DNS suffix. |
supportsFIPS | bool |
Indicates whether the partition supports a FIPS compliance mode. |
supportsDualStack | bool |
Indicates whether the partition supports dual-stack endpoints. |
implicitGlobalRegion | string |
The region used by partitional (non-regionalized/global) services for signing. |
aws.parseArn
function#
- Summary
- Computes an ARN structure given an input
string
. - Argument type
- value:
string
- value:
- Return type
option<ARN>
Contains the parsed ARN, or an empty optional if the ARN could not be parsed
The following example uses aws.parseArn
to parse the value of the foo
parameter into its component parts:
{
"fn": "aws.parseArn",
"argv": [
{"ref": "foo"}
]
}
ARN
structure#
The ARN
structure is returned from the aws.parseArn function when its
input is a valid ARN. The ARN
object
contains the following properties:
Property | Type | Description |
---|---|---|
partition | string |
The partition where the resource is located. |
service | string |
The service namespace where the resource is located. |
region | string |
The region where the resource is located. May be an empty length value if the resource is not region-based. |
accountId | string |
The account that the resource is managed by. May be an empty length value if the resource is not account-based. |
resourceId | array<string> |
An array of resourceId components, where the final segment of the
ARN is split on : and / characters. |
Examples#
The following table shows valid and invalid values for an input to the aws.parseArn function:
Input | Valid? | partition | service | region | accountId | resourceId |
---|---|---|---|---|---|---|
arn:aws:sns:us-west-2:012345678910:example-sns-topic-name |
true |
aws |
sns |
us-west-2 |
012345678910 |
example-sns-topic-name |
11111111-2222-3333-4444-555555555555 |
false |
|||||
arn:aws:ec2:us-east-1:012345678910:vpc/vpc-0e9801d129EXAMPLE |
true |
aws |
ec2 |
us-east-1 |
012345678910 |
[vpc, vpc-0e9801d129EXAMPLE] |
arn:aws:iam::012345678910:user/johndoe |
true |
aws |
iam |
An empty string. | 012345678910 |
[user, johndoe] |
arn:aws:s3:::bucket_name |
true |
aws |
s3 |
An empty string. | An empty string. | bucket_name |
aws.isVirtualHostableS3Bucket
function#
- Summary
- Evaluates whether the input string is a compliant RFC 1123 host segment
and contains a segment that is a valid bucket name. When
allowSubDomains
is true, evaluates whether the input string is composed of values that are each compliant values joined by dot (.
) characters. - Argument type
- value:
string
- allowSubDomains:
bool
- value:
- Return type
bool
The following example uses aws.isVirtualHostableS3Bucket
to check if the
value of the foo
parameter is an RFC 1123 compliant host segment and a
valid bucket name.
{
"fn": "aws.isVirtualHostableS3Bucket",
"argv": [
{"ref": "foo"},
false
]
}