github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/cloudwatch/logResourcePolicy.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 resource to manage a CloudWatch log resource policy. 16 // 17 // ## Example Usage 18 // 19 // ### Elasticsearch Log Publishing 20 // 21 // <!--Start PulumiCodeChooser --> 22 // ```go 23 // package main 24 // 25 // import ( 26 // 27 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" 28 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" 29 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 30 // 31 // ) 32 // 33 // func main() { 34 // pulumi.Run(func(ctx *pulumi.Context) error { 35 // elasticsearch_log_publishing_policy, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ 36 // Statements: []iam.GetPolicyDocumentStatement{ 37 // { 38 // Actions: []string{ 39 // "logs:CreateLogStream", 40 // "logs:PutLogEvents", 41 // "logs:PutLogEventsBatch", 42 // }, 43 // Resources: []string{ 44 // "arn:aws:logs:*", 45 // }, 46 // Principals: []iam.GetPolicyDocumentStatementPrincipal{ 47 // { 48 // Identifiers: []string{ 49 // "es.amazonaws.com", 50 // }, 51 // Type: "Service", 52 // }, 53 // }, 54 // }, 55 // }, 56 // }, nil) 57 // if err != nil { 58 // return err 59 // } 60 // _, err = cloudwatch.NewLogResourcePolicy(ctx, "elasticsearch-log-publishing-policy", &cloudwatch.LogResourcePolicyArgs{ 61 // PolicyDocument: pulumi.String(elasticsearch_log_publishing_policy.Json), 62 // PolicyName: pulumi.String("elasticsearch-log-publishing-policy"), 63 // }) 64 // if err != nil { 65 // return err 66 // } 67 // return nil 68 // }) 69 // } 70 // 71 // ``` 72 // <!--End PulumiCodeChooser --> 73 // 74 // ### Route53 Query Logging 75 // 76 // <!--Start PulumiCodeChooser --> 77 // ```go 78 // package main 79 // 80 // import ( 81 // 82 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" 83 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" 84 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 85 // 86 // ) 87 // 88 // func main() { 89 // pulumi.Run(func(ctx *pulumi.Context) error { 90 // route53_query_logging_policy, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ 91 // Statements: []iam.GetPolicyDocumentStatement{ 92 // { 93 // Actions: []string{ 94 // "logs:CreateLogStream", 95 // "logs:PutLogEvents", 96 // }, 97 // Resources: []string{ 98 // "arn:aws:logs:*:*:log-group:/aws/route53/*", 99 // }, 100 // Principals: []iam.GetPolicyDocumentStatementPrincipal{ 101 // { 102 // Identifiers: []string{ 103 // "route53.amazonaws.com", 104 // }, 105 // Type: "Service", 106 // }, 107 // }, 108 // }, 109 // }, 110 // }, nil) 111 // if err != nil { 112 // return err 113 // } 114 // _, err = cloudwatch.NewLogResourcePolicy(ctx, "route53-query-logging-policy", &cloudwatch.LogResourcePolicyArgs{ 115 // PolicyDocument: pulumi.String(route53_query_logging_policy.Json), 116 // PolicyName: pulumi.String("route53-query-logging-policy"), 117 // }) 118 // if err != nil { 119 // return err 120 // } 121 // return nil 122 // }) 123 // } 124 // 125 // ``` 126 // <!--End PulumiCodeChooser --> 127 // 128 // ## Import 129 // 130 // Using `pulumi import`, import CloudWatch log resource policies using the policy name. For example: 131 // 132 // ```sh 133 // $ pulumi import aws:cloudwatch/logResourcePolicy:LogResourcePolicy MyPolicy MyPolicy 134 // ``` 135 type LogResourcePolicy struct { 136 pulumi.CustomResourceState 137 138 // Details of the resource policy, including the identity of the principal that is enabled to put logs to this account. This is formatted as a JSON string. Maximum length of 5120 characters. 139 PolicyDocument pulumi.StringOutput `pulumi:"policyDocument"` 140 // Name of the resource policy. 141 PolicyName pulumi.StringOutput `pulumi:"policyName"` 142 } 143 144 // NewLogResourcePolicy registers a new resource with the given unique name, arguments, and options. 145 func NewLogResourcePolicy(ctx *pulumi.Context, 146 name string, args *LogResourcePolicyArgs, opts ...pulumi.ResourceOption) (*LogResourcePolicy, error) { 147 if args == nil { 148 return nil, errors.New("missing one or more required arguments") 149 } 150 151 if args.PolicyDocument == nil { 152 return nil, errors.New("invalid value for required argument 'PolicyDocument'") 153 } 154 if args.PolicyName == nil { 155 return nil, errors.New("invalid value for required argument 'PolicyName'") 156 } 157 opts = internal.PkgResourceDefaultOpts(opts) 158 var resource LogResourcePolicy 159 err := ctx.RegisterResource("aws:cloudwatch/logResourcePolicy:LogResourcePolicy", name, args, &resource, opts...) 160 if err != nil { 161 return nil, err 162 } 163 return &resource, nil 164 } 165 166 // GetLogResourcePolicy gets an existing LogResourcePolicy resource's state with the given name, ID, and optional 167 // state properties that are used to uniquely qualify the lookup (nil if not required). 168 func GetLogResourcePolicy(ctx *pulumi.Context, 169 name string, id pulumi.IDInput, state *LogResourcePolicyState, opts ...pulumi.ResourceOption) (*LogResourcePolicy, error) { 170 var resource LogResourcePolicy 171 err := ctx.ReadResource("aws:cloudwatch/logResourcePolicy:LogResourcePolicy", name, id, state, &resource, opts...) 172 if err != nil { 173 return nil, err 174 } 175 return &resource, nil 176 } 177 178 // Input properties used for looking up and filtering LogResourcePolicy resources. 179 type logResourcePolicyState struct { 180 // Details of the resource policy, including the identity of the principal that is enabled to put logs to this account. This is formatted as a JSON string. Maximum length of 5120 characters. 181 PolicyDocument interface{} `pulumi:"policyDocument"` 182 // Name of the resource policy. 183 PolicyName *string `pulumi:"policyName"` 184 } 185 186 type LogResourcePolicyState struct { 187 // Details of the resource policy, including the identity of the principal that is enabled to put logs to this account. This is formatted as a JSON string. Maximum length of 5120 characters. 188 PolicyDocument pulumi.Input 189 // Name of the resource policy. 190 PolicyName pulumi.StringPtrInput 191 } 192 193 func (LogResourcePolicyState) ElementType() reflect.Type { 194 return reflect.TypeOf((*logResourcePolicyState)(nil)).Elem() 195 } 196 197 type logResourcePolicyArgs struct { 198 // Details of the resource policy, including the identity of the principal that is enabled to put logs to this account. This is formatted as a JSON string. Maximum length of 5120 characters. 199 PolicyDocument interface{} `pulumi:"policyDocument"` 200 // Name of the resource policy. 201 PolicyName string `pulumi:"policyName"` 202 } 203 204 // The set of arguments for constructing a LogResourcePolicy resource. 205 type LogResourcePolicyArgs struct { 206 // Details of the resource policy, including the identity of the principal that is enabled to put logs to this account. This is formatted as a JSON string. Maximum length of 5120 characters. 207 PolicyDocument pulumi.Input 208 // Name of the resource policy. 209 PolicyName pulumi.StringInput 210 } 211 212 func (LogResourcePolicyArgs) ElementType() reflect.Type { 213 return reflect.TypeOf((*logResourcePolicyArgs)(nil)).Elem() 214 } 215 216 type LogResourcePolicyInput interface { 217 pulumi.Input 218 219 ToLogResourcePolicyOutput() LogResourcePolicyOutput 220 ToLogResourcePolicyOutputWithContext(ctx context.Context) LogResourcePolicyOutput 221 } 222 223 func (*LogResourcePolicy) ElementType() reflect.Type { 224 return reflect.TypeOf((**LogResourcePolicy)(nil)).Elem() 225 } 226 227 func (i *LogResourcePolicy) ToLogResourcePolicyOutput() LogResourcePolicyOutput { 228 return i.ToLogResourcePolicyOutputWithContext(context.Background()) 229 } 230 231 func (i *LogResourcePolicy) ToLogResourcePolicyOutputWithContext(ctx context.Context) LogResourcePolicyOutput { 232 return pulumi.ToOutputWithContext(ctx, i).(LogResourcePolicyOutput) 233 } 234 235 // LogResourcePolicyArrayInput is an input type that accepts LogResourcePolicyArray and LogResourcePolicyArrayOutput values. 236 // You can construct a concrete instance of `LogResourcePolicyArrayInput` via: 237 // 238 // LogResourcePolicyArray{ LogResourcePolicyArgs{...} } 239 type LogResourcePolicyArrayInput interface { 240 pulumi.Input 241 242 ToLogResourcePolicyArrayOutput() LogResourcePolicyArrayOutput 243 ToLogResourcePolicyArrayOutputWithContext(context.Context) LogResourcePolicyArrayOutput 244 } 245 246 type LogResourcePolicyArray []LogResourcePolicyInput 247 248 func (LogResourcePolicyArray) ElementType() reflect.Type { 249 return reflect.TypeOf((*[]*LogResourcePolicy)(nil)).Elem() 250 } 251 252 func (i LogResourcePolicyArray) ToLogResourcePolicyArrayOutput() LogResourcePolicyArrayOutput { 253 return i.ToLogResourcePolicyArrayOutputWithContext(context.Background()) 254 } 255 256 func (i LogResourcePolicyArray) ToLogResourcePolicyArrayOutputWithContext(ctx context.Context) LogResourcePolicyArrayOutput { 257 return pulumi.ToOutputWithContext(ctx, i).(LogResourcePolicyArrayOutput) 258 } 259 260 // LogResourcePolicyMapInput is an input type that accepts LogResourcePolicyMap and LogResourcePolicyMapOutput values. 261 // You can construct a concrete instance of `LogResourcePolicyMapInput` via: 262 // 263 // LogResourcePolicyMap{ "key": LogResourcePolicyArgs{...} } 264 type LogResourcePolicyMapInput interface { 265 pulumi.Input 266 267 ToLogResourcePolicyMapOutput() LogResourcePolicyMapOutput 268 ToLogResourcePolicyMapOutputWithContext(context.Context) LogResourcePolicyMapOutput 269 } 270 271 type LogResourcePolicyMap map[string]LogResourcePolicyInput 272 273 func (LogResourcePolicyMap) ElementType() reflect.Type { 274 return reflect.TypeOf((*map[string]*LogResourcePolicy)(nil)).Elem() 275 } 276 277 func (i LogResourcePolicyMap) ToLogResourcePolicyMapOutput() LogResourcePolicyMapOutput { 278 return i.ToLogResourcePolicyMapOutputWithContext(context.Background()) 279 } 280 281 func (i LogResourcePolicyMap) ToLogResourcePolicyMapOutputWithContext(ctx context.Context) LogResourcePolicyMapOutput { 282 return pulumi.ToOutputWithContext(ctx, i).(LogResourcePolicyMapOutput) 283 } 284 285 type LogResourcePolicyOutput struct{ *pulumi.OutputState } 286 287 func (LogResourcePolicyOutput) ElementType() reflect.Type { 288 return reflect.TypeOf((**LogResourcePolicy)(nil)).Elem() 289 } 290 291 func (o LogResourcePolicyOutput) ToLogResourcePolicyOutput() LogResourcePolicyOutput { 292 return o 293 } 294 295 func (o LogResourcePolicyOutput) ToLogResourcePolicyOutputWithContext(ctx context.Context) LogResourcePolicyOutput { 296 return o 297 } 298 299 // Details of the resource policy, including the identity of the principal that is enabled to put logs to this account. This is formatted as a JSON string. Maximum length of 5120 characters. 300 func (o LogResourcePolicyOutput) PolicyDocument() pulumi.StringOutput { 301 return o.ApplyT(func(v *LogResourcePolicy) pulumi.StringOutput { return v.PolicyDocument }).(pulumi.StringOutput) 302 } 303 304 // Name of the resource policy. 305 func (o LogResourcePolicyOutput) PolicyName() pulumi.StringOutput { 306 return o.ApplyT(func(v *LogResourcePolicy) pulumi.StringOutput { return v.PolicyName }).(pulumi.StringOutput) 307 } 308 309 type LogResourcePolicyArrayOutput struct{ *pulumi.OutputState } 310 311 func (LogResourcePolicyArrayOutput) ElementType() reflect.Type { 312 return reflect.TypeOf((*[]*LogResourcePolicy)(nil)).Elem() 313 } 314 315 func (o LogResourcePolicyArrayOutput) ToLogResourcePolicyArrayOutput() LogResourcePolicyArrayOutput { 316 return o 317 } 318 319 func (o LogResourcePolicyArrayOutput) ToLogResourcePolicyArrayOutputWithContext(ctx context.Context) LogResourcePolicyArrayOutput { 320 return o 321 } 322 323 func (o LogResourcePolicyArrayOutput) Index(i pulumi.IntInput) LogResourcePolicyOutput { 324 return pulumi.All(o, i).ApplyT(func(vs []interface{}) *LogResourcePolicy { 325 return vs[0].([]*LogResourcePolicy)[vs[1].(int)] 326 }).(LogResourcePolicyOutput) 327 } 328 329 type LogResourcePolicyMapOutput struct{ *pulumi.OutputState } 330 331 func (LogResourcePolicyMapOutput) ElementType() reflect.Type { 332 return reflect.TypeOf((*map[string]*LogResourcePolicy)(nil)).Elem() 333 } 334 335 func (o LogResourcePolicyMapOutput) ToLogResourcePolicyMapOutput() LogResourcePolicyMapOutput { 336 return o 337 } 338 339 func (o LogResourcePolicyMapOutput) ToLogResourcePolicyMapOutputWithContext(ctx context.Context) LogResourcePolicyMapOutput { 340 return o 341 } 342 343 func (o LogResourcePolicyMapOutput) MapIndex(k pulumi.StringInput) LogResourcePolicyOutput { 344 return pulumi.All(o, k).ApplyT(func(vs []interface{}) *LogResourcePolicy { 345 return vs[0].(map[string]*LogResourcePolicy)[vs[1].(string)] 346 }).(LogResourcePolicyOutput) 347 } 348 349 func init() { 350 pulumi.RegisterInputType(reflect.TypeOf((*LogResourcePolicyInput)(nil)).Elem(), &LogResourcePolicy{}) 351 pulumi.RegisterInputType(reflect.TypeOf((*LogResourcePolicyArrayInput)(nil)).Elem(), LogResourcePolicyArray{}) 352 pulumi.RegisterInputType(reflect.TypeOf((*LogResourcePolicyMapInput)(nil)).Elem(), LogResourcePolicyMap{}) 353 pulumi.RegisterOutputType(LogResourcePolicyOutput{}) 354 pulumi.RegisterOutputType(LogResourcePolicyArrayOutput{}) 355 pulumi.RegisterOutputType(LogResourcePolicyMapOutput{}) 356 }