github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/vpclattice/resourcePolicy.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 vpclattice 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 // Resource for managing an AWS VPC Lattice Resource Policy. 16 // 17 // ## Example Usage 18 // 19 // ### Basic Usage 20 // 21 // <!--Start PulumiCodeChooser --> 22 // ```go 23 // package main 24 // 25 // import ( 26 // 27 // "encoding/json" 28 // "fmt" 29 // 30 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws" 31 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/vpclattice" 32 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 33 // 34 // ) 35 // 36 // func main() { 37 // pulumi.Run(func(ctx *pulumi.Context) error { 38 // current, err := aws.GetCallerIdentity(ctx, nil, nil) 39 // if err != nil { 40 // return err 41 // } 42 // currentGetPartition, err := aws.GetPartition(ctx, nil, nil) 43 // if err != nil { 44 // return err 45 // } 46 // example, err := vpclattice.NewServiceNetwork(ctx, "example", &vpclattice.ServiceNetworkArgs{ 47 // Name: pulumi.String("example-vpclattice-service-network"), 48 // }) 49 // if err != nil { 50 // return err 51 // } 52 // _, err = vpclattice.NewResourcePolicy(ctx, "example", &vpclattice.ResourcePolicyArgs{ 53 // ResourceArn: example.Arn, 54 // Policy: example.Arn.ApplyT(func(arn string) (pulumi.String, error) { 55 // var _zero pulumi.String 56 // tmpJSON0, err := json.Marshal(map[string]interface{}{ 57 // "Version": "2012-10-17", 58 // "Statement": []map[string]interface{}{ 59 // map[string]interface{}{ 60 // "Sid": "test-pol-principals-6", 61 // "Effect": "Allow", 62 // "Principal": map[string]interface{}{ 63 // "AWS": fmt.Sprintf("arn:%v:iam::%v:root", currentGetPartition.Partition, current.AccountId), 64 // }, 65 // "Action": []string{ 66 // "vpc-lattice:CreateServiceNetworkVpcAssociation", 67 // "vpc-lattice:CreateServiceNetworkServiceAssociation", 68 // "vpc-lattice:GetServiceNetwork", 69 // }, 70 // "Resource": arn, 71 // }, 72 // }, 73 // }) 74 // if err != nil { 75 // return _zero, err 76 // } 77 // json0 := string(tmpJSON0) 78 // return pulumi.String(json0), nil 79 // }).(pulumi.StringOutput), 80 // }) 81 // if err != nil { 82 // return err 83 // } 84 // return nil 85 // }) 86 // } 87 // 88 // ``` 89 // <!--End PulumiCodeChooser --> 90 // 91 // ## Import 92 // 93 // Using `pulumi import`, import VPC Lattice Resource Policy using the `resource_arn`. For example: 94 // 95 // ```sh 96 // $ pulumi import aws:vpclattice/resourcePolicy:ResourcePolicy example rft-8012925589 97 // ``` 98 type ResourcePolicy struct { 99 pulumi.CustomResourceState 100 101 // An IAM policy. The policy string in JSON must not contain newlines or blank lines. 102 Policy pulumi.StringOutput `pulumi:"policy"` 103 // The ID or Amazon Resource Name (ARN) of the service network or service for which the policy is created. 104 ResourceArn pulumi.StringOutput `pulumi:"resourceArn"` 105 } 106 107 // NewResourcePolicy registers a new resource with the given unique name, arguments, and options. 108 func NewResourcePolicy(ctx *pulumi.Context, 109 name string, args *ResourcePolicyArgs, opts ...pulumi.ResourceOption) (*ResourcePolicy, error) { 110 if args == nil { 111 return nil, errors.New("missing one or more required arguments") 112 } 113 114 if args.Policy == nil { 115 return nil, errors.New("invalid value for required argument 'Policy'") 116 } 117 if args.ResourceArn == nil { 118 return nil, errors.New("invalid value for required argument 'ResourceArn'") 119 } 120 opts = internal.PkgResourceDefaultOpts(opts) 121 var resource ResourcePolicy 122 err := ctx.RegisterResource("aws:vpclattice/resourcePolicy:ResourcePolicy", name, args, &resource, opts...) 123 if err != nil { 124 return nil, err 125 } 126 return &resource, nil 127 } 128 129 // GetResourcePolicy gets an existing ResourcePolicy resource's state with the given name, ID, and optional 130 // state properties that are used to uniquely qualify the lookup (nil if not required). 131 func GetResourcePolicy(ctx *pulumi.Context, 132 name string, id pulumi.IDInput, state *ResourcePolicyState, opts ...pulumi.ResourceOption) (*ResourcePolicy, error) { 133 var resource ResourcePolicy 134 err := ctx.ReadResource("aws:vpclattice/resourcePolicy:ResourcePolicy", name, id, state, &resource, opts...) 135 if err != nil { 136 return nil, err 137 } 138 return &resource, nil 139 } 140 141 // Input properties used for looking up and filtering ResourcePolicy resources. 142 type resourcePolicyState struct { 143 // An IAM policy. The policy string in JSON must not contain newlines or blank lines. 144 Policy *string `pulumi:"policy"` 145 // The ID or Amazon Resource Name (ARN) of the service network or service for which the policy is created. 146 ResourceArn *string `pulumi:"resourceArn"` 147 } 148 149 type ResourcePolicyState struct { 150 // An IAM policy. The policy string in JSON must not contain newlines or blank lines. 151 Policy pulumi.StringPtrInput 152 // The ID or Amazon Resource Name (ARN) of the service network or service for which the policy is created. 153 ResourceArn pulumi.StringPtrInput 154 } 155 156 func (ResourcePolicyState) ElementType() reflect.Type { 157 return reflect.TypeOf((*resourcePolicyState)(nil)).Elem() 158 } 159 160 type resourcePolicyArgs struct { 161 // An IAM policy. The policy string in JSON must not contain newlines or blank lines. 162 Policy string `pulumi:"policy"` 163 // The ID or Amazon Resource Name (ARN) of the service network or service for which the policy is created. 164 ResourceArn string `pulumi:"resourceArn"` 165 } 166 167 // The set of arguments for constructing a ResourcePolicy resource. 168 type ResourcePolicyArgs struct { 169 // An IAM policy. The policy string in JSON must not contain newlines or blank lines. 170 Policy pulumi.StringInput 171 // The ID or Amazon Resource Name (ARN) of the service network or service for which the policy is created. 172 ResourceArn pulumi.StringInput 173 } 174 175 func (ResourcePolicyArgs) ElementType() reflect.Type { 176 return reflect.TypeOf((*resourcePolicyArgs)(nil)).Elem() 177 } 178 179 type ResourcePolicyInput interface { 180 pulumi.Input 181 182 ToResourcePolicyOutput() ResourcePolicyOutput 183 ToResourcePolicyOutputWithContext(ctx context.Context) ResourcePolicyOutput 184 } 185 186 func (*ResourcePolicy) ElementType() reflect.Type { 187 return reflect.TypeOf((**ResourcePolicy)(nil)).Elem() 188 } 189 190 func (i *ResourcePolicy) ToResourcePolicyOutput() ResourcePolicyOutput { 191 return i.ToResourcePolicyOutputWithContext(context.Background()) 192 } 193 194 func (i *ResourcePolicy) ToResourcePolicyOutputWithContext(ctx context.Context) ResourcePolicyOutput { 195 return pulumi.ToOutputWithContext(ctx, i).(ResourcePolicyOutput) 196 } 197 198 // ResourcePolicyArrayInput is an input type that accepts ResourcePolicyArray and ResourcePolicyArrayOutput values. 199 // You can construct a concrete instance of `ResourcePolicyArrayInput` via: 200 // 201 // ResourcePolicyArray{ ResourcePolicyArgs{...} } 202 type ResourcePolicyArrayInput interface { 203 pulumi.Input 204 205 ToResourcePolicyArrayOutput() ResourcePolicyArrayOutput 206 ToResourcePolicyArrayOutputWithContext(context.Context) ResourcePolicyArrayOutput 207 } 208 209 type ResourcePolicyArray []ResourcePolicyInput 210 211 func (ResourcePolicyArray) ElementType() reflect.Type { 212 return reflect.TypeOf((*[]*ResourcePolicy)(nil)).Elem() 213 } 214 215 func (i ResourcePolicyArray) ToResourcePolicyArrayOutput() ResourcePolicyArrayOutput { 216 return i.ToResourcePolicyArrayOutputWithContext(context.Background()) 217 } 218 219 func (i ResourcePolicyArray) ToResourcePolicyArrayOutputWithContext(ctx context.Context) ResourcePolicyArrayOutput { 220 return pulumi.ToOutputWithContext(ctx, i).(ResourcePolicyArrayOutput) 221 } 222 223 // ResourcePolicyMapInput is an input type that accepts ResourcePolicyMap and ResourcePolicyMapOutput values. 224 // You can construct a concrete instance of `ResourcePolicyMapInput` via: 225 // 226 // ResourcePolicyMap{ "key": ResourcePolicyArgs{...} } 227 type ResourcePolicyMapInput interface { 228 pulumi.Input 229 230 ToResourcePolicyMapOutput() ResourcePolicyMapOutput 231 ToResourcePolicyMapOutputWithContext(context.Context) ResourcePolicyMapOutput 232 } 233 234 type ResourcePolicyMap map[string]ResourcePolicyInput 235 236 func (ResourcePolicyMap) ElementType() reflect.Type { 237 return reflect.TypeOf((*map[string]*ResourcePolicy)(nil)).Elem() 238 } 239 240 func (i ResourcePolicyMap) ToResourcePolicyMapOutput() ResourcePolicyMapOutput { 241 return i.ToResourcePolicyMapOutputWithContext(context.Background()) 242 } 243 244 func (i ResourcePolicyMap) ToResourcePolicyMapOutputWithContext(ctx context.Context) ResourcePolicyMapOutput { 245 return pulumi.ToOutputWithContext(ctx, i).(ResourcePolicyMapOutput) 246 } 247 248 type ResourcePolicyOutput struct{ *pulumi.OutputState } 249 250 func (ResourcePolicyOutput) ElementType() reflect.Type { 251 return reflect.TypeOf((**ResourcePolicy)(nil)).Elem() 252 } 253 254 func (o ResourcePolicyOutput) ToResourcePolicyOutput() ResourcePolicyOutput { 255 return o 256 } 257 258 func (o ResourcePolicyOutput) ToResourcePolicyOutputWithContext(ctx context.Context) ResourcePolicyOutput { 259 return o 260 } 261 262 // An IAM policy. The policy string in JSON must not contain newlines or blank lines. 263 func (o ResourcePolicyOutput) Policy() pulumi.StringOutput { 264 return o.ApplyT(func(v *ResourcePolicy) pulumi.StringOutput { return v.Policy }).(pulumi.StringOutput) 265 } 266 267 // The ID or Amazon Resource Name (ARN) of the service network or service for which the policy is created. 268 func (o ResourcePolicyOutput) ResourceArn() pulumi.StringOutput { 269 return o.ApplyT(func(v *ResourcePolicy) pulumi.StringOutput { return v.ResourceArn }).(pulumi.StringOutput) 270 } 271 272 type ResourcePolicyArrayOutput struct{ *pulumi.OutputState } 273 274 func (ResourcePolicyArrayOutput) ElementType() reflect.Type { 275 return reflect.TypeOf((*[]*ResourcePolicy)(nil)).Elem() 276 } 277 278 func (o ResourcePolicyArrayOutput) ToResourcePolicyArrayOutput() ResourcePolicyArrayOutput { 279 return o 280 } 281 282 func (o ResourcePolicyArrayOutput) ToResourcePolicyArrayOutputWithContext(ctx context.Context) ResourcePolicyArrayOutput { 283 return o 284 } 285 286 func (o ResourcePolicyArrayOutput) Index(i pulumi.IntInput) ResourcePolicyOutput { 287 return pulumi.All(o, i).ApplyT(func(vs []interface{}) *ResourcePolicy { 288 return vs[0].([]*ResourcePolicy)[vs[1].(int)] 289 }).(ResourcePolicyOutput) 290 } 291 292 type ResourcePolicyMapOutput struct{ *pulumi.OutputState } 293 294 func (ResourcePolicyMapOutput) ElementType() reflect.Type { 295 return reflect.TypeOf((*map[string]*ResourcePolicy)(nil)).Elem() 296 } 297 298 func (o ResourcePolicyMapOutput) ToResourcePolicyMapOutput() ResourcePolicyMapOutput { 299 return o 300 } 301 302 func (o ResourcePolicyMapOutput) ToResourcePolicyMapOutputWithContext(ctx context.Context) ResourcePolicyMapOutput { 303 return o 304 } 305 306 func (o ResourcePolicyMapOutput) MapIndex(k pulumi.StringInput) ResourcePolicyOutput { 307 return pulumi.All(o, k).ApplyT(func(vs []interface{}) *ResourcePolicy { 308 return vs[0].(map[string]*ResourcePolicy)[vs[1].(string)] 309 }).(ResourcePolicyOutput) 310 } 311 312 func init() { 313 pulumi.RegisterInputType(reflect.TypeOf((*ResourcePolicyInput)(nil)).Elem(), &ResourcePolicy{}) 314 pulumi.RegisterInputType(reflect.TypeOf((*ResourcePolicyArrayInput)(nil)).Elem(), ResourcePolicyArray{}) 315 pulumi.RegisterInputType(reflect.TypeOf((*ResourcePolicyMapInput)(nil)).Elem(), ResourcePolicyMap{}) 316 pulumi.RegisterOutputType(ResourcePolicyOutput{}) 317 pulumi.RegisterOutputType(ResourcePolicyArrayOutput{}) 318 pulumi.RegisterOutputType(ResourcePolicyMapOutput{}) 319 }