getTrafficPolicyDocument

Generates an Route53 traffic policy document in JSON format for use with resources that expect policy documents such as aws.route53.TrafficPolicy.

Example Usage

Basic Example

package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.AwsFunctions;
import com.pulumi.aws.inputs.GetRegionArgs;
import com.pulumi.aws.route53.Route53Functions;
import com.pulumi.aws.route53.inputs.GetTrafficPolicyDocumentArgs;
import com.pulumi.aws.route53.TrafficPolicy;
import com.pulumi.aws.route53.TrafficPolicyArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
final var current = AwsFunctions.getRegion();
final var exampleTrafficPolicyDocument = Route53Functions.getTrafficPolicyDocument(GetTrafficPolicyDocumentArgs.builder()
.recordType("A")
.startRule("site_switch")
.endpoints(
GetTrafficPolicyDocumentEndpointArgs.builder()
.id("my_elb")
.type("elastic-load-balancer")
.value(String.format("elb-111111.%s.elb.amazonaws.com", current.applyValue(getRegionResult -> getRegionResult.name())))
.build(),
GetTrafficPolicyDocumentEndpointArgs.builder()
.id("site_down_banner")
.type("s3-website")
.region(current.applyValue(getRegionResult -> getRegionResult.name()))
.value("www.example.com")
.build())
.rules(GetTrafficPolicyDocumentRuleArgs.builder()
.id("site_switch")
.type("failover")
.primary(GetTrafficPolicyDocumentRulePrimaryArgs.builder()
.endpointReference("my_elb")
.build())
.secondary(GetTrafficPolicyDocumentRuleSecondaryArgs.builder()
.endpointReference("site_down_banner")
.build())
.build())
.build());
var exampleTrafficPolicy = new TrafficPolicy("exampleTrafficPolicy", TrafficPolicyArgs.builder()
.comment("example comment")
.document(exampleTrafficPolicyDocument.applyValue(getTrafficPolicyDocumentResult -> getTrafficPolicyDocumentResult.json()))
.build());
}
}

Complex Example

The following example showcases the use of nested rules within the traffic policy document and introduces the geoproximity rule type.

package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.route53.Route53Functions;
import com.pulumi.aws.route53.inputs.GetTrafficPolicyDocumentArgs;
import com.pulumi.aws.route53.TrafficPolicy;
import com.pulumi.aws.route53.TrafficPolicyArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
final var exampleTrafficPolicyDocument = Route53Functions.getTrafficPolicyDocument(GetTrafficPolicyDocumentArgs.builder()
.recordType("A")
.startRule("geoproximity_rule")
.endpoints(
GetTrafficPolicyDocumentEndpointArgs.builder()
.id("na_endpoint_a")
.type("elastic-load-balancer")
.value("elb-111111.us-west-1.elb.amazonaws.com")
.build(),
GetTrafficPolicyDocumentEndpointArgs.builder()
.id("na_endpoint_b")
.type("elastic-load-balancer")
.value("elb-222222.us-west-1.elb.amazonaws.com")
.build(),
GetTrafficPolicyDocumentEndpointArgs.builder()
.id("eu_endpoint")
.type("elastic-load-balancer")
.value("elb-333333.eu-west-1.elb.amazonaws.com")
.build(),
GetTrafficPolicyDocumentEndpointArgs.builder()
.id("ap_endpoint")
.type("elastic-load-balancer")
.value("elb-444444.ap-northeast-2.elb.amazonaws.com")
.build())
.rules(
GetTrafficPolicyDocumentRuleArgs.builder()
.id("na_rule")
.type("failover")
.primary(GetTrafficPolicyDocumentRulePrimaryArgs.builder()
.endpointReference("na_endpoint_a")
.build())
.secondary(GetTrafficPolicyDocumentRuleSecondaryArgs.builder()
.endpointReference("na_endpoint_b")
.build())
.build(),
GetTrafficPolicyDocumentRuleArgs.builder()
.id("geoproximity_rule")
.type("geoproximity")
.geoProximityLocations(
GetTrafficPolicyDocumentRuleGeoProximityLocationArgs.builder()
.region("aws:route53:us-west-1")
.bias(10)
.evaluateTargetHealth(true)
.ruleReference("na_rule")
.build(),
GetTrafficPolicyDocumentRuleGeoProximityLocationArgs.builder()
.region("aws:route53:eu-west-1")
.bias(10)
.evaluateTargetHealth(true)
.endpointReference("eu_endpoint")
.build(),
GetTrafficPolicyDocumentRuleGeoProximityLocationArgs.builder()
.region("aws:route53:ap-northeast-2")
.bias(0)
.evaluateTargetHealth(true)
.endpointReference("ap_endpoint")
.build())
.build())
.build());
var exampleTrafficPolicy = new TrafficPolicy("exampleTrafficPolicy", TrafficPolicyArgs.builder()
.comment("example comment")
.document(exampleTrafficPolicyDocument.applyValue(getTrafficPolicyDocumentResult -> getTrafficPolicyDocumentResult.json()))
.build());
}
}

Return

A collection of values returned by getTrafficPolicyDocument.

Parameters

argument

A collection of arguments for invoking getTrafficPolicyDocument.


suspend fun getTrafficPolicyDocument(endpoints: List<GetTrafficPolicyDocumentEndpoint>? = null, recordType: String? = null, rules: List<GetTrafficPolicyDocumentRule>? = null, startEndpoint: String? = null, startRule: String? = null, version: String? = null): GetTrafficPolicyDocumentResult

Return

A collection of values returned by getTrafficPolicyDocument.

Parameters

endpoints

Configuration block for the definitions of the endpoints that you want to use in this traffic policy. See below

recordType

DNS type of all of the resource record sets that Amazon Route 53 will create based on this traffic policy.

rules

Configuration block for definitions of the rules that you want to use in this traffic policy. See below

startEndpoint

An endpoint to be as the starting point for the traffic policy.

startRule

A rule to be as the starting point for the traffic policy.

version

Version of the traffic policy format.

See also


Return

A collection of values returned by getTrafficPolicyDocument.

Parameters

argument

Builder for com.pulumi.aws.route53.kotlin.inputs.GetTrafficPolicyDocumentPlainArgs.

See also