github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/backup/vaultPolicy.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 backup
     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 an AWS Backup vault 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/backup"
    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  //			exampleVault, err := backup.NewVault(ctx, "example", &backup.VaultArgs{
    34  //				Name: pulumi.String("example"),
    35  //			})
    36  //			if err != nil {
    37  //				return err
    38  //			}
    39  //			example := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{
    40  //				Statements: iam.GetPolicyDocumentStatementArray{
    41  //					&iam.GetPolicyDocumentStatementArgs{
    42  //						Effect: pulumi.String("Allow"),
    43  //						Principals: iam.GetPolicyDocumentStatementPrincipalArray{
    44  //							&iam.GetPolicyDocumentStatementPrincipalArgs{
    45  //								Type: pulumi.String("AWS"),
    46  //								Identifiers: pulumi.StringArray{
    47  //									pulumi.String("*"),
    48  //								},
    49  //							},
    50  //						},
    51  //						Actions: pulumi.StringArray{
    52  //							pulumi.String("backup:DescribeBackupVault"),
    53  //							pulumi.String("backup:DeleteBackupVault"),
    54  //							pulumi.String("backup:PutBackupVaultAccessPolicy"),
    55  //							pulumi.String("backup:DeleteBackupVaultAccessPolicy"),
    56  //							pulumi.String("backup:GetBackupVaultAccessPolicy"),
    57  //							pulumi.String("backup:StartBackupJob"),
    58  //							pulumi.String("backup:GetBackupVaultNotifications"),
    59  //							pulumi.String("backup:PutBackupVaultNotifications"),
    60  //						},
    61  //						Resources: pulumi.StringArray{
    62  //							exampleVault.Arn,
    63  //						},
    64  //					},
    65  //				},
    66  //			}, nil)
    67  //			_, err = backup.NewVaultPolicy(ctx, "example", &backup.VaultPolicyArgs{
    68  //				BackupVaultName: exampleVault.Name,
    69  //				Policy: example.ApplyT(func(example iam.GetPolicyDocumentResult) (*string, error) {
    70  //					return &example.Json, nil
    71  //				}).(pulumi.StringPtrOutput),
    72  //			})
    73  //			if err != nil {
    74  //				return err
    75  //			}
    76  //			return nil
    77  //		})
    78  //	}
    79  //
    80  // ```
    81  // <!--End PulumiCodeChooser -->
    82  //
    83  // ## Import
    84  //
    85  // Using `pulumi import`, import Backup vault policy using the `name`. For example:
    86  //
    87  // ```sh
    88  // $ pulumi import aws:backup/vaultPolicy:VaultPolicy test TestVault
    89  // ```
    90  type VaultPolicy struct {
    91  	pulumi.CustomResourceState
    92  
    93  	// The ARN of the vault.
    94  	BackupVaultArn pulumi.StringOutput `pulumi:"backupVaultArn"`
    95  	// Name of the backup vault to add policy for.
    96  	BackupVaultName pulumi.StringOutput `pulumi:"backupVaultName"`
    97  	// The backup vault access policy document in JSON format.
    98  	Policy pulumi.StringOutput `pulumi:"policy"`
    99  }
   100  
   101  // NewVaultPolicy registers a new resource with the given unique name, arguments, and options.
   102  func NewVaultPolicy(ctx *pulumi.Context,
   103  	name string, args *VaultPolicyArgs, opts ...pulumi.ResourceOption) (*VaultPolicy, error) {
   104  	if args == nil {
   105  		return nil, errors.New("missing one or more required arguments")
   106  	}
   107  
   108  	if args.BackupVaultName == nil {
   109  		return nil, errors.New("invalid value for required argument 'BackupVaultName'")
   110  	}
   111  	if args.Policy == nil {
   112  		return nil, errors.New("invalid value for required argument 'Policy'")
   113  	}
   114  	opts = internal.PkgResourceDefaultOpts(opts)
   115  	var resource VaultPolicy
   116  	err := ctx.RegisterResource("aws:backup/vaultPolicy:VaultPolicy", name, args, &resource, opts...)
   117  	if err != nil {
   118  		return nil, err
   119  	}
   120  	return &resource, nil
   121  }
   122  
   123  // GetVaultPolicy gets an existing VaultPolicy resource's state with the given name, ID, and optional
   124  // state properties that are used to uniquely qualify the lookup (nil if not required).
   125  func GetVaultPolicy(ctx *pulumi.Context,
   126  	name string, id pulumi.IDInput, state *VaultPolicyState, opts ...pulumi.ResourceOption) (*VaultPolicy, error) {
   127  	var resource VaultPolicy
   128  	err := ctx.ReadResource("aws:backup/vaultPolicy:VaultPolicy", name, id, state, &resource, opts...)
   129  	if err != nil {
   130  		return nil, err
   131  	}
   132  	return &resource, nil
   133  }
   134  
   135  // Input properties used for looking up and filtering VaultPolicy resources.
   136  type vaultPolicyState struct {
   137  	// The ARN of the vault.
   138  	BackupVaultArn *string `pulumi:"backupVaultArn"`
   139  	// Name of the backup vault to add policy for.
   140  	BackupVaultName *string `pulumi:"backupVaultName"`
   141  	// The backup vault access policy document in JSON format.
   142  	Policy *string `pulumi:"policy"`
   143  }
   144  
   145  type VaultPolicyState struct {
   146  	// The ARN of the vault.
   147  	BackupVaultArn pulumi.StringPtrInput
   148  	// Name of the backup vault to add policy for.
   149  	BackupVaultName pulumi.StringPtrInput
   150  	// The backup vault access policy document in JSON format.
   151  	Policy pulumi.StringPtrInput
   152  }
   153  
   154  func (VaultPolicyState) ElementType() reflect.Type {
   155  	return reflect.TypeOf((*vaultPolicyState)(nil)).Elem()
   156  }
   157  
   158  type vaultPolicyArgs struct {
   159  	// Name of the backup vault to add policy for.
   160  	BackupVaultName string `pulumi:"backupVaultName"`
   161  	// The backup vault access policy document in JSON format.
   162  	Policy string `pulumi:"policy"`
   163  }
   164  
   165  // The set of arguments for constructing a VaultPolicy resource.
   166  type VaultPolicyArgs struct {
   167  	// Name of the backup vault to add policy for.
   168  	BackupVaultName pulumi.StringInput
   169  	// The backup vault access policy document in JSON format.
   170  	Policy pulumi.StringInput
   171  }
   172  
   173  func (VaultPolicyArgs) ElementType() reflect.Type {
   174  	return reflect.TypeOf((*vaultPolicyArgs)(nil)).Elem()
   175  }
   176  
   177  type VaultPolicyInput interface {
   178  	pulumi.Input
   179  
   180  	ToVaultPolicyOutput() VaultPolicyOutput
   181  	ToVaultPolicyOutputWithContext(ctx context.Context) VaultPolicyOutput
   182  }
   183  
   184  func (*VaultPolicy) ElementType() reflect.Type {
   185  	return reflect.TypeOf((**VaultPolicy)(nil)).Elem()
   186  }
   187  
   188  func (i *VaultPolicy) ToVaultPolicyOutput() VaultPolicyOutput {
   189  	return i.ToVaultPolicyOutputWithContext(context.Background())
   190  }
   191  
   192  func (i *VaultPolicy) ToVaultPolicyOutputWithContext(ctx context.Context) VaultPolicyOutput {
   193  	return pulumi.ToOutputWithContext(ctx, i).(VaultPolicyOutput)
   194  }
   195  
   196  // VaultPolicyArrayInput is an input type that accepts VaultPolicyArray and VaultPolicyArrayOutput values.
   197  // You can construct a concrete instance of `VaultPolicyArrayInput` via:
   198  //
   199  //	VaultPolicyArray{ VaultPolicyArgs{...} }
   200  type VaultPolicyArrayInput interface {
   201  	pulumi.Input
   202  
   203  	ToVaultPolicyArrayOutput() VaultPolicyArrayOutput
   204  	ToVaultPolicyArrayOutputWithContext(context.Context) VaultPolicyArrayOutput
   205  }
   206  
   207  type VaultPolicyArray []VaultPolicyInput
   208  
   209  func (VaultPolicyArray) ElementType() reflect.Type {
   210  	return reflect.TypeOf((*[]*VaultPolicy)(nil)).Elem()
   211  }
   212  
   213  func (i VaultPolicyArray) ToVaultPolicyArrayOutput() VaultPolicyArrayOutput {
   214  	return i.ToVaultPolicyArrayOutputWithContext(context.Background())
   215  }
   216  
   217  func (i VaultPolicyArray) ToVaultPolicyArrayOutputWithContext(ctx context.Context) VaultPolicyArrayOutput {
   218  	return pulumi.ToOutputWithContext(ctx, i).(VaultPolicyArrayOutput)
   219  }
   220  
   221  // VaultPolicyMapInput is an input type that accepts VaultPolicyMap and VaultPolicyMapOutput values.
   222  // You can construct a concrete instance of `VaultPolicyMapInput` via:
   223  //
   224  //	VaultPolicyMap{ "key": VaultPolicyArgs{...} }
   225  type VaultPolicyMapInput interface {
   226  	pulumi.Input
   227  
   228  	ToVaultPolicyMapOutput() VaultPolicyMapOutput
   229  	ToVaultPolicyMapOutputWithContext(context.Context) VaultPolicyMapOutput
   230  }
   231  
   232  type VaultPolicyMap map[string]VaultPolicyInput
   233  
   234  func (VaultPolicyMap) ElementType() reflect.Type {
   235  	return reflect.TypeOf((*map[string]*VaultPolicy)(nil)).Elem()
   236  }
   237  
   238  func (i VaultPolicyMap) ToVaultPolicyMapOutput() VaultPolicyMapOutput {
   239  	return i.ToVaultPolicyMapOutputWithContext(context.Background())
   240  }
   241  
   242  func (i VaultPolicyMap) ToVaultPolicyMapOutputWithContext(ctx context.Context) VaultPolicyMapOutput {
   243  	return pulumi.ToOutputWithContext(ctx, i).(VaultPolicyMapOutput)
   244  }
   245  
   246  type VaultPolicyOutput struct{ *pulumi.OutputState }
   247  
   248  func (VaultPolicyOutput) ElementType() reflect.Type {
   249  	return reflect.TypeOf((**VaultPolicy)(nil)).Elem()
   250  }
   251  
   252  func (o VaultPolicyOutput) ToVaultPolicyOutput() VaultPolicyOutput {
   253  	return o
   254  }
   255  
   256  func (o VaultPolicyOutput) ToVaultPolicyOutputWithContext(ctx context.Context) VaultPolicyOutput {
   257  	return o
   258  }
   259  
   260  // The ARN of the vault.
   261  func (o VaultPolicyOutput) BackupVaultArn() pulumi.StringOutput {
   262  	return o.ApplyT(func(v *VaultPolicy) pulumi.StringOutput { return v.BackupVaultArn }).(pulumi.StringOutput)
   263  }
   264  
   265  // Name of the backup vault to add policy for.
   266  func (o VaultPolicyOutput) BackupVaultName() pulumi.StringOutput {
   267  	return o.ApplyT(func(v *VaultPolicy) pulumi.StringOutput { return v.BackupVaultName }).(pulumi.StringOutput)
   268  }
   269  
   270  // The backup vault access policy document in JSON format.
   271  func (o VaultPolicyOutput) Policy() pulumi.StringOutput {
   272  	return o.ApplyT(func(v *VaultPolicy) pulumi.StringOutput { return v.Policy }).(pulumi.StringOutput)
   273  }
   274  
   275  type VaultPolicyArrayOutput struct{ *pulumi.OutputState }
   276  
   277  func (VaultPolicyArrayOutput) ElementType() reflect.Type {
   278  	return reflect.TypeOf((*[]*VaultPolicy)(nil)).Elem()
   279  }
   280  
   281  func (o VaultPolicyArrayOutput) ToVaultPolicyArrayOutput() VaultPolicyArrayOutput {
   282  	return o
   283  }
   284  
   285  func (o VaultPolicyArrayOutput) ToVaultPolicyArrayOutputWithContext(ctx context.Context) VaultPolicyArrayOutput {
   286  	return o
   287  }
   288  
   289  func (o VaultPolicyArrayOutput) Index(i pulumi.IntInput) VaultPolicyOutput {
   290  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *VaultPolicy {
   291  		return vs[0].([]*VaultPolicy)[vs[1].(int)]
   292  	}).(VaultPolicyOutput)
   293  }
   294  
   295  type VaultPolicyMapOutput struct{ *pulumi.OutputState }
   296  
   297  func (VaultPolicyMapOutput) ElementType() reflect.Type {
   298  	return reflect.TypeOf((*map[string]*VaultPolicy)(nil)).Elem()
   299  }
   300  
   301  func (o VaultPolicyMapOutput) ToVaultPolicyMapOutput() VaultPolicyMapOutput {
   302  	return o
   303  }
   304  
   305  func (o VaultPolicyMapOutput) ToVaultPolicyMapOutputWithContext(ctx context.Context) VaultPolicyMapOutput {
   306  	return o
   307  }
   308  
   309  func (o VaultPolicyMapOutput) MapIndex(k pulumi.StringInput) VaultPolicyOutput {
   310  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *VaultPolicy {
   311  		return vs[0].(map[string]*VaultPolicy)[vs[1].(string)]
   312  	}).(VaultPolicyOutput)
   313  }
   314  
   315  func init() {
   316  	pulumi.RegisterInputType(reflect.TypeOf((*VaultPolicyInput)(nil)).Elem(), &VaultPolicy{})
   317  	pulumi.RegisterInputType(reflect.TypeOf((*VaultPolicyArrayInput)(nil)).Elem(), VaultPolicyArray{})
   318  	pulumi.RegisterInputType(reflect.TypeOf((*VaultPolicyMapInput)(nil)).Elem(), VaultPolicyMap{})
   319  	pulumi.RegisterOutputType(VaultPolicyOutput{})
   320  	pulumi.RegisterOutputType(VaultPolicyArrayOutput{})
   321  	pulumi.RegisterOutputType(VaultPolicyMapOutput{})
   322  }