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  }