get Traffic Policy Document
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
A collection of arguments for invoking getTrafficPolicyDocument.
Return
A collection of values returned by getTrafficPolicyDocument.
Parameters
Configuration block for the definitions of the endpoints that you want to use in this traffic policy. See below
DNS type of all of the resource record sets that Amazon Route 53 will create based on this traffic policy.
Configuration block for definitions of the rules that you want to use in this traffic policy. See below
An endpoint to be as the starting point for the traffic policy.
A rule to be as the starting point for the traffic policy.
Version of the traffic policy format.
See also
Return
A collection of values returned by getTrafficPolicyDocument.
Parameters
Builder for com.pulumi.aws.route53.kotlin.inputs.GetTrafficPolicyDocumentPlainArgs.