github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/ec2/securityGroupAssociation.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 ec2 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 resource to create an association between a VPC endpoint and a security group. 16 // 17 // > **NOTE on VPC Endpoints and VPC Endpoint Security Group Associations:** The provider provides 18 // both a standalone VPC Endpoint Security Group Association (an association between a VPC endpoint 19 // and a single `securityGroupId`) and a VPC Endpoint resource with a `securityGroupIds` 20 // attribute. Do not use the same security group ID in both a VPC Endpoint resource and a VPC Endpoint Security 21 // Group Association resource. Doing so will cause a conflict of associations and will overwrite the association. 22 // 23 // ## Example Usage 24 // 25 // Basic usage: 26 // 27 // <!--Start PulumiCodeChooser --> 28 // ```go 29 // package main 30 // 31 // import ( 32 // 33 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2" 34 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 35 // 36 // ) 37 // 38 // func main() { 39 // pulumi.Run(func(ctx *pulumi.Context) error { 40 // _, err := ec2.NewSecurityGroupAssociation(ctx, "sg_ec2", &ec2.SecurityGroupAssociationArgs{ 41 // VpcEndpointId: pulumi.Any(ec2.Id), 42 // SecurityGroupId: pulumi.Any(sg.Id), 43 // }) 44 // if err != nil { 45 // return err 46 // } 47 // return nil 48 // }) 49 // } 50 // 51 // ``` 52 // <!--End PulumiCodeChooser --> 53 type SecurityGroupAssociation struct { 54 pulumi.CustomResourceState 55 56 // Whether this association should replace the association with the VPC's default security group that is created when no security groups are specified during VPC endpoint creation. At most 1 association per-VPC endpoint should be configured with `replaceDefaultAssociation = true`. 57 ReplaceDefaultAssociation pulumi.BoolPtrOutput `pulumi:"replaceDefaultAssociation"` 58 // The ID of the security group to be associated with the VPC endpoint. 59 SecurityGroupId pulumi.StringOutput `pulumi:"securityGroupId"` 60 // The ID of the VPC endpoint with which the security group will be associated. 61 VpcEndpointId pulumi.StringOutput `pulumi:"vpcEndpointId"` 62 } 63 64 // NewSecurityGroupAssociation registers a new resource with the given unique name, arguments, and options. 65 func NewSecurityGroupAssociation(ctx *pulumi.Context, 66 name string, args *SecurityGroupAssociationArgs, opts ...pulumi.ResourceOption) (*SecurityGroupAssociation, error) { 67 if args == nil { 68 return nil, errors.New("missing one or more required arguments") 69 } 70 71 if args.SecurityGroupId == nil { 72 return nil, errors.New("invalid value for required argument 'SecurityGroupId'") 73 } 74 if args.VpcEndpointId == nil { 75 return nil, errors.New("invalid value for required argument 'VpcEndpointId'") 76 } 77 opts = internal.PkgResourceDefaultOpts(opts) 78 var resource SecurityGroupAssociation 79 err := ctx.RegisterResource("aws:ec2/securityGroupAssociation:SecurityGroupAssociation", name, args, &resource, opts...) 80 if err != nil { 81 return nil, err 82 } 83 return &resource, nil 84 } 85 86 // GetSecurityGroupAssociation gets an existing SecurityGroupAssociation resource's state with the given name, ID, and optional 87 // state properties that are used to uniquely qualify the lookup (nil if not required). 88 func GetSecurityGroupAssociation(ctx *pulumi.Context, 89 name string, id pulumi.IDInput, state *SecurityGroupAssociationState, opts ...pulumi.ResourceOption) (*SecurityGroupAssociation, error) { 90 var resource SecurityGroupAssociation 91 err := ctx.ReadResource("aws:ec2/securityGroupAssociation:SecurityGroupAssociation", name, id, state, &resource, opts...) 92 if err != nil { 93 return nil, err 94 } 95 return &resource, nil 96 } 97 98 // Input properties used for looking up and filtering SecurityGroupAssociation resources. 99 type securityGroupAssociationState struct { 100 // Whether this association should replace the association with the VPC's default security group that is created when no security groups are specified during VPC endpoint creation. At most 1 association per-VPC endpoint should be configured with `replaceDefaultAssociation = true`. 101 ReplaceDefaultAssociation *bool `pulumi:"replaceDefaultAssociation"` 102 // The ID of the security group to be associated with the VPC endpoint. 103 SecurityGroupId *string `pulumi:"securityGroupId"` 104 // The ID of the VPC endpoint with which the security group will be associated. 105 VpcEndpointId *string `pulumi:"vpcEndpointId"` 106 } 107 108 type SecurityGroupAssociationState struct { 109 // Whether this association should replace the association with the VPC's default security group that is created when no security groups are specified during VPC endpoint creation. At most 1 association per-VPC endpoint should be configured with `replaceDefaultAssociation = true`. 110 ReplaceDefaultAssociation pulumi.BoolPtrInput 111 // The ID of the security group to be associated with the VPC endpoint. 112 SecurityGroupId pulumi.StringPtrInput 113 // The ID of the VPC endpoint with which the security group will be associated. 114 VpcEndpointId pulumi.StringPtrInput 115 } 116 117 func (SecurityGroupAssociationState) ElementType() reflect.Type { 118 return reflect.TypeOf((*securityGroupAssociationState)(nil)).Elem() 119 } 120 121 type securityGroupAssociationArgs struct { 122 // Whether this association should replace the association with the VPC's default security group that is created when no security groups are specified during VPC endpoint creation. At most 1 association per-VPC endpoint should be configured with `replaceDefaultAssociation = true`. 123 ReplaceDefaultAssociation *bool `pulumi:"replaceDefaultAssociation"` 124 // The ID of the security group to be associated with the VPC endpoint. 125 SecurityGroupId string `pulumi:"securityGroupId"` 126 // The ID of the VPC endpoint with which the security group will be associated. 127 VpcEndpointId string `pulumi:"vpcEndpointId"` 128 } 129 130 // The set of arguments for constructing a SecurityGroupAssociation resource. 131 type SecurityGroupAssociationArgs struct { 132 // Whether this association should replace the association with the VPC's default security group that is created when no security groups are specified during VPC endpoint creation. At most 1 association per-VPC endpoint should be configured with `replaceDefaultAssociation = true`. 133 ReplaceDefaultAssociation pulumi.BoolPtrInput 134 // The ID of the security group to be associated with the VPC endpoint. 135 SecurityGroupId pulumi.StringInput 136 // The ID of the VPC endpoint with which the security group will be associated. 137 VpcEndpointId pulumi.StringInput 138 } 139 140 func (SecurityGroupAssociationArgs) ElementType() reflect.Type { 141 return reflect.TypeOf((*securityGroupAssociationArgs)(nil)).Elem() 142 } 143 144 type SecurityGroupAssociationInput interface { 145 pulumi.Input 146 147 ToSecurityGroupAssociationOutput() SecurityGroupAssociationOutput 148 ToSecurityGroupAssociationOutputWithContext(ctx context.Context) SecurityGroupAssociationOutput 149 } 150 151 func (*SecurityGroupAssociation) ElementType() reflect.Type { 152 return reflect.TypeOf((**SecurityGroupAssociation)(nil)).Elem() 153 } 154 155 func (i *SecurityGroupAssociation) ToSecurityGroupAssociationOutput() SecurityGroupAssociationOutput { 156 return i.ToSecurityGroupAssociationOutputWithContext(context.Background()) 157 } 158 159 func (i *SecurityGroupAssociation) ToSecurityGroupAssociationOutputWithContext(ctx context.Context) SecurityGroupAssociationOutput { 160 return pulumi.ToOutputWithContext(ctx, i).(SecurityGroupAssociationOutput) 161 } 162 163 // SecurityGroupAssociationArrayInput is an input type that accepts SecurityGroupAssociationArray and SecurityGroupAssociationArrayOutput values. 164 // You can construct a concrete instance of `SecurityGroupAssociationArrayInput` via: 165 // 166 // SecurityGroupAssociationArray{ SecurityGroupAssociationArgs{...} } 167 type SecurityGroupAssociationArrayInput interface { 168 pulumi.Input 169 170 ToSecurityGroupAssociationArrayOutput() SecurityGroupAssociationArrayOutput 171 ToSecurityGroupAssociationArrayOutputWithContext(context.Context) SecurityGroupAssociationArrayOutput 172 } 173 174 type SecurityGroupAssociationArray []SecurityGroupAssociationInput 175 176 func (SecurityGroupAssociationArray) ElementType() reflect.Type { 177 return reflect.TypeOf((*[]*SecurityGroupAssociation)(nil)).Elem() 178 } 179 180 func (i SecurityGroupAssociationArray) ToSecurityGroupAssociationArrayOutput() SecurityGroupAssociationArrayOutput { 181 return i.ToSecurityGroupAssociationArrayOutputWithContext(context.Background()) 182 } 183 184 func (i SecurityGroupAssociationArray) ToSecurityGroupAssociationArrayOutputWithContext(ctx context.Context) SecurityGroupAssociationArrayOutput { 185 return pulumi.ToOutputWithContext(ctx, i).(SecurityGroupAssociationArrayOutput) 186 } 187 188 // SecurityGroupAssociationMapInput is an input type that accepts SecurityGroupAssociationMap and SecurityGroupAssociationMapOutput values. 189 // You can construct a concrete instance of `SecurityGroupAssociationMapInput` via: 190 // 191 // SecurityGroupAssociationMap{ "key": SecurityGroupAssociationArgs{...} } 192 type SecurityGroupAssociationMapInput interface { 193 pulumi.Input 194 195 ToSecurityGroupAssociationMapOutput() SecurityGroupAssociationMapOutput 196 ToSecurityGroupAssociationMapOutputWithContext(context.Context) SecurityGroupAssociationMapOutput 197 } 198 199 type SecurityGroupAssociationMap map[string]SecurityGroupAssociationInput 200 201 func (SecurityGroupAssociationMap) ElementType() reflect.Type { 202 return reflect.TypeOf((*map[string]*SecurityGroupAssociation)(nil)).Elem() 203 } 204 205 func (i SecurityGroupAssociationMap) ToSecurityGroupAssociationMapOutput() SecurityGroupAssociationMapOutput { 206 return i.ToSecurityGroupAssociationMapOutputWithContext(context.Background()) 207 } 208 209 func (i SecurityGroupAssociationMap) ToSecurityGroupAssociationMapOutputWithContext(ctx context.Context) SecurityGroupAssociationMapOutput { 210 return pulumi.ToOutputWithContext(ctx, i).(SecurityGroupAssociationMapOutput) 211 } 212 213 type SecurityGroupAssociationOutput struct{ *pulumi.OutputState } 214 215 func (SecurityGroupAssociationOutput) ElementType() reflect.Type { 216 return reflect.TypeOf((**SecurityGroupAssociation)(nil)).Elem() 217 } 218 219 func (o SecurityGroupAssociationOutput) ToSecurityGroupAssociationOutput() SecurityGroupAssociationOutput { 220 return o 221 } 222 223 func (o SecurityGroupAssociationOutput) ToSecurityGroupAssociationOutputWithContext(ctx context.Context) SecurityGroupAssociationOutput { 224 return o 225 } 226 227 // Whether this association should replace the association with the VPC's default security group that is created when no security groups are specified during VPC endpoint creation. At most 1 association per-VPC endpoint should be configured with `replaceDefaultAssociation = true`. 228 func (o SecurityGroupAssociationOutput) ReplaceDefaultAssociation() pulumi.BoolPtrOutput { 229 return o.ApplyT(func(v *SecurityGroupAssociation) pulumi.BoolPtrOutput { return v.ReplaceDefaultAssociation }).(pulumi.BoolPtrOutput) 230 } 231 232 // The ID of the security group to be associated with the VPC endpoint. 233 func (o SecurityGroupAssociationOutput) SecurityGroupId() pulumi.StringOutput { 234 return o.ApplyT(func(v *SecurityGroupAssociation) pulumi.StringOutput { return v.SecurityGroupId }).(pulumi.StringOutput) 235 } 236 237 // The ID of the VPC endpoint with which the security group will be associated. 238 func (o SecurityGroupAssociationOutput) VpcEndpointId() pulumi.StringOutput { 239 return o.ApplyT(func(v *SecurityGroupAssociation) pulumi.StringOutput { return v.VpcEndpointId }).(pulumi.StringOutput) 240 } 241 242 type SecurityGroupAssociationArrayOutput struct{ *pulumi.OutputState } 243 244 func (SecurityGroupAssociationArrayOutput) ElementType() reflect.Type { 245 return reflect.TypeOf((*[]*SecurityGroupAssociation)(nil)).Elem() 246 } 247 248 func (o SecurityGroupAssociationArrayOutput) ToSecurityGroupAssociationArrayOutput() SecurityGroupAssociationArrayOutput { 249 return o 250 } 251 252 func (o SecurityGroupAssociationArrayOutput) ToSecurityGroupAssociationArrayOutputWithContext(ctx context.Context) SecurityGroupAssociationArrayOutput { 253 return o 254 } 255 256 func (o SecurityGroupAssociationArrayOutput) Index(i pulumi.IntInput) SecurityGroupAssociationOutput { 257 return pulumi.All(o, i).ApplyT(func(vs []interface{}) *SecurityGroupAssociation { 258 return vs[0].([]*SecurityGroupAssociation)[vs[1].(int)] 259 }).(SecurityGroupAssociationOutput) 260 } 261 262 type SecurityGroupAssociationMapOutput struct{ *pulumi.OutputState } 263 264 func (SecurityGroupAssociationMapOutput) ElementType() reflect.Type { 265 return reflect.TypeOf((*map[string]*SecurityGroupAssociation)(nil)).Elem() 266 } 267 268 func (o SecurityGroupAssociationMapOutput) ToSecurityGroupAssociationMapOutput() SecurityGroupAssociationMapOutput { 269 return o 270 } 271 272 func (o SecurityGroupAssociationMapOutput) ToSecurityGroupAssociationMapOutputWithContext(ctx context.Context) SecurityGroupAssociationMapOutput { 273 return o 274 } 275 276 func (o SecurityGroupAssociationMapOutput) MapIndex(k pulumi.StringInput) SecurityGroupAssociationOutput { 277 return pulumi.All(o, k).ApplyT(func(vs []interface{}) *SecurityGroupAssociation { 278 return vs[0].(map[string]*SecurityGroupAssociation)[vs[1].(string)] 279 }).(SecurityGroupAssociationOutput) 280 } 281 282 func init() { 283 pulumi.RegisterInputType(reflect.TypeOf((*SecurityGroupAssociationInput)(nil)).Elem(), &SecurityGroupAssociation{}) 284 pulumi.RegisterInputType(reflect.TypeOf((*SecurityGroupAssociationArrayInput)(nil)).Elem(), SecurityGroupAssociationArray{}) 285 pulumi.RegisterInputType(reflect.TypeOf((*SecurityGroupAssociationMapInput)(nil)).Elem(), SecurityGroupAssociationMap{}) 286 pulumi.RegisterOutputType(SecurityGroupAssociationOutput{}) 287 pulumi.RegisterOutputType(SecurityGroupAssociationArrayOutput{}) 288 pulumi.RegisterOutputType(SecurityGroupAssociationMapOutput{}) 289 }