diff --git a/.changelog/39748.txt b/.changelog/39748.txt new file mode 100644 index 000000000000..1f886c3f8c45 --- /dev/null +++ b/.changelog/39748.txt @@ -0,0 +1,15 @@ +```release-note:bug +resource/aws_subnet: Fix resource leaking bug +``` + +```release-note:bug +resource/aws_ec2_subnet_cidr_reservation: Fix resource leaking bug +``` + +```release-note:bug +resource/aws_security_group_rule: Fix resource leaking bug +``` + +```release-note:BUG +resource/aws_network_acl_rule: Fix resource leaking bug +``` diff --git a/internal/service/ec2/vpc_network_acl_rule.go b/internal/service/ec2/vpc_network_acl_rule.go index 5d2f27330145..b72c31ab994e 100644 --- a/internal/service/ec2/vpc_network_acl_rule.go +++ b/internal/service/ec2/vpc_network_acl_rule.go @@ -178,12 +178,12 @@ func resourceNetworkACLRuleCreate(ctx context.Context, d *schema.ResourceData, m log.Printf("[DEBUG] Creating EC2 Network ACL Rule: %#v", input) _, err = conn.CreateNetworkAclEntry(ctx, input) + d.SetId(networkACLRuleCreateResourceID(naclID, ruleNumber, egress, protocol)) + if err != nil { return sdkdiag.AppendErrorf(diags, "creating EC2 Network ACL (%s) Rule (egress: %t)(%d): %s", naclID, egress, ruleNumber, err) } - d.SetId(networkACLRuleCreateResourceID(naclID, ruleNumber, egress, protocol)) - return append(diags, resourceNetworkACLRuleRead(ctx, d, meta)...) } diff --git a/internal/service/ec2/vpc_security_group_rule.go b/internal/service/ec2/vpc_security_group_rule.go index 54f4ed20fa8b..b66b5aa2c04a 100644 --- a/internal/service/ec2/vpc_security_group_rule.go +++ b/internal/service/ec2/vpc_security_group_rule.go @@ -174,6 +174,8 @@ func resourceSecurityGroupRuleCreate(ctx context.Context, d *schema.ResourceData ruleType := securityGroupRuleType(d.Get(names.AttrType).(string)) id := securityGroupRuleCreateID(securityGroupID, string(ruleType), &ipPermission) + d.SetId(id) + switch ruleType { case securityGroupRuleTypeIngress: input := &ec2.AuthorizeSecurityGroupIngressInput{ @@ -250,8 +252,6 @@ information and instructions for recovery. Error: %s`, securityGroupID, err) return sdkdiag.AppendErrorf(diags, "waiting for Security Group (%s) Rule (%s) create: %s", securityGroupID, id, err) } - d.SetId(id) - return diags } diff --git a/internal/service/ec2/vpc_subnet.go b/internal/service/ec2/vpc_subnet.go index 73fc37772df3..87743f6b426e 100644 --- a/internal/service/ec2/vpc_subnet.go +++ b/internal/service/ec2/vpc_subnet.go @@ -196,12 +196,12 @@ func resourceSubnetCreate(ctx context.Context, d *schema.ResourceData, meta inte output, err := conn.CreateSubnet(ctx, input) + d.SetId(aws.ToString(output.Subnet.SubnetId)) + if err != nil { return sdkdiag.AppendErrorf(diags, "creating EC2 Subnet: %s", err) } - d.SetId(aws.ToString(output.Subnet.SubnetId)) - subnet, err := waitSubnetAvailable(ctx, conn, d.Id(), d.Timeout(schema.TimeoutCreate)) if err != nil { diff --git a/internal/service/ec2/vpc_subnet_cidr_reservation.go b/internal/service/ec2/vpc_subnet_cidr_reservation.go index a3156e95f1b8..506310259ede 100644 --- a/internal/service/ec2/vpc_subnet_cidr_reservation.go +++ b/internal/service/ec2/vpc_subnet_cidr_reservation.go @@ -93,12 +93,12 @@ func resourceSubnetCIDRReservationCreate(ctx context.Context, d *schema.Resource log.Printf("[DEBUG] Creating EC2 Subnet CIDR Reservation: %s", aws.ToString(input.SubnetId)) output, err := conn.CreateSubnetCidrReservation(ctx, input) + d.SetId(aws.ToString(output.SubnetCidrReservation.SubnetCidrReservationId)) + if err != nil { return sdkdiag.AppendErrorf(diags, "creating EC2 Subnet CIDR Reservation: %s", err) } - d.SetId(aws.ToString(output.SubnetCidrReservation.SubnetCidrReservationId)) - return append(diags, resourceSubnetCIDRReservationRead(ctx, d, meta)...) }