github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/cloudwatch/logDataProtectionPolicy.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 Data Protection Policy resource.
    16  //
    17  // Read more about protecting sensitive user data in the [User Guide](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/mask-sensitive-log-data.html).
    18  //
    19  // ## Example Usage
    20  //
    21  // <!--Start PulumiCodeChooser -->
    22  // ```go
    23  // package main
    24  //
    25  // import (
    26  //
    27  //	"encoding/json"
    28  //
    29  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch"
    30  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3"
    31  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    32  //
    33  // )
    34  //
    35  //	func main() {
    36  //		pulumi.Run(func(ctx *pulumi.Context) error {
    37  //			example, err := cloudwatch.NewLogGroup(ctx, "example", &cloudwatch.LogGroupArgs{
    38  //				Name: pulumi.String("example"),
    39  //			})
    40  //			if err != nil {
    41  //				return err
    42  //			}
    43  //			exampleBucketV2, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{
    44  //				Bucket: pulumi.String("example"),
    45  //			})
    46  //			if err != nil {
    47  //				return err
    48  //			}
    49  //			_, err = cloudwatch.NewLogDataProtectionPolicy(ctx, "example", &cloudwatch.LogDataProtectionPolicyArgs{
    50  //				LogGroupName: example.Name,
    51  //				PolicyDocument: exampleBucketV2.Bucket.ApplyT(func(bucket string) (pulumi.String, error) {
    52  //					var _zero pulumi.String
    53  //					tmpJSON0, err := json.Marshal(map[string]interface{}{
    54  //						"Name":    "Example",
    55  //						"Version": "2021-06-01",
    56  //						"Statement": []interface{}{
    57  //							map[string]interface{}{
    58  //								"Sid": "Audit",
    59  //								"DataIdentifier": []string{
    60  //									"arn:aws:dataprotection::aws:data-identifier/EmailAddress",
    61  //								},
    62  //								"Operation": map[string]interface{}{
    63  //									"Audit": map[string]interface{}{
    64  //										"FindingsDestination": map[string]interface{}{
    65  //											"S3": map[string]interface{}{
    66  //												"Bucket": bucket,
    67  //											},
    68  //										},
    69  //									},
    70  //								},
    71  //							},
    72  //							map[string]interface{}{
    73  //								"Sid": "Redact",
    74  //								"DataIdentifier": []string{
    75  //									"arn:aws:dataprotection::aws:data-identifier/EmailAddress",
    76  //								},
    77  //								"Operation": map[string]interface{}{
    78  //									"Deidentify": map[string]interface{}{
    79  //										"MaskConfig": nil,
    80  //									},
    81  //								},
    82  //							},
    83  //						},
    84  //					})
    85  //					if err != nil {
    86  //						return _zero, err
    87  //					}
    88  //					json0 := string(tmpJSON0)
    89  //					return pulumi.String(json0), nil
    90  //				}).(pulumi.StringOutput),
    91  //			})
    92  //			if err != nil {
    93  //				return err
    94  //			}
    95  //			return nil
    96  //		})
    97  //	}
    98  //
    99  // ```
   100  // <!--End PulumiCodeChooser -->
   101  //
   102  // ## Import
   103  //
   104  // Using `pulumi import`, import this resource using the `log_group_name`. For example:
   105  //
   106  // ```sh
   107  // $ pulumi import aws:cloudwatch/logDataProtectionPolicy:LogDataProtectionPolicy example my-log-group
   108  // ```
   109  type LogDataProtectionPolicy struct {
   110  	pulumi.CustomResourceState
   111  
   112  	// The name of the log group under which the log stream is to be created.
   113  	LogGroupName pulumi.StringOutput `pulumi:"logGroupName"`
   114  	// Specifies the data protection policy in JSON. Read more at [Data protection policy syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/mask-sensitive-log-data-start.html#mask-sensitive-log-data-policysyntax).
   115  	PolicyDocument pulumi.StringOutput `pulumi:"policyDocument"`
   116  }
   117  
   118  // NewLogDataProtectionPolicy registers a new resource with the given unique name, arguments, and options.
   119  func NewLogDataProtectionPolicy(ctx *pulumi.Context,
   120  	name string, args *LogDataProtectionPolicyArgs, opts ...pulumi.ResourceOption) (*LogDataProtectionPolicy, error) {
   121  	if args == nil {
   122  		return nil, errors.New("missing one or more required arguments")
   123  	}
   124  
   125  	if args.LogGroupName == nil {
   126  		return nil, errors.New("invalid value for required argument 'LogGroupName'")
   127  	}
   128  	if args.PolicyDocument == nil {
   129  		return nil, errors.New("invalid value for required argument 'PolicyDocument'")
   130  	}
   131  	opts = internal.PkgResourceDefaultOpts(opts)
   132  	var resource LogDataProtectionPolicy
   133  	err := ctx.RegisterResource("aws:cloudwatch/logDataProtectionPolicy:LogDataProtectionPolicy", name, args, &resource, opts...)
   134  	if err != nil {
   135  		return nil, err
   136  	}
   137  	return &resource, nil
   138  }
   139  
   140  // GetLogDataProtectionPolicy gets an existing LogDataProtectionPolicy resource's state with the given name, ID, and optional
   141  // state properties that are used to uniquely qualify the lookup (nil if not required).
   142  func GetLogDataProtectionPolicy(ctx *pulumi.Context,
   143  	name string, id pulumi.IDInput, state *LogDataProtectionPolicyState, opts ...pulumi.ResourceOption) (*LogDataProtectionPolicy, error) {
   144  	var resource LogDataProtectionPolicy
   145  	err := ctx.ReadResource("aws:cloudwatch/logDataProtectionPolicy:LogDataProtectionPolicy", name, id, state, &resource, opts...)
   146  	if err != nil {
   147  		return nil, err
   148  	}
   149  	return &resource, nil
   150  }
   151  
   152  // Input properties used for looking up and filtering LogDataProtectionPolicy resources.
   153  type logDataProtectionPolicyState struct {
   154  	// The name of the log group under which the log stream is to be created.
   155  	LogGroupName *string `pulumi:"logGroupName"`
   156  	// Specifies the data protection policy in JSON. Read more at [Data protection policy syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/mask-sensitive-log-data-start.html#mask-sensitive-log-data-policysyntax).
   157  	PolicyDocument *string `pulumi:"policyDocument"`
   158  }
   159  
   160  type LogDataProtectionPolicyState struct {
   161  	// The name of the log group under which the log stream is to be created.
   162  	LogGroupName pulumi.StringPtrInput
   163  	// Specifies the data protection policy in JSON. Read more at [Data protection policy syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/mask-sensitive-log-data-start.html#mask-sensitive-log-data-policysyntax).
   164  	PolicyDocument pulumi.StringPtrInput
   165  }
   166  
   167  func (LogDataProtectionPolicyState) ElementType() reflect.Type {
   168  	return reflect.TypeOf((*logDataProtectionPolicyState)(nil)).Elem()
   169  }
   170  
   171  type logDataProtectionPolicyArgs struct {
   172  	// The name of the log group under which the log stream is to be created.
   173  	LogGroupName string `pulumi:"logGroupName"`
   174  	// Specifies the data protection policy in JSON. Read more at [Data protection policy syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/mask-sensitive-log-data-start.html#mask-sensitive-log-data-policysyntax).
   175  	PolicyDocument string `pulumi:"policyDocument"`
   176  }
   177  
   178  // The set of arguments for constructing a LogDataProtectionPolicy resource.
   179  type LogDataProtectionPolicyArgs struct {
   180  	// The name of the log group under which the log stream is to be created.
   181  	LogGroupName pulumi.StringInput
   182  	// Specifies the data protection policy in JSON. Read more at [Data protection policy syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/mask-sensitive-log-data-start.html#mask-sensitive-log-data-policysyntax).
   183  	PolicyDocument pulumi.StringInput
   184  }
   185  
   186  func (LogDataProtectionPolicyArgs) ElementType() reflect.Type {
   187  	return reflect.TypeOf((*logDataProtectionPolicyArgs)(nil)).Elem()
   188  }
   189  
   190  type LogDataProtectionPolicyInput interface {
   191  	pulumi.Input
   192  
   193  	ToLogDataProtectionPolicyOutput() LogDataProtectionPolicyOutput
   194  	ToLogDataProtectionPolicyOutputWithContext(ctx context.Context) LogDataProtectionPolicyOutput
   195  }
   196  
   197  func (*LogDataProtectionPolicy) ElementType() reflect.Type {
   198  	return reflect.TypeOf((**LogDataProtectionPolicy)(nil)).Elem()
   199  }
   200  
   201  func (i *LogDataProtectionPolicy) ToLogDataProtectionPolicyOutput() LogDataProtectionPolicyOutput {
   202  	return i.ToLogDataProtectionPolicyOutputWithContext(context.Background())
   203  }
   204  
   205  func (i *LogDataProtectionPolicy) ToLogDataProtectionPolicyOutputWithContext(ctx context.Context) LogDataProtectionPolicyOutput {
   206  	return pulumi.ToOutputWithContext(ctx, i).(LogDataProtectionPolicyOutput)
   207  }
   208  
   209  // LogDataProtectionPolicyArrayInput is an input type that accepts LogDataProtectionPolicyArray and LogDataProtectionPolicyArrayOutput values.
   210  // You can construct a concrete instance of `LogDataProtectionPolicyArrayInput` via:
   211  //
   212  //	LogDataProtectionPolicyArray{ LogDataProtectionPolicyArgs{...} }
   213  type LogDataProtectionPolicyArrayInput interface {
   214  	pulumi.Input
   215  
   216  	ToLogDataProtectionPolicyArrayOutput() LogDataProtectionPolicyArrayOutput
   217  	ToLogDataProtectionPolicyArrayOutputWithContext(context.Context) LogDataProtectionPolicyArrayOutput
   218  }
   219  
   220  type LogDataProtectionPolicyArray []LogDataProtectionPolicyInput
   221  
   222  func (LogDataProtectionPolicyArray) ElementType() reflect.Type {
   223  	return reflect.TypeOf((*[]*LogDataProtectionPolicy)(nil)).Elem()
   224  }
   225  
   226  func (i LogDataProtectionPolicyArray) ToLogDataProtectionPolicyArrayOutput() LogDataProtectionPolicyArrayOutput {
   227  	return i.ToLogDataProtectionPolicyArrayOutputWithContext(context.Background())
   228  }
   229  
   230  func (i LogDataProtectionPolicyArray) ToLogDataProtectionPolicyArrayOutputWithContext(ctx context.Context) LogDataProtectionPolicyArrayOutput {
   231  	return pulumi.ToOutputWithContext(ctx, i).(LogDataProtectionPolicyArrayOutput)
   232  }
   233  
   234  // LogDataProtectionPolicyMapInput is an input type that accepts LogDataProtectionPolicyMap and LogDataProtectionPolicyMapOutput values.
   235  // You can construct a concrete instance of `LogDataProtectionPolicyMapInput` via:
   236  //
   237  //	LogDataProtectionPolicyMap{ "key": LogDataProtectionPolicyArgs{...} }
   238  type LogDataProtectionPolicyMapInput interface {
   239  	pulumi.Input
   240  
   241  	ToLogDataProtectionPolicyMapOutput() LogDataProtectionPolicyMapOutput
   242  	ToLogDataProtectionPolicyMapOutputWithContext(context.Context) LogDataProtectionPolicyMapOutput
   243  }
   244  
   245  type LogDataProtectionPolicyMap map[string]LogDataProtectionPolicyInput
   246  
   247  func (LogDataProtectionPolicyMap) ElementType() reflect.Type {
   248  	return reflect.TypeOf((*map[string]*LogDataProtectionPolicy)(nil)).Elem()
   249  }
   250  
   251  func (i LogDataProtectionPolicyMap) ToLogDataProtectionPolicyMapOutput() LogDataProtectionPolicyMapOutput {
   252  	return i.ToLogDataProtectionPolicyMapOutputWithContext(context.Background())
   253  }
   254  
   255  func (i LogDataProtectionPolicyMap) ToLogDataProtectionPolicyMapOutputWithContext(ctx context.Context) LogDataProtectionPolicyMapOutput {
   256  	return pulumi.ToOutputWithContext(ctx, i).(LogDataProtectionPolicyMapOutput)
   257  }
   258  
   259  type LogDataProtectionPolicyOutput struct{ *pulumi.OutputState }
   260  
   261  func (LogDataProtectionPolicyOutput) ElementType() reflect.Type {
   262  	return reflect.TypeOf((**LogDataProtectionPolicy)(nil)).Elem()
   263  }
   264  
   265  func (o LogDataProtectionPolicyOutput) ToLogDataProtectionPolicyOutput() LogDataProtectionPolicyOutput {
   266  	return o
   267  }
   268  
   269  func (o LogDataProtectionPolicyOutput) ToLogDataProtectionPolicyOutputWithContext(ctx context.Context) LogDataProtectionPolicyOutput {
   270  	return o
   271  }
   272  
   273  // The name of the log group under which the log stream is to be created.
   274  func (o LogDataProtectionPolicyOutput) LogGroupName() pulumi.StringOutput {
   275  	return o.ApplyT(func(v *LogDataProtectionPolicy) pulumi.StringOutput { return v.LogGroupName }).(pulumi.StringOutput)
   276  }
   277  
   278  // Specifies the data protection policy in JSON. Read more at [Data protection policy syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/mask-sensitive-log-data-start.html#mask-sensitive-log-data-policysyntax).
   279  func (o LogDataProtectionPolicyOutput) PolicyDocument() pulumi.StringOutput {
   280  	return o.ApplyT(func(v *LogDataProtectionPolicy) pulumi.StringOutput { return v.PolicyDocument }).(pulumi.StringOutput)
   281  }
   282  
   283  type LogDataProtectionPolicyArrayOutput struct{ *pulumi.OutputState }
   284  
   285  func (LogDataProtectionPolicyArrayOutput) ElementType() reflect.Type {
   286  	return reflect.TypeOf((*[]*LogDataProtectionPolicy)(nil)).Elem()
   287  }
   288  
   289  func (o LogDataProtectionPolicyArrayOutput) ToLogDataProtectionPolicyArrayOutput() LogDataProtectionPolicyArrayOutput {
   290  	return o
   291  }
   292  
   293  func (o LogDataProtectionPolicyArrayOutput) ToLogDataProtectionPolicyArrayOutputWithContext(ctx context.Context) LogDataProtectionPolicyArrayOutput {
   294  	return o
   295  }
   296  
   297  func (o LogDataProtectionPolicyArrayOutput) Index(i pulumi.IntInput) LogDataProtectionPolicyOutput {
   298  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *LogDataProtectionPolicy {
   299  		return vs[0].([]*LogDataProtectionPolicy)[vs[1].(int)]
   300  	}).(LogDataProtectionPolicyOutput)
   301  }
   302  
   303  type LogDataProtectionPolicyMapOutput struct{ *pulumi.OutputState }
   304  
   305  func (LogDataProtectionPolicyMapOutput) ElementType() reflect.Type {
   306  	return reflect.TypeOf((*map[string]*LogDataProtectionPolicy)(nil)).Elem()
   307  }
   308  
   309  func (o LogDataProtectionPolicyMapOutput) ToLogDataProtectionPolicyMapOutput() LogDataProtectionPolicyMapOutput {
   310  	return o
   311  }
   312  
   313  func (o LogDataProtectionPolicyMapOutput) ToLogDataProtectionPolicyMapOutputWithContext(ctx context.Context) LogDataProtectionPolicyMapOutput {
   314  	return o
   315  }
   316  
   317  func (o LogDataProtectionPolicyMapOutput) MapIndex(k pulumi.StringInput) LogDataProtectionPolicyOutput {
   318  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *LogDataProtectionPolicy {
   319  		return vs[0].(map[string]*LogDataProtectionPolicy)[vs[1].(string)]
   320  	}).(LogDataProtectionPolicyOutput)
   321  }
   322  
   323  func init() {
   324  	pulumi.RegisterInputType(reflect.TypeOf((*LogDataProtectionPolicyInput)(nil)).Elem(), &LogDataProtectionPolicy{})
   325  	pulumi.RegisterInputType(reflect.TypeOf((*LogDataProtectionPolicyArrayInput)(nil)).Elem(), LogDataProtectionPolicyArray{})
   326  	pulumi.RegisterInputType(reflect.TypeOf((*LogDataProtectionPolicyMapInput)(nil)).Elem(), LogDataProtectionPolicyMap{})
   327  	pulumi.RegisterOutputType(LogDataProtectionPolicyOutput{})
   328  	pulumi.RegisterOutputType(LogDataProtectionPolicyArrayOutput{})
   329  	pulumi.RegisterOutputType(LogDataProtectionPolicyMapOutput{})
   330  }