github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/cloudsearch/domainServiceAccessPolicy.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 cloudsearch
     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 CloudSearch domain service access policy resource.
    16  //
    17  // The provider waits for the domain service access policy to become `Active` when applying a configuration.
    18  //
    19  // ## Example Usage
    20  //
    21  // <!--Start PulumiCodeChooser -->
    22  // ```go
    23  // package main
    24  //
    25  // import (
    26  //
    27  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudsearch"
    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  //			exampleDomain, err := cloudsearch.NewDomain(ctx, "example", &cloudsearch.DomainArgs{
    36  //				Name: pulumi.String("example-domain"),
    37  //			})
    38  //			if err != nil {
    39  //				return err
    40  //			}
    41  //			example, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{
    42  //				Statements: []iam.GetPolicyDocumentStatement{
    43  //					{
    44  //						Sid:    pulumi.StringRef("search_only"),
    45  //						Effect: pulumi.StringRef("Allow"),
    46  //						Principals: []iam.GetPolicyDocumentStatementPrincipal{
    47  //							{
    48  //								Type: "*",
    49  //								Identifiers: []string{
    50  //									"*",
    51  //								},
    52  //							},
    53  //						},
    54  //						Actions: []string{
    55  //							"cloudsearch:search",
    56  //							"cloudsearch:document",
    57  //						},
    58  //						Conditions: []iam.GetPolicyDocumentStatementCondition{
    59  //							{
    60  //								Test:     "IpAddress",
    61  //								Variable: "aws:SourceIp",
    62  //								Values: []string{
    63  //									"192.0.2.0/32",
    64  //								},
    65  //							},
    66  //						},
    67  //					},
    68  //				},
    69  //			}, nil)
    70  //			if err != nil {
    71  //				return err
    72  //			}
    73  //			_, err = cloudsearch.NewDomainServiceAccessPolicy(ctx, "example", &cloudsearch.DomainServiceAccessPolicyArgs{
    74  //				DomainName:   exampleDomain.ID(),
    75  //				AccessPolicy: pulumi.String(example.Json),
    76  //			})
    77  //			if err != nil {
    78  //				return err
    79  //			}
    80  //			return nil
    81  //		})
    82  //	}
    83  //
    84  // ```
    85  // <!--End PulumiCodeChooser -->
    86  //
    87  // ## Import
    88  //
    89  // Using `pulumi import`, import CloudSearch domain service access policies using the domain name. For example:
    90  //
    91  // ```sh
    92  // $ pulumi import aws:cloudsearch/domainServiceAccessPolicy:DomainServiceAccessPolicy example example-domain
    93  // ```
    94  type DomainServiceAccessPolicy struct {
    95  	pulumi.CustomResourceState
    96  
    97  	// The access rules you want to configure. These rules replace any existing rules. See the [AWS documentation](https://docs.aws.amazon.com/cloudsearch/latest/developerguide/configuring-access.html) for details.
    98  	AccessPolicy pulumi.StringOutput `pulumi:"accessPolicy"`
    99  	// The CloudSearch domain name the policy applies to.
   100  	DomainName pulumi.StringOutput `pulumi:"domainName"`
   101  }
   102  
   103  // NewDomainServiceAccessPolicy registers a new resource with the given unique name, arguments, and options.
   104  func NewDomainServiceAccessPolicy(ctx *pulumi.Context,
   105  	name string, args *DomainServiceAccessPolicyArgs, opts ...pulumi.ResourceOption) (*DomainServiceAccessPolicy, error) {
   106  	if args == nil {
   107  		return nil, errors.New("missing one or more required arguments")
   108  	}
   109  
   110  	if args.AccessPolicy == nil {
   111  		return nil, errors.New("invalid value for required argument 'AccessPolicy'")
   112  	}
   113  	if args.DomainName == nil {
   114  		return nil, errors.New("invalid value for required argument 'DomainName'")
   115  	}
   116  	opts = internal.PkgResourceDefaultOpts(opts)
   117  	var resource DomainServiceAccessPolicy
   118  	err := ctx.RegisterResource("aws:cloudsearch/domainServiceAccessPolicy:DomainServiceAccessPolicy", name, args, &resource, opts...)
   119  	if err != nil {
   120  		return nil, err
   121  	}
   122  	return &resource, nil
   123  }
   124  
   125  // GetDomainServiceAccessPolicy gets an existing DomainServiceAccessPolicy resource's state with the given name, ID, and optional
   126  // state properties that are used to uniquely qualify the lookup (nil if not required).
   127  func GetDomainServiceAccessPolicy(ctx *pulumi.Context,
   128  	name string, id pulumi.IDInput, state *DomainServiceAccessPolicyState, opts ...pulumi.ResourceOption) (*DomainServiceAccessPolicy, error) {
   129  	var resource DomainServiceAccessPolicy
   130  	err := ctx.ReadResource("aws:cloudsearch/domainServiceAccessPolicy:DomainServiceAccessPolicy", name, id, state, &resource, opts...)
   131  	if err != nil {
   132  		return nil, err
   133  	}
   134  	return &resource, nil
   135  }
   136  
   137  // Input properties used for looking up and filtering DomainServiceAccessPolicy resources.
   138  type domainServiceAccessPolicyState struct {
   139  	// The access rules you want to configure. These rules replace any existing rules. See the [AWS documentation](https://docs.aws.amazon.com/cloudsearch/latest/developerguide/configuring-access.html) for details.
   140  	AccessPolicy *string `pulumi:"accessPolicy"`
   141  	// The CloudSearch domain name the policy applies to.
   142  	DomainName *string `pulumi:"domainName"`
   143  }
   144  
   145  type DomainServiceAccessPolicyState struct {
   146  	// The access rules you want to configure. These rules replace any existing rules. See the [AWS documentation](https://docs.aws.amazon.com/cloudsearch/latest/developerguide/configuring-access.html) for details.
   147  	AccessPolicy pulumi.StringPtrInput
   148  	// The CloudSearch domain name the policy applies to.
   149  	DomainName pulumi.StringPtrInput
   150  }
   151  
   152  func (DomainServiceAccessPolicyState) ElementType() reflect.Type {
   153  	return reflect.TypeOf((*domainServiceAccessPolicyState)(nil)).Elem()
   154  }
   155  
   156  type domainServiceAccessPolicyArgs struct {
   157  	// The access rules you want to configure. These rules replace any existing rules. See the [AWS documentation](https://docs.aws.amazon.com/cloudsearch/latest/developerguide/configuring-access.html) for details.
   158  	AccessPolicy string `pulumi:"accessPolicy"`
   159  	// The CloudSearch domain name the policy applies to.
   160  	DomainName string `pulumi:"domainName"`
   161  }
   162  
   163  // The set of arguments for constructing a DomainServiceAccessPolicy resource.
   164  type DomainServiceAccessPolicyArgs struct {
   165  	// The access rules you want to configure. These rules replace any existing rules. See the [AWS documentation](https://docs.aws.amazon.com/cloudsearch/latest/developerguide/configuring-access.html) for details.
   166  	AccessPolicy pulumi.StringInput
   167  	// The CloudSearch domain name the policy applies to.
   168  	DomainName pulumi.StringInput
   169  }
   170  
   171  func (DomainServiceAccessPolicyArgs) ElementType() reflect.Type {
   172  	return reflect.TypeOf((*domainServiceAccessPolicyArgs)(nil)).Elem()
   173  }
   174  
   175  type DomainServiceAccessPolicyInput interface {
   176  	pulumi.Input
   177  
   178  	ToDomainServiceAccessPolicyOutput() DomainServiceAccessPolicyOutput
   179  	ToDomainServiceAccessPolicyOutputWithContext(ctx context.Context) DomainServiceAccessPolicyOutput
   180  }
   181  
   182  func (*DomainServiceAccessPolicy) ElementType() reflect.Type {
   183  	return reflect.TypeOf((**DomainServiceAccessPolicy)(nil)).Elem()
   184  }
   185  
   186  func (i *DomainServiceAccessPolicy) ToDomainServiceAccessPolicyOutput() DomainServiceAccessPolicyOutput {
   187  	return i.ToDomainServiceAccessPolicyOutputWithContext(context.Background())
   188  }
   189  
   190  func (i *DomainServiceAccessPolicy) ToDomainServiceAccessPolicyOutputWithContext(ctx context.Context) DomainServiceAccessPolicyOutput {
   191  	return pulumi.ToOutputWithContext(ctx, i).(DomainServiceAccessPolicyOutput)
   192  }
   193  
   194  // DomainServiceAccessPolicyArrayInput is an input type that accepts DomainServiceAccessPolicyArray and DomainServiceAccessPolicyArrayOutput values.
   195  // You can construct a concrete instance of `DomainServiceAccessPolicyArrayInput` via:
   196  //
   197  //	DomainServiceAccessPolicyArray{ DomainServiceAccessPolicyArgs{...} }
   198  type DomainServiceAccessPolicyArrayInput interface {
   199  	pulumi.Input
   200  
   201  	ToDomainServiceAccessPolicyArrayOutput() DomainServiceAccessPolicyArrayOutput
   202  	ToDomainServiceAccessPolicyArrayOutputWithContext(context.Context) DomainServiceAccessPolicyArrayOutput
   203  }
   204  
   205  type DomainServiceAccessPolicyArray []DomainServiceAccessPolicyInput
   206  
   207  func (DomainServiceAccessPolicyArray) ElementType() reflect.Type {
   208  	return reflect.TypeOf((*[]*DomainServiceAccessPolicy)(nil)).Elem()
   209  }
   210  
   211  func (i DomainServiceAccessPolicyArray) ToDomainServiceAccessPolicyArrayOutput() DomainServiceAccessPolicyArrayOutput {
   212  	return i.ToDomainServiceAccessPolicyArrayOutputWithContext(context.Background())
   213  }
   214  
   215  func (i DomainServiceAccessPolicyArray) ToDomainServiceAccessPolicyArrayOutputWithContext(ctx context.Context) DomainServiceAccessPolicyArrayOutput {
   216  	return pulumi.ToOutputWithContext(ctx, i).(DomainServiceAccessPolicyArrayOutput)
   217  }
   218  
   219  // DomainServiceAccessPolicyMapInput is an input type that accepts DomainServiceAccessPolicyMap and DomainServiceAccessPolicyMapOutput values.
   220  // You can construct a concrete instance of `DomainServiceAccessPolicyMapInput` via:
   221  //
   222  //	DomainServiceAccessPolicyMap{ "key": DomainServiceAccessPolicyArgs{...} }
   223  type DomainServiceAccessPolicyMapInput interface {
   224  	pulumi.Input
   225  
   226  	ToDomainServiceAccessPolicyMapOutput() DomainServiceAccessPolicyMapOutput
   227  	ToDomainServiceAccessPolicyMapOutputWithContext(context.Context) DomainServiceAccessPolicyMapOutput
   228  }
   229  
   230  type DomainServiceAccessPolicyMap map[string]DomainServiceAccessPolicyInput
   231  
   232  func (DomainServiceAccessPolicyMap) ElementType() reflect.Type {
   233  	return reflect.TypeOf((*map[string]*DomainServiceAccessPolicy)(nil)).Elem()
   234  }
   235  
   236  func (i DomainServiceAccessPolicyMap) ToDomainServiceAccessPolicyMapOutput() DomainServiceAccessPolicyMapOutput {
   237  	return i.ToDomainServiceAccessPolicyMapOutputWithContext(context.Background())
   238  }
   239  
   240  func (i DomainServiceAccessPolicyMap) ToDomainServiceAccessPolicyMapOutputWithContext(ctx context.Context) DomainServiceAccessPolicyMapOutput {
   241  	return pulumi.ToOutputWithContext(ctx, i).(DomainServiceAccessPolicyMapOutput)
   242  }
   243  
   244  type DomainServiceAccessPolicyOutput struct{ *pulumi.OutputState }
   245  
   246  func (DomainServiceAccessPolicyOutput) ElementType() reflect.Type {
   247  	return reflect.TypeOf((**DomainServiceAccessPolicy)(nil)).Elem()
   248  }
   249  
   250  func (o DomainServiceAccessPolicyOutput) ToDomainServiceAccessPolicyOutput() DomainServiceAccessPolicyOutput {
   251  	return o
   252  }
   253  
   254  func (o DomainServiceAccessPolicyOutput) ToDomainServiceAccessPolicyOutputWithContext(ctx context.Context) DomainServiceAccessPolicyOutput {
   255  	return o
   256  }
   257  
   258  // The access rules you want to configure. These rules replace any existing rules. See the [AWS documentation](https://docs.aws.amazon.com/cloudsearch/latest/developerguide/configuring-access.html) for details.
   259  func (o DomainServiceAccessPolicyOutput) AccessPolicy() pulumi.StringOutput {
   260  	return o.ApplyT(func(v *DomainServiceAccessPolicy) pulumi.StringOutput { return v.AccessPolicy }).(pulumi.StringOutput)
   261  }
   262  
   263  // The CloudSearch domain name the policy applies to.
   264  func (o DomainServiceAccessPolicyOutput) DomainName() pulumi.StringOutput {
   265  	return o.ApplyT(func(v *DomainServiceAccessPolicy) pulumi.StringOutput { return v.DomainName }).(pulumi.StringOutput)
   266  }
   267  
   268  type DomainServiceAccessPolicyArrayOutput struct{ *pulumi.OutputState }
   269  
   270  func (DomainServiceAccessPolicyArrayOutput) ElementType() reflect.Type {
   271  	return reflect.TypeOf((*[]*DomainServiceAccessPolicy)(nil)).Elem()
   272  }
   273  
   274  func (o DomainServiceAccessPolicyArrayOutput) ToDomainServiceAccessPolicyArrayOutput() DomainServiceAccessPolicyArrayOutput {
   275  	return o
   276  }
   277  
   278  func (o DomainServiceAccessPolicyArrayOutput) ToDomainServiceAccessPolicyArrayOutputWithContext(ctx context.Context) DomainServiceAccessPolicyArrayOutput {
   279  	return o
   280  }
   281  
   282  func (o DomainServiceAccessPolicyArrayOutput) Index(i pulumi.IntInput) DomainServiceAccessPolicyOutput {
   283  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *DomainServiceAccessPolicy {
   284  		return vs[0].([]*DomainServiceAccessPolicy)[vs[1].(int)]
   285  	}).(DomainServiceAccessPolicyOutput)
   286  }
   287  
   288  type DomainServiceAccessPolicyMapOutput struct{ *pulumi.OutputState }
   289  
   290  func (DomainServiceAccessPolicyMapOutput) ElementType() reflect.Type {
   291  	return reflect.TypeOf((*map[string]*DomainServiceAccessPolicy)(nil)).Elem()
   292  }
   293  
   294  func (o DomainServiceAccessPolicyMapOutput) ToDomainServiceAccessPolicyMapOutput() DomainServiceAccessPolicyMapOutput {
   295  	return o
   296  }
   297  
   298  func (o DomainServiceAccessPolicyMapOutput) ToDomainServiceAccessPolicyMapOutputWithContext(ctx context.Context) DomainServiceAccessPolicyMapOutput {
   299  	return o
   300  }
   301  
   302  func (o DomainServiceAccessPolicyMapOutput) MapIndex(k pulumi.StringInput) DomainServiceAccessPolicyOutput {
   303  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *DomainServiceAccessPolicy {
   304  		return vs[0].(map[string]*DomainServiceAccessPolicy)[vs[1].(string)]
   305  	}).(DomainServiceAccessPolicyOutput)
   306  }
   307  
   308  func init() {
   309  	pulumi.RegisterInputType(reflect.TypeOf((*DomainServiceAccessPolicyInput)(nil)).Elem(), &DomainServiceAccessPolicy{})
   310  	pulumi.RegisterInputType(reflect.TypeOf((*DomainServiceAccessPolicyArrayInput)(nil)).Elem(), DomainServiceAccessPolicyArray{})
   311  	pulumi.RegisterInputType(reflect.TypeOf((*DomainServiceAccessPolicyMapInput)(nil)).Elem(), DomainServiceAccessPolicyMap{})
   312  	pulumi.RegisterOutputType(DomainServiceAccessPolicyOutput{})
   313  	pulumi.RegisterOutputType(DomainServiceAccessPolicyArrayOutput{})
   314  	pulumi.RegisterOutputType(DomainServiceAccessPolicyMapOutput{})
   315  }