Memulihkan versi sebelumnya - Amazon Simple Storage Service

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

Memulihkan versi sebelumnya

Anda dapat menggunakan Penentuan Versi untuk mengambil versi sebelumnya dari objek. Ada dua pendekatan untuk melakukannya:

  • Salin versi objek sebelumnya ke dalam bucket yang sama.

    Objek yang disalin menjadi versi saat ini dari objek tersebut dan semua versi objek dipertahankan.

  • Hapus versi objek saat ini secara permanen.

    Ketika versi objek saat ini dihapus, Anda, akibatnya, mengubah versi sebelumnya menjadi versi saat ini dari objek tersebut.

Karena semua versi objek dipertahankan, Anda dapat membuat versi yang lebih awal dari versi saat ini dengan menyalin versi tertentu dari objek tersebut ke dalam bucket yang sama. Pada gambar berikut, objek sumber (ID = 111111) disalin ke dalam bucket yang sama. Amazon S3 memasok ID baru (88778877) dan menjadi versi objek saat ini. Jadi, bucket memiliki objek versi asli (111111) dan salinannya (88778877). Untuk informasi selengkapnya tentang mendapatkan versi sebelumnya dan kemudian mengunggahnya untuk menjadikannya versi saat ini, lihat Mengambil versi objek dari bucket dengan dukungan Penentuan Versi dan Mengunggah objek.

Ilustrasi yang menunjukkan penyalinan versi tertentu dari suatu objek ke dalam bucket yang sama untuk menjadikannya versi saat ini.

GET berikutnya mengambil versi 88778877.

Gambar berikut menunjukkan bagaimana menghapus versi saat ini (121212) dari suatu objek menjadikan versi sebelumnya (111111) sebagai objek saat ini. Untuk informasi selengkapnya tentang menghapus objek, lihat Menghapus satu objek.

Ilustrasi yang menunjukkan penghapusan versi objek saat ini meninggalkan versi sebelumnya sebagai objek saat ini.

GET berikutnya mengambil versi 111111.

catatan

Untuk mengembalikan versi objek dalam batch, Anda dapat menggunakan operasi CopyObject. Operasi salin dapat menyalin setiap objek yang ditentukan dalam manifes. Namun, ketahuilah bahwa objek tidak selalu disalin dalam urutan yang sama seperti yang tercantum dalam manifes. Untuk bucket berversi, jika mempertahankan urutan versi terkini/nonterkini bersifat penting, Anda harus menyalin semua versi nonterkini terlebih dahulu. Kemudian, setelah pekerjaan pertama selesai, salin versi terbaru pada pekerjaan berikutnya.

Untuk mengembalikan versi objek sebelumnya

  1. Masuk ke AWS Management Console dan buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/

  2. Di dalam daftar Bucket, pilih nama bucket yang berisi objek.

  3. Di daftar Objek, pilih nama objek.

  4. Pilih Versi.

    Amazon S3 menampilkan semua versi untuk objek tersebut.

  5. Pilih kotak centang di sebelah ID Versi untuk versi yang ingin Anda ambil.

  6. Pilih Tindakan, pilih Unduh, dan simpan objek.

Anda juga dapat melihat, mengunduh, dan menghapus versi objek di panel ikhtisar objek. Untuk informasi selengkapnya, lihat Melihat properti objek di konsol Amazon S3.

penting

Anda dapat membatalkan penghapusan objek hanya jika objek tersebut dihapus sebagai versi terbaru (saat ini). Anda tidak dapat membatalkan penghapusan objek versi sebelumnya. Untuk informasi selengkapnya, lihat Mempertahankan beberapa versi objek dengan S3 Versioning.

Untuk informasi tentang menggunakan lainnya AWS SDKs, lihat Pusat AWS Pengembang.

Python

Contoh kode Python berikut memulihkan versi objek berversi sebelumnya dengan menghapus semua versi yang terjadi setelah versi rollback yang ditentukan.

def rollback_object(bucket, object_key, version_id): """ Rolls back an object to an earlier version by deleting all versions that occurred after the specified rollback version. Usage is shown in the usage_demo_single_object function at the end of this module. :param bucket: The bucket that holds the object to roll back. :param object_key: The object to roll back. :param version_id: The version ID to roll back to. """ # Versions must be sorted by last_modified date because delete markers are # at the end of the list even when they are interspersed in time. versions = sorted( bucket.object_versions.filter(Prefix=object_key), key=attrgetter("last_modified"), reverse=True, ) logger.debug( "Got versions:\n%s", "\n".join( [ f"\t{version.version_id}, last modified {version.last_modified}" for version in versions ] ), ) if version_id in [ver.version_id for ver in versions]: print(f"Rolling back to version {version_id}") for version in versions: if version.version_id != version_id: version.delete() print(f"Deleted version {version.version_id}") else: break print(f"Active version is now {bucket.Object(object_key).version_id}") else: raise KeyError( f"{version_id} was not found in the list of versions for " f"{object_key}." )