Package com.pulumi.aws.cloudfront
Class RealtimeLogConfig
- java.lang.Object
-
- com.pulumi.resources.Resource
-
- com.pulumi.resources.CustomResource
-
- com.pulumi.aws.cloudfront.RealtimeLogConfig
-
public class RealtimeLogConfig extends com.pulumi.resources.CustomResourceProvides a CloudFront real-time log configuration resource. ## Example Usage ### Basic Usage
### Logging Custom Data From a CloudFront Function A viewer request or viewer response CloudFront Function can write arbitrary data into the log record for the request by calling the `cf.logCustomData()` helper method, which requires JavaScript runtime 2.0 (`cloudfront-js-2.0`) and the `cloudfront` module. The data is surfaced in the `viewer-request-log-data` and `viewer-response-log-data` fields, which must be selected in the real-time log configuration for them to be delivered.package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.iam.IamFunctions; import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs; import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs; import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs; import com.pulumi.aws.iam.Role; import com.pulumi.aws.iam.RoleArgs; import com.pulumi.aws.iam.RolePolicy; import com.pulumi.aws.iam.RolePolicyArgs; import com.pulumi.aws.cloudfront.RealtimeLogConfig; import com.pulumi.aws.cloudfront.RealtimeLogConfigArgs; import com.pulumi.aws.cloudfront.inputs.RealtimeLogConfigEndpointArgs; import com.pulumi.aws.cloudfront.inputs.RealtimeLogConfigEndpointKinesisStreamConfigArgs; import com.pulumi.resources.CustomResourceOptions; import java.util.ArrayList; import java.util.Arrays; 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 assumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder() .statements(GetPolicyDocumentStatementArgs.builder() .principals(GetPolicyDocumentStatementPrincipalArgs.builder() .type("Service") .identifiers("cloudfront.amazonaws.com") .build()) .effect("Allow") .actions("sts:AssumeRole") .build()) .build()); var exampleRole = new Role("exampleRole", RoleArgs.builder() .name("cloudfront-realtime-log-config-example") .assumeRolePolicy(assumeRole.json()) .build()); final var example = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder() .statements(GetPolicyDocumentStatementArgs.builder() .effect("Allow") .actions( "kinesis:DescribeStreamSummary", "kinesis:DescribeStream", "kinesis:PutRecord", "kinesis:PutRecords") .resources(exampleAwsKinesisStream.arn()) .build()) .build()); var exampleRolePolicy = new RolePolicy("exampleRolePolicy", RolePolicyArgs.builder() .name("cloudfront-realtime-log-config-example") .role(exampleRole.id()) .policy(example.json()) .build()); var exampleRealtimeLogConfig = new RealtimeLogConfig("exampleRealtimeLogConfig", RealtimeLogConfigArgs.builder() .endpoint(RealtimeLogConfigEndpointArgs.builder() .kinesisStreamConfig(RealtimeLogConfigEndpointKinesisStreamConfigArgs.builder() .roleArn(exampleRole.arn()) .streamArn(exampleAwsKinesisStream.arn()) .build()) .streamType("Kinesis") .build()) .name("example") .samplingRate(75) .fields( "timestamp", "c-ip") .build(), CustomResourceOptions.builder() .dependsOn(exampleRolePolicy) .build()); } }
Associate the function with a cache behavior on the distribution (`functionAssociation` with `eventType = "viewer-request"`) and attach the real-time log configuration to the same cache behavior via `realtimeLogConfigArn`. The field is `-` for any request whose viewer request or viewer response function did not call `cf.logCustomData()`. ## Import ### Identity Schema #### Required - `arn` (String) ARN of the CloudFront real-time log configuration. Using `pulumi import`, import CloudFront real-time log configurations using the ARN. For example: ```sh $ pulumi import aws:cloudfront/realtimeLogConfig:RealtimeLogConfig example arn:aws:cloudfront::111122223333:realtime-log-config/ExampleNameForRealtimeLogConfig ```package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.cloudfront.Function; import com.pulumi.aws.cloudfront.FunctionArgs; import com.pulumi.aws.cloudfront.RealtimeLogConfig; import com.pulumi.aws.cloudfront.RealtimeLogConfigArgs; import com.pulumi.aws.cloudfront.inputs.RealtimeLogConfigEndpointArgs; import com.pulumi.aws.cloudfront.inputs.RealtimeLogConfigEndpointKinesisStreamConfigArgs; import com.pulumi.resources.CustomResourceOptions; import java.util.ArrayList; import java.util.Arrays; 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) { var example = new Function("example", FunctionArgs.builder() .name("tag-request") .runtime("cloudfront-js-2.0") .publish(true) .code(""" import cf from 'cloudfront'; function handler(event) { var variant = event.request.uri.indexOf(\"/beta\") === 0 ? \"b\" : \"a\"; cf.logCustomData(\"variant=\" + variant); return event.request; } """) .build()); var exampleRealtimeLogConfig = new RealtimeLogConfig("exampleRealtimeLogConfig", RealtimeLogConfigArgs.builder() .endpoint(RealtimeLogConfigEndpointArgs.builder() .kinesisStreamConfig(RealtimeLogConfigEndpointKinesisStreamConfigArgs.builder() .roleArn(exampleAwsIamRole.arn()) .streamArn(exampleAwsKinesisStream.arn()) .build()) .streamType("Kinesis") .build()) .name("example") .samplingRate(100) .fields( "timestamp", "c-ip", "sc-status", "viewer-request-log-data", "viewer-response-log-data") .build(), CustomResourceOptions.builder() .dependsOn(exampleAwsIamRolePolicy) .build()); } }
-
-
Constructor Summary
Constructors Constructor Description RealtimeLogConfig(java.lang.String name)RealtimeLogConfig(java.lang.String name, RealtimeLogConfigArgs args)RealtimeLogConfig(java.lang.String name, RealtimeLogConfigArgs args, com.pulumi.resources.CustomResourceOptions options)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description com.pulumi.core.Output<java.lang.String>arn()com.pulumi.core.Output<RealtimeLogConfigEndpoint>endpoint()com.pulumi.core.Output<java.util.List<java.lang.String>>fields()static RealtimeLogConfigget(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, RealtimeLogConfigState state, com.pulumi.resources.CustomResourceOptions options)Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.com.pulumi.core.Output<java.lang.String>name()com.pulumi.core.Output<java.lang.Integer>samplingRate()
-
-
-
Constructor Detail
-
RealtimeLogConfig
public RealtimeLogConfig(java.lang.String name)
- Parameters:
name- The _unique_ name of the resulting resource.
-
RealtimeLogConfig
public RealtimeLogConfig(java.lang.String name, RealtimeLogConfigArgs args)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.
-
RealtimeLogConfig
public RealtimeLogConfig(java.lang.String name, RealtimeLogConfigArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.options- A bag of options that control this resource's behavior.
-
-
Method Detail
-
arn
public com.pulumi.core.Output<java.lang.String> arn()
- Returns:
- ARN of the CloudFront real-time log configuration.
-
endpoint
public com.pulumi.core.Output<RealtimeLogConfigEndpoint> endpoint()
- Returns:
- The Amazon Kinesis data streams where real-time log data is sent.
-
fields
public com.pulumi.core.Output<java.util.List<java.lang.String>> fields()
- Returns:
- The fields that are included in each real-time log record. See the [AWS documentation](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/real-time-logs.html#understand-real-time-log-config-fields) for supported values. This includes `viewer-request-log-data` and `viewer-response-log-data`, which carry the custom data that a CloudFront Function logs with `cf.logCustomData()`.
-
name
public com.pulumi.core.Output<java.lang.String> name()
- Returns:
- The unique name to identify this real-time log configuration.
-
samplingRate
public com.pulumi.core.Output<java.lang.Integer> samplingRate()
- Returns:
- The sampling rate for this real-time log configuration. The sampling rate determines the percentage of viewer requests that are represented in the real-time log data. An integer between `1` and `100`, inclusive.
-
get
public static RealtimeLogConfig get(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, @Nullable RealtimeLogConfigState state, @Nullable com.pulumi.resources.CustomResourceOptions options)
Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.- Parameters:
name- The _unique_ name of the resulting resource.id- The _unique_ provider ID of the resource to lookup.state-options- Optional settings to control the behavior of the CustomResource.
-
-