

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Mengelola penanda hapus
<a name="ManagingDelMarkers"></a>

## Mengonfigurasi siklus hidup untuk membersihkan penanda hapus kedaluwarsa secara otomatis
<a name="LifecycleDelMarker"></a>

Penanda hapus objek yang kedaluwarsa adalah penanda yang semua versi objeknya dihapus dan hanya satu penanda hapus yang tersisa. Jika konfigurasi siklus hidup diatur untuk menghapus versi saat ini, atau tindakan `ExpiredObjectDeleteMarker` diatur secara eksplisit, Amazon S3 menghapus penanda hapus objek yang kedaluwarsa. Sebagai contoh, lihat [Menghapus penanda penghapusan objek yang kedaluwarsa dalam bucket berkemampuan versi](lifecycle-configuration-examples.md#lifecycle-config-conceptual-ex7). 

## Menghapus penanda hapus untuk membuat versi yang lebih lama menjadi versi saat ini
<a name="RemDelMarker"></a>

Saat Anda menghapus sebuah objek dalam bucket dengan dukungan Penentuan Versi, semua versi tetap berada dalam bucket, dan Amazon S3 membuat penanda hapus untuk objek tersebut. Untuk membatalkan penghapusan objek, Anda harus menghapus penanda hapus ini. Untuk informasi selengkapnya tentang Penentuan Versi dan penanda hapus, lihat [Mempertahankan beberapa versi objek dengan Versi S3](Versioning.md).

Untuk menghapus penanda hapus secara permanen, Anda harus menyertakan ID versinya dalam permintaan `DeleteObject versionId`. Gambar berikut menunjukkan cara permintaan `DeleteObject versionId` menghapus penanda hapus secara permanen.

![\[Ilustrasi yang menunjukkan penghapusan penanda hapus menggunakan ID versinya.\]](http://docs.aws.amazon.com/id_id/AmazonS3/latest/userguide/images/versioning_DELETE_deleteMarkerVersioned.png)


Efek dari menghapus penanda hapus adalah bahwa permintaan `GET` sederhana sekarang akan mengambil ID versi objek saat ini (121212). 

**catatan**  
Jika Anda menggunakan permintaan `DeleteObject` yang versinya saat ini adalah penanda hapus (tanpa menentukan ID versi penanda hapus), Amazon S3 tidak akan menghapus penanda hapus, melainkan `PUTs` penanda hapus lainnya.

Untuk menghapus penanda hapus dengan ID versi `NULL`, Anda harus meneruskan `NULL` sebagai ID versi dalam permintaan `DeleteObject`. Gambar berikut menunjukkan bagaimana permintaan `DeleteObject` sederhana dibuat tanpa ID versi yang versinya saat ini adalah penanda hapus, tidak menghapus apa pun, tetapi menambahkan penanda hapus dengan ID versi unik (7498372).

![\[Ilustrasi yang menunjukkan penghapusan penanda hapus menggunakan ID versi NULL.\]](http://docs.aws.amazon.com/id_id/AmazonS3/latest/userguide/images/versioning_DELETE_deleteMarker.png)


## Menggunakan konsol S3
<a name="undelete-objects"></a>

Gunakan langkah-langkah berikut untuk memulihkan objek yang dihapus yang bukan merupakan folder dari bucket S3 Anda, termasuk objek yang ada di dalam folder tersebut. 

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Dari daftar **Bucket**, pilih nama bucket yang Anda inginkan.

1. Untuk melihat daftar **versi** objek di bucket, pilih tombol **Buat daftar versi**. Anda akan dapat melihat penanda hapus untuk objek yang dihapus. 

   

1. Untuk membatalkan penghapusan objek, Anda harus menghapus penanda hapus ini. Centang kotak di samping **penanda hapus** objek yang akan dipulihkan, lalu pilih **Hapus**.

1. Konfirmasi penghapusan pada halaman **Hapus objek**.

   1. Untuk **Hapus objek secara permanen?**, masukkan **permanently delete**.

   1. Pilih **Hapus objek**.

**catatan**  
Anda tidak dapat menggunakan konsol Amazon S3 untuk membatalkan penghapusan folder. Anda harus menggunakan AWS CLI atau SDK. Sebagai contoh, lihat [Bagaimana saya bisa mengambil objek Amazon S3 yang telah dihapus di bucket dengan dukungan Penentuan Versi?](https://aws.amazon.com/premiumsupport/knowledge-center/s3-undelete-configuration/) di Pusat Pengetahuan AWS .

## Penggunaan API REST
<a name="delete-marker-rest-api"></a>

**Untuk menghapus penanda hapus secara permanen**

1. Tetapkan `versionId` ke ID versi ke penanda hapus yang ingin Anda hapus.

1. Kirim permintaan `DELETE Object versionId`.

**Example — Menghapus penanda hapus**  
Contoh berikut menghapus penanda hapus untuk versi `photo.gif` 4857693.  

```
1. DELETE /photo.gif?versionId=4857693 HTTP/1.1
2. Host: bucket.s3.amazonaws.com
3. Date: Wed, 28 Oct 2009 22:32:00 GMT
4. Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=
```

Saat Anda menghapus penanda hapus, Amazon S3 menyertakan berikut ini di dalam respons.

```
1. 204 NoContent 
2. x-amz-version-id: versionID 
3. x-amz-delete-marker: true
```

## Menggunakan AWS SDKs
<a name="remove-delete-marker-examples-sdk"></a>

Untuk informasi tentang menggunakan yang lain AWS SDKs, lihat [Pusat AWS Pengembang](https://aws.amazon.com/code/).

------
#### [ Python ]

Contoh kode Python berikut menunjukkan cara menghapus penanda hapus dari suatu objek dan dengan demikian menjadikan versi bukan saat ini yang terkini, versi objek saat ini.

```
def revive_object(bucket, object_key):
    """
    Revives a versioned object that was deleted by removing the object's active
    delete marker.
    A versioned object presents as deleted when its latest version is a delete marker.
    By removing the delete marker, we make the previous version the latest version
    and the object then presents as *not* deleted.

    Usage is shown in the usage_demo_single_object function at the end of this module.

    :param bucket: The bucket that contains the object.
    :param object_key: The object to revive.
    """
    # Get the latest version for the object.
    response = s3.meta.client.list_object_versions(
        Bucket=bucket.name, Prefix=object_key, MaxKeys=1
    )

    if "DeleteMarkers" in response:
        latest_version = response["DeleteMarkers"][0]
        if latest_version["IsLatest"]:
            logger.info(
                "Object %s was indeed deleted on %s. Let's revive it.",
                object_key,
                latest_version["LastModified"],
            )
            obj = bucket.Object(object_key)
            obj.Version(latest_version["VersionId"]).delete()
            logger.info(
                "Revived %s, active version is now %s  with body '%s'",
                object_key,
                obj.version_id,
                obj.get()["Body"].read(),
            )
        else:
            logger.warning(
                "Delete marker is not the latest version for %s!", object_key
            )
    elif "Versions" in response:
        logger.warning("Got an active version for %s, nothing to do.", object_key)
    else:
        logger.error("Couldn't get any version info for %s.", object_key)
```

------