github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/cloudwatch/logDestinationPolicy.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 Logs destination policy 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-aws/sdk/v6/go/aws/iam" 27 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 28 // 29 // ) 30 // 31 // func main() { 32 // pulumi.Run(func(ctx *pulumi.Context) error { 33 // testDestination, err := cloudwatch.NewLogDestination(ctx, "test_destination", &cloudwatch.LogDestinationArgs{ 34 // Name: pulumi.String("test_destination"), 35 // RoleArn: pulumi.Any(iamForCloudwatch.Arn), 36 // TargetArn: pulumi.Any(kinesisForCloudwatch.Arn), 37 // }) 38 // if err != nil { 39 // return err 40 // } 41 // testDestinationPolicy := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{ 42 // Statements: iam.GetPolicyDocumentStatementArray{ 43 // &iam.GetPolicyDocumentStatementArgs{ 44 // Effect: pulumi.String("Allow"), 45 // Principals: iam.GetPolicyDocumentStatementPrincipalArray{ 46 // &iam.GetPolicyDocumentStatementPrincipalArgs{ 47 // Type: pulumi.String("AWS"), 48 // Identifiers: pulumi.StringArray{ 49 // pulumi.String("123456789012"), 50 // }, 51 // }, 52 // }, 53 // Actions: pulumi.StringArray{ 54 // pulumi.String("logs:PutSubscriptionFilter"), 55 // }, 56 // Resources: pulumi.StringArray{ 57 // testDestination.Arn, 58 // }, 59 // }, 60 // }, 61 // }, nil) 62 // _, err = cloudwatch.NewLogDestinationPolicy(ctx, "test_destination_policy", &cloudwatch.LogDestinationPolicyArgs{ 63 // DestinationName: testDestination.Name, 64 // AccessPolicy: testDestinationPolicy.ApplyT(func(testDestinationPolicy iam.GetPolicyDocumentResult) (*string, error) { 65 // return &testDestinationPolicy.Json, nil 66 // }).(pulumi.StringPtrOutput), 67 // }) 68 // if err != nil { 69 // return err 70 // } 71 // return nil 72 // }) 73 // } 74 // 75 // ``` 76 // <!--End PulumiCodeChooser --> 77 // 78 // ## Import 79 // 80 // Using `pulumi import`, import CloudWatch Logs destination policies using the `destination_name`. For example: 81 // 82 // ```sh 83 // $ pulumi import aws:cloudwatch/logDestinationPolicy:LogDestinationPolicy test_destination_policy test_destination 84 // ``` 85 type LogDestinationPolicy struct { 86 pulumi.CustomResourceState 87 88 // The policy document. This is a JSON formatted string. 89 AccessPolicy pulumi.StringOutput `pulumi:"accessPolicy"` 90 // A name for the subscription filter 91 DestinationName pulumi.StringOutput `pulumi:"destinationName"` 92 // Specify true if you are updating an existing destination policy to grant permission to an organization ID instead of granting permission to individual AWS accounts. 93 ForceUpdate pulumi.BoolPtrOutput `pulumi:"forceUpdate"` 94 } 95 96 // NewLogDestinationPolicy registers a new resource with the given unique name, arguments, and options. 97 func NewLogDestinationPolicy(ctx *pulumi.Context, 98 name string, args *LogDestinationPolicyArgs, opts ...pulumi.ResourceOption) (*LogDestinationPolicy, error) { 99 if args == nil { 100 return nil, errors.New("missing one or more required arguments") 101 } 102 103 if args.AccessPolicy == nil { 104 return nil, errors.New("invalid value for required argument 'AccessPolicy'") 105 } 106 if args.DestinationName == nil { 107 return nil, errors.New("invalid value for required argument 'DestinationName'") 108 } 109 opts = internal.PkgResourceDefaultOpts(opts) 110 var resource LogDestinationPolicy 111 err := ctx.RegisterResource("aws:cloudwatch/logDestinationPolicy:LogDestinationPolicy", name, args, &resource, opts...) 112 if err != nil { 113 return nil, err 114 } 115 return &resource, nil 116 } 117 118 // GetLogDestinationPolicy gets an existing LogDestinationPolicy resource's state with the given name, ID, and optional 119 // state properties that are used to uniquely qualify the lookup (nil if not required). 120 func GetLogDestinationPolicy(ctx *pulumi.Context, 121 name string, id pulumi.IDInput, state *LogDestinationPolicyState, opts ...pulumi.ResourceOption) (*LogDestinationPolicy, error) { 122 var resource LogDestinationPolicy 123 err := ctx.ReadResource("aws:cloudwatch/logDestinationPolicy:LogDestinationPolicy", name, id, state, &resource, opts...) 124 if err != nil { 125 return nil, err 126 } 127 return &resource, nil 128 } 129 130 // Input properties used for looking up and filtering LogDestinationPolicy resources. 131 type logDestinationPolicyState struct { 132 // The policy document. This is a JSON formatted string. 133 AccessPolicy *string `pulumi:"accessPolicy"` 134 // A name for the subscription filter 135 DestinationName *string `pulumi:"destinationName"` 136 // Specify true if you are updating an existing destination policy to grant permission to an organization ID instead of granting permission to individual AWS accounts. 137 ForceUpdate *bool `pulumi:"forceUpdate"` 138 } 139 140 type LogDestinationPolicyState struct { 141 // The policy document. This is a JSON formatted string. 142 AccessPolicy pulumi.StringPtrInput 143 // A name for the subscription filter 144 DestinationName pulumi.StringPtrInput 145 // Specify true if you are updating an existing destination policy to grant permission to an organization ID instead of granting permission to individual AWS accounts. 146 ForceUpdate pulumi.BoolPtrInput 147 } 148 149 func (LogDestinationPolicyState) ElementType() reflect.Type { 150 return reflect.TypeOf((*logDestinationPolicyState)(nil)).Elem() 151 } 152 153 type logDestinationPolicyArgs struct { 154 // The policy document. This is a JSON formatted string. 155 AccessPolicy string `pulumi:"accessPolicy"` 156 // A name for the subscription filter 157 DestinationName string `pulumi:"destinationName"` 158 // Specify true if you are updating an existing destination policy to grant permission to an organization ID instead of granting permission to individual AWS accounts. 159 ForceUpdate *bool `pulumi:"forceUpdate"` 160 } 161 162 // The set of arguments for constructing a LogDestinationPolicy resource. 163 type LogDestinationPolicyArgs struct { 164 // The policy document. This is a JSON formatted string. 165 AccessPolicy pulumi.StringInput 166 // A name for the subscription filter 167 DestinationName pulumi.StringInput 168 // Specify true if you are updating an existing destination policy to grant permission to an organization ID instead of granting permission to individual AWS accounts. 169 ForceUpdate pulumi.BoolPtrInput 170 } 171 172 func (LogDestinationPolicyArgs) ElementType() reflect.Type { 173 return reflect.TypeOf((*logDestinationPolicyArgs)(nil)).Elem() 174 } 175 176 type LogDestinationPolicyInput interface { 177 pulumi.Input 178 179 ToLogDestinationPolicyOutput() LogDestinationPolicyOutput 180 ToLogDestinationPolicyOutputWithContext(ctx context.Context) LogDestinationPolicyOutput 181 } 182 183 func (*LogDestinationPolicy) ElementType() reflect.Type { 184 return reflect.TypeOf((**LogDestinationPolicy)(nil)).Elem() 185 } 186 187 func (i *LogDestinationPolicy) ToLogDestinationPolicyOutput() LogDestinationPolicyOutput { 188 return i.ToLogDestinationPolicyOutputWithContext(context.Background()) 189 } 190 191 func (i *LogDestinationPolicy) ToLogDestinationPolicyOutputWithContext(ctx context.Context) LogDestinationPolicyOutput { 192 return pulumi.ToOutputWithContext(ctx, i).(LogDestinationPolicyOutput) 193 } 194 195 // LogDestinationPolicyArrayInput is an input type that accepts LogDestinationPolicyArray and LogDestinationPolicyArrayOutput values. 196 // You can construct a concrete instance of `LogDestinationPolicyArrayInput` via: 197 // 198 // LogDestinationPolicyArray{ LogDestinationPolicyArgs{...} } 199 type LogDestinationPolicyArrayInput interface { 200 pulumi.Input 201 202 ToLogDestinationPolicyArrayOutput() LogDestinationPolicyArrayOutput 203 ToLogDestinationPolicyArrayOutputWithContext(context.Context) LogDestinationPolicyArrayOutput 204 } 205 206 type LogDestinationPolicyArray []LogDestinationPolicyInput 207 208 func (LogDestinationPolicyArray) ElementType() reflect.Type { 209 return reflect.TypeOf((*[]*LogDestinationPolicy)(nil)).Elem() 210 } 211 212 func (i LogDestinationPolicyArray) ToLogDestinationPolicyArrayOutput() LogDestinationPolicyArrayOutput { 213 return i.ToLogDestinationPolicyArrayOutputWithContext(context.Background()) 214 } 215 216 func (i LogDestinationPolicyArray) ToLogDestinationPolicyArrayOutputWithContext(ctx context.Context) LogDestinationPolicyArrayOutput { 217 return pulumi.ToOutputWithContext(ctx, i).(LogDestinationPolicyArrayOutput) 218 } 219 220 // LogDestinationPolicyMapInput is an input type that accepts LogDestinationPolicyMap and LogDestinationPolicyMapOutput values. 221 // You can construct a concrete instance of `LogDestinationPolicyMapInput` via: 222 // 223 // LogDestinationPolicyMap{ "key": LogDestinationPolicyArgs{...} } 224 type LogDestinationPolicyMapInput interface { 225 pulumi.Input 226 227 ToLogDestinationPolicyMapOutput() LogDestinationPolicyMapOutput 228 ToLogDestinationPolicyMapOutputWithContext(context.Context) LogDestinationPolicyMapOutput 229 } 230 231 type LogDestinationPolicyMap map[string]LogDestinationPolicyInput 232 233 func (LogDestinationPolicyMap) ElementType() reflect.Type { 234 return reflect.TypeOf((*map[string]*LogDestinationPolicy)(nil)).Elem() 235 } 236 237 func (i LogDestinationPolicyMap) ToLogDestinationPolicyMapOutput() LogDestinationPolicyMapOutput { 238 return i.ToLogDestinationPolicyMapOutputWithContext(context.Background()) 239 } 240 241 func (i LogDestinationPolicyMap) ToLogDestinationPolicyMapOutputWithContext(ctx context.Context) LogDestinationPolicyMapOutput { 242 return pulumi.ToOutputWithContext(ctx, i).(LogDestinationPolicyMapOutput) 243 } 244 245 type LogDestinationPolicyOutput struct{ *pulumi.OutputState } 246 247 func (LogDestinationPolicyOutput) ElementType() reflect.Type { 248 return reflect.TypeOf((**LogDestinationPolicy)(nil)).Elem() 249 } 250 251 func (o LogDestinationPolicyOutput) ToLogDestinationPolicyOutput() LogDestinationPolicyOutput { 252 return o 253 } 254 255 func (o LogDestinationPolicyOutput) ToLogDestinationPolicyOutputWithContext(ctx context.Context) LogDestinationPolicyOutput { 256 return o 257 } 258 259 // The policy document. This is a JSON formatted string. 260 func (o LogDestinationPolicyOutput) AccessPolicy() pulumi.StringOutput { 261 return o.ApplyT(func(v *LogDestinationPolicy) pulumi.StringOutput { return v.AccessPolicy }).(pulumi.StringOutput) 262 } 263 264 // A name for the subscription filter 265 func (o LogDestinationPolicyOutput) DestinationName() pulumi.StringOutput { 266 return o.ApplyT(func(v *LogDestinationPolicy) pulumi.StringOutput { return v.DestinationName }).(pulumi.StringOutput) 267 } 268 269 // Specify true if you are updating an existing destination policy to grant permission to an organization ID instead of granting permission to individual AWS accounts. 270 func (o LogDestinationPolicyOutput) ForceUpdate() pulumi.BoolPtrOutput { 271 return o.ApplyT(func(v *LogDestinationPolicy) pulumi.BoolPtrOutput { return v.ForceUpdate }).(pulumi.BoolPtrOutput) 272 } 273 274 type LogDestinationPolicyArrayOutput struct{ *pulumi.OutputState } 275 276 func (LogDestinationPolicyArrayOutput) ElementType() reflect.Type { 277 return reflect.TypeOf((*[]*LogDestinationPolicy)(nil)).Elem() 278 } 279 280 func (o LogDestinationPolicyArrayOutput) ToLogDestinationPolicyArrayOutput() LogDestinationPolicyArrayOutput { 281 return o 282 } 283 284 func (o LogDestinationPolicyArrayOutput) ToLogDestinationPolicyArrayOutputWithContext(ctx context.Context) LogDestinationPolicyArrayOutput { 285 return o 286 } 287 288 func (o LogDestinationPolicyArrayOutput) Index(i pulumi.IntInput) LogDestinationPolicyOutput { 289 return pulumi.All(o, i).ApplyT(func(vs []interface{}) *LogDestinationPolicy { 290 return vs[0].([]*LogDestinationPolicy)[vs[1].(int)] 291 }).(LogDestinationPolicyOutput) 292 } 293 294 type LogDestinationPolicyMapOutput struct{ *pulumi.OutputState } 295 296 func (LogDestinationPolicyMapOutput) ElementType() reflect.Type { 297 return reflect.TypeOf((*map[string]*LogDestinationPolicy)(nil)).Elem() 298 } 299 300 func (o LogDestinationPolicyMapOutput) ToLogDestinationPolicyMapOutput() LogDestinationPolicyMapOutput { 301 return o 302 } 303 304 func (o LogDestinationPolicyMapOutput) ToLogDestinationPolicyMapOutputWithContext(ctx context.Context) LogDestinationPolicyMapOutput { 305 return o 306 } 307 308 func (o LogDestinationPolicyMapOutput) MapIndex(k pulumi.StringInput) LogDestinationPolicyOutput { 309 return pulumi.All(o, k).ApplyT(func(vs []interface{}) *LogDestinationPolicy { 310 return vs[0].(map[string]*LogDestinationPolicy)[vs[1].(string)] 311 }).(LogDestinationPolicyOutput) 312 } 313 314 func init() { 315 pulumi.RegisterInputType(reflect.TypeOf((*LogDestinationPolicyInput)(nil)).Elem(), &LogDestinationPolicy{}) 316 pulumi.RegisterInputType(reflect.TypeOf((*LogDestinationPolicyArrayInput)(nil)).Elem(), LogDestinationPolicyArray{}) 317 pulumi.RegisterInputType(reflect.TypeOf((*LogDestinationPolicyMapInput)(nil)).Elem(), LogDestinationPolicyMap{}) 318 pulumi.RegisterOutputType(LogDestinationPolicyOutput{}) 319 pulumi.RegisterOutputType(LogDestinationPolicyArrayOutput{}) 320 pulumi.RegisterOutputType(LogDestinationPolicyMapOutput{}) 321 }