diff --git a/.changelog/40082.txt b/.changelog/40082.txt new file mode 100644 index 000000000000..dceb71dd7f00 --- /dev/null +++ b/.changelog/40082.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_eip: Properly surface errors during deletion when `ipam_pool_id` is set +``` diff --git a/internal/service/ec2/ec2_eip.go b/internal/service/ec2/ec2_eip.go index 69df5eeec912..4959f60ae7b3 100644 --- a/internal/service/ec2/ec2_eip.go +++ b/internal/service/ec2/ec2_eip.go @@ -340,6 +340,14 @@ func resourceEIPDelete(ctx context.Context, d *schema.ResourceData, meta interfa log.Printf("[INFO] Deleting EC2 EIP: %s", d.Id()) _, err := conn.ReleaseAddress(ctx, input) + if tfawserr.ErrCodeEquals(err, errCodeInvalidAllocationIDNotFound) { + return diags + } + + if err != nil { + return sdkdiag.AppendErrorf(diags, "deleting EC2 EIP (%s): %s", d.Id(), err) + } + // If the EIP's CIDR block was allocated from an IPAM pool, wait for the allocation to disappear. if v, ok := d.GetOk("ipam_pool_id"); ok { ipamPoolID := v.(string) @@ -355,14 +363,6 @@ func resourceEIPDelete(ctx context.Context, d *schema.ResourceData, meta interfa } } - if tfawserr.ErrCodeEquals(err, errCodeInvalidAllocationIDNotFound) { - return diags - } - - if err != nil { - return sdkdiag.AppendErrorf(diags, "deleting EC2 EIP (%s): %s", d.Id(), err) - } - return diags }