diff --git a/s3/public.go b/s3/public.go index bb97f3251..e8f5e4941 100644 --- a/s3/public.go +++ b/s3/public.go @@ -183,12 +183,12 @@ func (storage *PublishedStorage) putFile(path string, source io.ReadSeeker) erro func (storage *PublishedStorage) Remove(path string) error { params := &s3.DeleteObjectInput{ Bucket: aws.String(storage.bucket), - Key: aws.String(path), + Key: aws.String(filepath.Join(storage.prefix,path)), } _, err := storage.s3.DeleteObject(params) if err != nil { return errors.Wrap(err, fmt.Sprintf("error deleting %s from %s", path, storage)) - } + } if storage.plusWorkaround && strings.Contains(path, "+") { // try to remove workaround version, but don't care about result diff --git a/s3/public_test.go b/s3/public_test.go index 354c66683..7339ac4ad 100644 --- a/s3/public_test.go +++ b/s3/public_test.go @@ -160,6 +160,13 @@ func (s *PublishedStorageSuite) TestRemove(c *C) { c.Check(err, IsNil) s.AssertNoFile(c, "a/b") + + s.PutFile(c, "lala/xyz", []byte("test")) + + errp := s.prefixedStorage.Remove("xyz") + c.Check(errp, IsNil) + + s.AssertNoFile(c, "lala/xyz") } func (s *PublishedStorageSuite) TestRemovePlusWorkaround(c *C) {