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 }