admin 0647b62048
All checks were successful
continuous-integration/drone/push Build is passing
v0.0.26
2025-08-28 13:59:48 +03:00

54 lines
1.2 KiB
Go

package S3
import (
"fmt"
"strings"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3"
)
func DeleteFromS3(imageURL string) error {
const op = "s3.DeleteFromS3"
parts := strings.SplitN(strings.TrimPrefix(imageURL, "https://s3.regru.cloud/"), "/", 2)
if len(parts) != 2 {
return fmt.Errorf("%s: invalid S3 URL format", op)
}
bucket := parts[0]
key := parts[1]
sess := session.Must(session.NewSession(&aws.Config{
Region: aws.String("ru-central1"),
Endpoint: aws.String("https://s3.regru.cloud"),
S3ForcePathStyle: aws.Bool(true),
Credentials: credentials.NewStaticCredentials(
"TJ946G2S1Z5FEI3I7DQQ",
"C2H2aITHRDpek8H921yhnrINZwDoADsjW3F6HURl",
"",
),
}))
svc := s3.New(sess)
_, err := svc.DeleteObject(&s3.DeleteObjectInput{
Bucket: aws.String(bucket),
Key: aws.String(key),
})
if err != nil {
return fmt.Errorf("%s: failed to delete object from S3: %w", op, err)
}
err = svc.WaitUntilObjectNotExists(&s3.HeadObjectInput{
Bucket: aws.String(bucket),
Key: aws.String(key),
})
if err != nil {
return fmt.Errorf("%s: failed to wait for object deletion: %w", op, err)
}
return nil
}