github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/opensearch/domainPolicy.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 opensearch 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 // Allows setting policy to an OpenSearch domain while referencing domain attributes (e.g., ARN). 16 // 17 // ## Example Usage 18 // 19 // <!--Start PulumiCodeChooser --> 20 // ```go 21 // package main 22 // 23 // import ( 24 // 25 // "fmt" 26 // 27 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" 28 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/opensearch" 29 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 30 // 31 // ) 32 // 33 // func main() { 34 // pulumi.Run(func(ctx *pulumi.Context) error { 35 // example, err := opensearch.NewDomain(ctx, "example", &opensearch.DomainArgs{ 36 // DomainName: pulumi.String("tf-test"), 37 // EngineVersion: pulumi.String("OpenSearch_1.1"), 38 // }) 39 // if err != nil { 40 // return err 41 // } 42 // main := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{ 43 // Statements: iam.GetPolicyDocumentStatementArray{ 44 // &iam.GetPolicyDocumentStatementArgs{ 45 // Effect: pulumi.String("Allow"), 46 // Principals: iam.GetPolicyDocumentStatementPrincipalArray{ 47 // &iam.GetPolicyDocumentStatementPrincipalArgs{ 48 // Type: pulumi.String("*"), 49 // Identifiers: pulumi.StringArray{ 50 // pulumi.String("*"), 51 // }, 52 // }, 53 // }, 54 // Actions: pulumi.StringArray{ 55 // pulumi.String("es:*"), 56 // }, 57 // Resources: pulumi.StringArray{ 58 // example.Arn.ApplyT(func(arn string) (string, error) { 59 // return fmt.Sprintf("%v/*", arn), nil 60 // }).(pulumi.StringOutput), 61 // }, 62 // Conditions: iam.GetPolicyDocumentStatementConditionArray{ 63 // &iam.GetPolicyDocumentStatementConditionArgs{ 64 // Test: pulumi.String("IpAddress"), 65 // Variable: pulumi.String("aws:SourceIp"), 66 // Values: pulumi.StringArray{ 67 // pulumi.String("127.0.0.1/32"), 68 // }, 69 // }, 70 // }, 71 // }, 72 // }, 73 // }, nil) 74 // _, err = opensearch.NewDomainPolicy(ctx, "main", &opensearch.DomainPolicyArgs{ 75 // DomainName: example.DomainName, 76 // AccessPolicies: main.ApplyT(func(main iam.GetPolicyDocumentResult) (*string, error) { 77 // return &main.Json, nil 78 // }).(pulumi.StringPtrOutput), 79 // }) 80 // if err != nil { 81 // return err 82 // } 83 // return nil 84 // }) 85 // } 86 // 87 // ``` 88 // <!--End PulumiCodeChooser --> 89 type DomainPolicy struct { 90 pulumi.CustomResourceState 91 92 // IAM policy document specifying the access policies for the domain 93 AccessPolicies pulumi.StringOutput `pulumi:"accessPolicies"` 94 // Name of the domain. 95 DomainName pulumi.StringOutput `pulumi:"domainName"` 96 } 97 98 // NewDomainPolicy registers a new resource with the given unique name, arguments, and options. 99 func NewDomainPolicy(ctx *pulumi.Context, 100 name string, args *DomainPolicyArgs, opts ...pulumi.ResourceOption) (*DomainPolicy, error) { 101 if args == nil { 102 return nil, errors.New("missing one or more required arguments") 103 } 104 105 if args.AccessPolicies == nil { 106 return nil, errors.New("invalid value for required argument 'AccessPolicies'") 107 } 108 if args.DomainName == nil { 109 return nil, errors.New("invalid value for required argument 'DomainName'") 110 } 111 opts = internal.PkgResourceDefaultOpts(opts) 112 var resource DomainPolicy 113 err := ctx.RegisterResource("aws:opensearch/domainPolicy:DomainPolicy", name, args, &resource, opts...) 114 if err != nil { 115 return nil, err 116 } 117 return &resource, nil 118 } 119 120 // GetDomainPolicy gets an existing DomainPolicy resource's state with the given name, ID, and optional 121 // state properties that are used to uniquely qualify the lookup (nil if not required). 122 func GetDomainPolicy(ctx *pulumi.Context, 123 name string, id pulumi.IDInput, state *DomainPolicyState, opts ...pulumi.ResourceOption) (*DomainPolicy, error) { 124 var resource DomainPolicy 125 err := ctx.ReadResource("aws:opensearch/domainPolicy:DomainPolicy", name, id, state, &resource, opts...) 126 if err != nil { 127 return nil, err 128 } 129 return &resource, nil 130 } 131 132 // Input properties used for looking up and filtering DomainPolicy resources. 133 type domainPolicyState struct { 134 // IAM policy document specifying the access policies for the domain 135 AccessPolicies *string `pulumi:"accessPolicies"` 136 // Name of the domain. 137 DomainName *string `pulumi:"domainName"` 138 } 139 140 type DomainPolicyState struct { 141 // IAM policy document specifying the access policies for the domain 142 AccessPolicies pulumi.StringPtrInput 143 // Name of the domain. 144 DomainName pulumi.StringPtrInput 145 } 146 147 func (DomainPolicyState) ElementType() reflect.Type { 148 return reflect.TypeOf((*domainPolicyState)(nil)).Elem() 149 } 150 151 type domainPolicyArgs struct { 152 // IAM policy document specifying the access policies for the domain 153 AccessPolicies string `pulumi:"accessPolicies"` 154 // Name of the domain. 155 DomainName string `pulumi:"domainName"` 156 } 157 158 // The set of arguments for constructing a DomainPolicy resource. 159 type DomainPolicyArgs struct { 160 // IAM policy document specifying the access policies for the domain 161 AccessPolicies pulumi.StringInput 162 // Name of the domain. 163 DomainName pulumi.StringInput 164 } 165 166 func (DomainPolicyArgs) ElementType() reflect.Type { 167 return reflect.TypeOf((*domainPolicyArgs)(nil)).Elem() 168 } 169 170 type DomainPolicyInput interface { 171 pulumi.Input 172 173 ToDomainPolicyOutput() DomainPolicyOutput 174 ToDomainPolicyOutputWithContext(ctx context.Context) DomainPolicyOutput 175 } 176 177 func (*DomainPolicy) ElementType() reflect.Type { 178 return reflect.TypeOf((**DomainPolicy)(nil)).Elem() 179 } 180 181 func (i *DomainPolicy) ToDomainPolicyOutput() DomainPolicyOutput { 182 return i.ToDomainPolicyOutputWithContext(context.Background()) 183 } 184 185 func (i *DomainPolicy) ToDomainPolicyOutputWithContext(ctx context.Context) DomainPolicyOutput { 186 return pulumi.ToOutputWithContext(ctx, i).(DomainPolicyOutput) 187 } 188 189 // DomainPolicyArrayInput is an input type that accepts DomainPolicyArray and DomainPolicyArrayOutput values. 190 // You can construct a concrete instance of `DomainPolicyArrayInput` via: 191 // 192 // DomainPolicyArray{ DomainPolicyArgs{...} } 193 type DomainPolicyArrayInput interface { 194 pulumi.Input 195 196 ToDomainPolicyArrayOutput() DomainPolicyArrayOutput 197 ToDomainPolicyArrayOutputWithContext(context.Context) DomainPolicyArrayOutput 198 } 199 200 type DomainPolicyArray []DomainPolicyInput 201 202 func (DomainPolicyArray) ElementType() reflect.Type { 203 return reflect.TypeOf((*[]*DomainPolicy)(nil)).Elem() 204 } 205 206 func (i DomainPolicyArray) ToDomainPolicyArrayOutput() DomainPolicyArrayOutput { 207 return i.ToDomainPolicyArrayOutputWithContext(context.Background()) 208 } 209 210 func (i DomainPolicyArray) ToDomainPolicyArrayOutputWithContext(ctx context.Context) DomainPolicyArrayOutput { 211 return pulumi.ToOutputWithContext(ctx, i).(DomainPolicyArrayOutput) 212 } 213 214 // DomainPolicyMapInput is an input type that accepts DomainPolicyMap and DomainPolicyMapOutput values. 215 // You can construct a concrete instance of `DomainPolicyMapInput` via: 216 // 217 // DomainPolicyMap{ "key": DomainPolicyArgs{...} } 218 type DomainPolicyMapInput interface { 219 pulumi.Input 220 221 ToDomainPolicyMapOutput() DomainPolicyMapOutput 222 ToDomainPolicyMapOutputWithContext(context.Context) DomainPolicyMapOutput 223 } 224 225 type DomainPolicyMap map[string]DomainPolicyInput 226 227 func (DomainPolicyMap) ElementType() reflect.Type { 228 return reflect.TypeOf((*map[string]*DomainPolicy)(nil)).Elem() 229 } 230 231 func (i DomainPolicyMap) ToDomainPolicyMapOutput() DomainPolicyMapOutput { 232 return i.ToDomainPolicyMapOutputWithContext(context.Background()) 233 } 234 235 func (i DomainPolicyMap) ToDomainPolicyMapOutputWithContext(ctx context.Context) DomainPolicyMapOutput { 236 return pulumi.ToOutputWithContext(ctx, i).(DomainPolicyMapOutput) 237 } 238 239 type DomainPolicyOutput struct{ *pulumi.OutputState } 240 241 func (DomainPolicyOutput) ElementType() reflect.Type { 242 return reflect.TypeOf((**DomainPolicy)(nil)).Elem() 243 } 244 245 func (o DomainPolicyOutput) ToDomainPolicyOutput() DomainPolicyOutput { 246 return o 247 } 248 249 func (o DomainPolicyOutput) ToDomainPolicyOutputWithContext(ctx context.Context) DomainPolicyOutput { 250 return o 251 } 252 253 // IAM policy document specifying the access policies for the domain 254 func (o DomainPolicyOutput) AccessPolicies() pulumi.StringOutput { 255 return o.ApplyT(func(v *DomainPolicy) pulumi.StringOutput { return v.AccessPolicies }).(pulumi.StringOutput) 256 } 257 258 // Name of the domain. 259 func (o DomainPolicyOutput) DomainName() pulumi.StringOutput { 260 return o.ApplyT(func(v *DomainPolicy) pulumi.StringOutput { return v.DomainName }).(pulumi.StringOutput) 261 } 262 263 type DomainPolicyArrayOutput struct{ *pulumi.OutputState } 264 265 func (DomainPolicyArrayOutput) ElementType() reflect.Type { 266 return reflect.TypeOf((*[]*DomainPolicy)(nil)).Elem() 267 } 268 269 func (o DomainPolicyArrayOutput) ToDomainPolicyArrayOutput() DomainPolicyArrayOutput { 270 return o 271 } 272 273 func (o DomainPolicyArrayOutput) ToDomainPolicyArrayOutputWithContext(ctx context.Context) DomainPolicyArrayOutput { 274 return o 275 } 276 277 func (o DomainPolicyArrayOutput) Index(i pulumi.IntInput) DomainPolicyOutput { 278 return pulumi.All(o, i).ApplyT(func(vs []interface{}) *DomainPolicy { 279 return vs[0].([]*DomainPolicy)[vs[1].(int)] 280 }).(DomainPolicyOutput) 281 } 282 283 type DomainPolicyMapOutput struct{ *pulumi.OutputState } 284 285 func (DomainPolicyMapOutput) ElementType() reflect.Type { 286 return reflect.TypeOf((*map[string]*DomainPolicy)(nil)).Elem() 287 } 288 289 func (o DomainPolicyMapOutput) ToDomainPolicyMapOutput() DomainPolicyMapOutput { 290 return o 291 } 292 293 func (o DomainPolicyMapOutput) ToDomainPolicyMapOutputWithContext(ctx context.Context) DomainPolicyMapOutput { 294 return o 295 } 296 297 func (o DomainPolicyMapOutput) MapIndex(k pulumi.StringInput) DomainPolicyOutput { 298 return pulumi.All(o, k).ApplyT(func(vs []interface{}) *DomainPolicy { 299 return vs[0].(map[string]*DomainPolicy)[vs[1].(string)] 300 }).(DomainPolicyOutput) 301 } 302 303 func init() { 304 pulumi.RegisterInputType(reflect.TypeOf((*DomainPolicyInput)(nil)).Elem(), &DomainPolicy{}) 305 pulumi.RegisterInputType(reflect.TypeOf((*DomainPolicyArrayInput)(nil)).Elem(), DomainPolicyArray{}) 306 pulumi.RegisterInputType(reflect.TypeOf((*DomainPolicyMapInput)(nil)).Elem(), DomainPolicyMap{}) 307 pulumi.RegisterOutputType(DomainPolicyOutput{}) 308 pulumi.RegisterOutputType(DomainPolicyArrayOutput{}) 309 pulumi.RegisterOutputType(DomainPolicyMapOutput{}) 310 }