github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/cloudwatch/logMetricFilter.go (about)

     1  // Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT.
     2  // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
     3  
     4  package cloudwatch
     5  
     6  import (
     7  	"context"
     8  	"reflect"
     9  
    10  	"errors"
    11  	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal"
    12  	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    13  )
    14  
    15  // Provides a CloudWatch Log Metric Filter resource.
    16  //
    17  // ## Example Usage
    18  //
    19  // <!--Start PulumiCodeChooser -->
    20  // ```go
    21  // package main
    22  //
    23  // import (
    24  //
    25  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch"
    26  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    27  //
    28  // )
    29  //
    30  //	func main() {
    31  //		pulumi.Run(func(ctx *pulumi.Context) error {
    32  //			dada, err := cloudwatch.NewLogGroup(ctx, "dada", &cloudwatch.LogGroupArgs{
    33  //				Name: pulumi.String("MyApp/access.log"),
    34  //			})
    35  //			if err != nil {
    36  //				return err
    37  //			}
    38  //			_, err = cloudwatch.NewLogMetricFilter(ctx, "yada", &cloudwatch.LogMetricFilterArgs{
    39  //				Name:         pulumi.String("MyAppAccessCount"),
    40  //				Pattern:      pulumi.String(""),
    41  //				LogGroupName: dada.Name,
    42  //				MetricTransformation: &cloudwatch.LogMetricFilterMetricTransformationArgs{
    43  //					Name:      pulumi.String("EventCount"),
    44  //					Namespace: pulumi.String("YourNamespace"),
    45  //					Value:     pulumi.String("1"),
    46  //				},
    47  //			})
    48  //			if err != nil {
    49  //				return err
    50  //			}
    51  //			return nil
    52  //		})
    53  //	}
    54  //
    55  // ```
    56  // <!--End PulumiCodeChooser -->
    57  //
    58  // ## Import
    59  //
    60  // Using `pulumi import`, import CloudWatch Log Metric Filter using the `log_group_name:name`. For example:
    61  //
    62  // ```sh
    63  // $ pulumi import aws:cloudwatch/logMetricFilter:LogMetricFilter test /aws/lambda/function:test
    64  // ```
    65  type LogMetricFilter struct {
    66  	pulumi.CustomResourceState
    67  
    68  	// The name of the log group to associate the metric filter with.
    69  	LogGroupName pulumi.StringOutput `pulumi:"logGroupName"`
    70  	// A block defining collection of information needed to define how metric data gets emitted. See below.
    71  	MetricTransformation LogMetricFilterMetricTransformationOutput `pulumi:"metricTransformation"`
    72  	// A name for the metric filter.
    73  	Name pulumi.StringOutput `pulumi:"name"`
    74  	// A valid [CloudWatch Logs filter pattern](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/FilterAndPatternSyntax.html)
    75  	// for extracting metric data out of ingested log events.
    76  	Pattern pulumi.StringOutput `pulumi:"pattern"`
    77  }
    78  
    79  // NewLogMetricFilter registers a new resource with the given unique name, arguments, and options.
    80  func NewLogMetricFilter(ctx *pulumi.Context,
    81  	name string, args *LogMetricFilterArgs, opts ...pulumi.ResourceOption) (*LogMetricFilter, error) {
    82  	if args == nil {
    83  		return nil, errors.New("missing one or more required arguments")
    84  	}
    85  
    86  	if args.LogGroupName == nil {
    87  		return nil, errors.New("invalid value for required argument 'LogGroupName'")
    88  	}
    89  	if args.MetricTransformation == nil {
    90  		return nil, errors.New("invalid value for required argument 'MetricTransformation'")
    91  	}
    92  	if args.Pattern == nil {
    93  		return nil, errors.New("invalid value for required argument 'Pattern'")
    94  	}
    95  	opts = internal.PkgResourceDefaultOpts(opts)
    96  	var resource LogMetricFilter
    97  	err := ctx.RegisterResource("aws:cloudwatch/logMetricFilter:LogMetricFilter", name, args, &resource, opts...)
    98  	if err != nil {
    99  		return nil, err
   100  	}
   101  	return &resource, nil
   102  }
   103  
   104  // GetLogMetricFilter gets an existing LogMetricFilter resource's state with the given name, ID, and optional
   105  // state properties that are used to uniquely qualify the lookup (nil if not required).
   106  func GetLogMetricFilter(ctx *pulumi.Context,
   107  	name string, id pulumi.IDInput, state *LogMetricFilterState, opts ...pulumi.ResourceOption) (*LogMetricFilter, error) {
   108  	var resource LogMetricFilter
   109  	err := ctx.ReadResource("aws:cloudwatch/logMetricFilter:LogMetricFilter", name, id, state, &resource, opts...)
   110  	if err != nil {
   111  		return nil, err
   112  	}
   113  	return &resource, nil
   114  }
   115  
   116  // Input properties used for looking up and filtering LogMetricFilter resources.
   117  type logMetricFilterState struct {
   118  	// The name of the log group to associate the metric filter with.
   119  	LogGroupName *string `pulumi:"logGroupName"`
   120  	// A block defining collection of information needed to define how metric data gets emitted. See below.
   121  	MetricTransformation *LogMetricFilterMetricTransformation `pulumi:"metricTransformation"`
   122  	// A name for the metric filter.
   123  	Name *string `pulumi:"name"`
   124  	// A valid [CloudWatch Logs filter pattern](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/FilterAndPatternSyntax.html)
   125  	// for extracting metric data out of ingested log events.
   126  	Pattern *string `pulumi:"pattern"`
   127  }
   128  
   129  type LogMetricFilterState struct {
   130  	// The name of the log group to associate the metric filter with.
   131  	LogGroupName pulumi.StringPtrInput
   132  	// A block defining collection of information needed to define how metric data gets emitted. See below.
   133  	MetricTransformation LogMetricFilterMetricTransformationPtrInput
   134  	// A name for the metric filter.
   135  	Name pulumi.StringPtrInput
   136  	// A valid [CloudWatch Logs filter pattern](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/FilterAndPatternSyntax.html)
   137  	// for extracting metric data out of ingested log events.
   138  	Pattern pulumi.StringPtrInput
   139  }
   140  
   141  func (LogMetricFilterState) ElementType() reflect.Type {
   142  	return reflect.TypeOf((*logMetricFilterState)(nil)).Elem()
   143  }
   144  
   145  type logMetricFilterArgs struct {
   146  	// The name of the log group to associate the metric filter with.
   147  	LogGroupName string `pulumi:"logGroupName"`
   148  	// A block defining collection of information needed to define how metric data gets emitted. See below.
   149  	MetricTransformation LogMetricFilterMetricTransformation `pulumi:"metricTransformation"`
   150  	// A name for the metric filter.
   151  	Name *string `pulumi:"name"`
   152  	// A valid [CloudWatch Logs filter pattern](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/FilterAndPatternSyntax.html)
   153  	// for extracting metric data out of ingested log events.
   154  	Pattern string `pulumi:"pattern"`
   155  }
   156  
   157  // The set of arguments for constructing a LogMetricFilter resource.
   158  type LogMetricFilterArgs struct {
   159  	// The name of the log group to associate the metric filter with.
   160  	LogGroupName pulumi.StringInput
   161  	// A block defining collection of information needed to define how metric data gets emitted. See below.
   162  	MetricTransformation LogMetricFilterMetricTransformationInput
   163  	// A name for the metric filter.
   164  	Name pulumi.StringPtrInput
   165  	// A valid [CloudWatch Logs filter pattern](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/FilterAndPatternSyntax.html)
   166  	// for extracting metric data out of ingested log events.
   167  	Pattern pulumi.StringInput
   168  }
   169  
   170  func (LogMetricFilterArgs) ElementType() reflect.Type {
   171  	return reflect.TypeOf((*logMetricFilterArgs)(nil)).Elem()
   172  }
   173  
   174  type LogMetricFilterInput interface {
   175  	pulumi.Input
   176  
   177  	ToLogMetricFilterOutput() LogMetricFilterOutput
   178  	ToLogMetricFilterOutputWithContext(ctx context.Context) LogMetricFilterOutput
   179  }
   180  
   181  func (*LogMetricFilter) ElementType() reflect.Type {
   182  	return reflect.TypeOf((**LogMetricFilter)(nil)).Elem()
   183  }
   184  
   185  func (i *LogMetricFilter) ToLogMetricFilterOutput() LogMetricFilterOutput {
   186  	return i.ToLogMetricFilterOutputWithContext(context.Background())
   187  }
   188  
   189  func (i *LogMetricFilter) ToLogMetricFilterOutputWithContext(ctx context.Context) LogMetricFilterOutput {
   190  	return pulumi.ToOutputWithContext(ctx, i).(LogMetricFilterOutput)
   191  }
   192  
   193  // LogMetricFilterArrayInput is an input type that accepts LogMetricFilterArray and LogMetricFilterArrayOutput values.
   194  // You can construct a concrete instance of `LogMetricFilterArrayInput` via:
   195  //
   196  //	LogMetricFilterArray{ LogMetricFilterArgs{...} }
   197  type LogMetricFilterArrayInput interface {
   198  	pulumi.Input
   199  
   200  	ToLogMetricFilterArrayOutput() LogMetricFilterArrayOutput
   201  	ToLogMetricFilterArrayOutputWithContext(context.Context) LogMetricFilterArrayOutput
   202  }
   203  
   204  type LogMetricFilterArray []LogMetricFilterInput
   205  
   206  func (LogMetricFilterArray) ElementType() reflect.Type {
   207  	return reflect.TypeOf((*[]*LogMetricFilter)(nil)).Elem()
   208  }
   209  
   210  func (i LogMetricFilterArray) ToLogMetricFilterArrayOutput() LogMetricFilterArrayOutput {
   211  	return i.ToLogMetricFilterArrayOutputWithContext(context.Background())
   212  }
   213  
   214  func (i LogMetricFilterArray) ToLogMetricFilterArrayOutputWithContext(ctx context.Context) LogMetricFilterArrayOutput {
   215  	return pulumi.ToOutputWithContext(ctx, i).(LogMetricFilterArrayOutput)
   216  }
   217  
   218  // LogMetricFilterMapInput is an input type that accepts LogMetricFilterMap and LogMetricFilterMapOutput values.
   219  // You can construct a concrete instance of `LogMetricFilterMapInput` via:
   220  //
   221  //	LogMetricFilterMap{ "key": LogMetricFilterArgs{...} }
   222  type LogMetricFilterMapInput interface {
   223  	pulumi.Input
   224  
   225  	ToLogMetricFilterMapOutput() LogMetricFilterMapOutput
   226  	ToLogMetricFilterMapOutputWithContext(context.Context) LogMetricFilterMapOutput
   227  }
   228  
   229  type LogMetricFilterMap map[string]LogMetricFilterInput
   230  
   231  func (LogMetricFilterMap) ElementType() reflect.Type {
   232  	return reflect.TypeOf((*map[string]*LogMetricFilter)(nil)).Elem()
   233  }
   234  
   235  func (i LogMetricFilterMap) ToLogMetricFilterMapOutput() LogMetricFilterMapOutput {
   236  	return i.ToLogMetricFilterMapOutputWithContext(context.Background())
   237  }
   238  
   239  func (i LogMetricFilterMap) ToLogMetricFilterMapOutputWithContext(ctx context.Context) LogMetricFilterMapOutput {
   240  	return pulumi.ToOutputWithContext(ctx, i).(LogMetricFilterMapOutput)
   241  }
   242  
   243  type LogMetricFilterOutput struct{ *pulumi.OutputState }
   244  
   245  func (LogMetricFilterOutput) ElementType() reflect.Type {
   246  	return reflect.TypeOf((**LogMetricFilter)(nil)).Elem()
   247  }
   248  
   249  func (o LogMetricFilterOutput) ToLogMetricFilterOutput() LogMetricFilterOutput {
   250  	return o
   251  }
   252  
   253  func (o LogMetricFilterOutput) ToLogMetricFilterOutputWithContext(ctx context.Context) LogMetricFilterOutput {
   254  	return o
   255  }
   256  
   257  // The name of the log group to associate the metric filter with.
   258  func (o LogMetricFilterOutput) LogGroupName() pulumi.StringOutput {
   259  	return o.ApplyT(func(v *LogMetricFilter) pulumi.StringOutput { return v.LogGroupName }).(pulumi.StringOutput)
   260  }
   261  
   262  // A block defining collection of information needed to define how metric data gets emitted. See below.
   263  func (o LogMetricFilterOutput) MetricTransformation() LogMetricFilterMetricTransformationOutput {
   264  	return o.ApplyT(func(v *LogMetricFilter) LogMetricFilterMetricTransformationOutput { return v.MetricTransformation }).(LogMetricFilterMetricTransformationOutput)
   265  }
   266  
   267  // A name for the metric filter.
   268  func (o LogMetricFilterOutput) Name() pulumi.StringOutput {
   269  	return o.ApplyT(func(v *LogMetricFilter) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
   270  }
   271  
   272  // A valid [CloudWatch Logs filter pattern](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/FilterAndPatternSyntax.html)
   273  // for extracting metric data out of ingested log events.
   274  func (o LogMetricFilterOutput) Pattern() pulumi.StringOutput {
   275  	return o.ApplyT(func(v *LogMetricFilter) pulumi.StringOutput { return v.Pattern }).(pulumi.StringOutput)
   276  }
   277  
   278  type LogMetricFilterArrayOutput struct{ *pulumi.OutputState }
   279  
   280  func (LogMetricFilterArrayOutput) ElementType() reflect.Type {
   281  	return reflect.TypeOf((*[]*LogMetricFilter)(nil)).Elem()
   282  }
   283  
   284  func (o LogMetricFilterArrayOutput) ToLogMetricFilterArrayOutput() LogMetricFilterArrayOutput {
   285  	return o
   286  }
   287  
   288  func (o LogMetricFilterArrayOutput) ToLogMetricFilterArrayOutputWithContext(ctx context.Context) LogMetricFilterArrayOutput {
   289  	return o
   290  }
   291  
   292  func (o LogMetricFilterArrayOutput) Index(i pulumi.IntInput) LogMetricFilterOutput {
   293  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *LogMetricFilter {
   294  		return vs[0].([]*LogMetricFilter)[vs[1].(int)]
   295  	}).(LogMetricFilterOutput)
   296  }
   297  
   298  type LogMetricFilterMapOutput struct{ *pulumi.OutputState }
   299  
   300  func (LogMetricFilterMapOutput) ElementType() reflect.Type {
   301  	return reflect.TypeOf((*map[string]*LogMetricFilter)(nil)).Elem()
   302  }
   303  
   304  func (o LogMetricFilterMapOutput) ToLogMetricFilterMapOutput() LogMetricFilterMapOutput {
   305  	return o
   306  }
   307  
   308  func (o LogMetricFilterMapOutput) ToLogMetricFilterMapOutputWithContext(ctx context.Context) LogMetricFilterMapOutput {
   309  	return o
   310  }
   311  
   312  func (o LogMetricFilterMapOutput) MapIndex(k pulumi.StringInput) LogMetricFilterOutput {
   313  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *LogMetricFilter {
   314  		return vs[0].(map[string]*LogMetricFilter)[vs[1].(string)]
   315  	}).(LogMetricFilterOutput)
   316  }
   317  
   318  func init() {
   319  	pulumi.RegisterInputType(reflect.TypeOf((*LogMetricFilterInput)(nil)).Elem(), &LogMetricFilter{})
   320  	pulumi.RegisterInputType(reflect.TypeOf((*LogMetricFilterArrayInput)(nil)).Elem(), LogMetricFilterArray{})
   321  	pulumi.RegisterInputType(reflect.TypeOf((*LogMetricFilterMapInput)(nil)).Elem(), LogMetricFilterMap{})
   322  	pulumi.RegisterOutputType(LogMetricFilterOutput{})
   323  	pulumi.RegisterOutputType(LogMetricFilterArrayOutput{})
   324  	pulumi.RegisterOutputType(LogMetricFilterMapOutput{})
   325  }