Simpan dan pulihkan AMI menggunakan S3 - Amazon Elastic Compute Cloud

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

Simpan dan pulihkan AMI menggunakan S3

Anda dapat menyimpan Amazon Machine Image (AMI) dalam bucket Amazon S3, menyalin AMI ke bucket S3 lain, lalu memulihkannya dari bucket S3. Dengan menyimpan dan memulihkan AMI menggunakan bucket S3, Anda dapat menyalin AMI dari satu partisi AWS ke partisi yang lain, misalnya, dari partisi komersial utama ke partisi AWS GovCloud (US). Anda juga dapat membuat salinan arsip AMI dengan menyimpannya dalam bucket S3.

API yang didukung untuk menyimpan dan memulihkan AMI menggunakan S3 adalah CreateStoreImageTask, DescribeStoreImageTasks, dan CreateRestoreImageTask.

CopyImage adalah API yang direkomendasikan untuk digunakan dalam menyalin AMI dalam sebuah partisi AWS. Namun, CopyImage tidak dapat menyalin AMI ke partisi lain.

Untuk informasi tentang AWS partisi, lihat partisi di halaman Amazon Resource Names (ARN) di Panduan Pengguna IAM.

Awas

Pastikan bahwa Anda mematuhi semua hukum dan persyaratan bisnis yang berlaku saat memindahkan data antara partisi AWS atau Wilayah AWS, termasuk, namun tidak terbatas pada, peraturan pemerintah yang berlaku dan persyaratan residensi data.

Kasus penggunaan

Gunakan penyimpanan dan pemulihan API untuk melakukan hal berikut:

Menyalin AMI dari satu partisi AWS ke partisi AWS lain

Dengan menyimpan dan memulihkan AMI menggunakan bucket S3, Anda dapat menyalin AMI dari satu partisi AWS ke partisi yang lain, atau dari satu Wilayah AWS ke Wilayah yang lain. Dalam contoh berikut, Anda menyalin AMI dari partisi komersial utama untuk partisi AWS GovCloud (US), khususnya dari Wilayah us-east-2 ke Wilayah us-gov-east-1.

Untuk menyalin AMI dari satu partisi ke partisi lain, ikuti langkah berikut:

  • Menyimpan AMI dalam bucket S3 di Wilayah saat ini dengan menggunakan CreateStoreImageTask. Dalam contoh ini, bucket S3 terletak di us-east-2. Untuk contoh perintah, lihat Menyimpan AMI dalam bucket S3.

  • Pantau kemajuan tugas penyimpanan dengan menggunakan DescribeStoreImageTasks. Objek akan terlihat dalam bucket S3 ketika tugas selesai. Untuk contoh perintah, lihat Menggambarkan kemajuan tugas penyimpanan AMI.

  • Salin objek AMI yang tersimpan ke bucket S3 di partisi target menggunakan prosedur pilihan Anda. Dalam contoh ini, bucket S3 terletak di us-gov-east-1.

    catatan

    Karena Anda perlu kredensial AWS yang berbeda untuk setiap partisi, Anda tidak dapat menyalin objek S3 secara langsung dari satu partisi ke partisi lainnya. Proses untuk menyalin objek S3 di seluruh partisi berada di luar lingkup dokumentasi ini. Kami menyediakan proses penyalinan berikut sebagai contoh, namun Anda harus menggunakan proses penyalinan yang memenuhi persyaratan keamanan Anda.

    • Untuk menyalin satu AMI antar partisi, proses penyalinan dapat sesederhana berikut ini: Unduh objek dari bucket sumber ke host perantara (misalnya, instans EC2 atau laptop), lalu unggah objek tersebut dari host perantara ke bucket target. Untuk setiap tahapan proses, gunakan kredensial AWS untuk partisi.

    • Untuk penggunaan yang lebih berkelanjutan, pertimbangkan untuk mengembangkan aplikasi yang mengelola salinan, yang berpotensi menggunakan unduhan dan unggahan multipart S3.

  • Pulihkan AMI dari S3 bucket di partisi target dengan menggunakan CreateRestoreImageTask. Dalam contoh ini, bucket S3 terletak di us-gov-east-1. Untuk contoh perintah, lihat Memulihkan AMI dari bucket S3.

  • Pantau kemajuan tugas pemulihan dengan menggambarkan AMI untuk memeriksa kapan status menjadi tersedia. Anda juga dapat memantau persentase kemajuan dari snapshot yang membentuk AMI yang dipulihkan dengan menggambarkan snapshot.

Buat salinan arsip AMI

Anda dapat membuat salinan arsip AMI dengan menyimpannya dalam bucket S3. Untuk contoh perintah, lihat Menyimpan AMI dalam bucket S3.

AMI dikemas ke dalam satu objek di S3, dan semua metadata AMI (tidak termasuk berbagi informasi) dipertahankan sebagai bagian dari AMI yang disimpan. Data AMI dikompresi sebagai bagian dari proses penyimpanan. AMI yang berisi data yang mudah dikompresi akan menghasilkan objek yang lebih kecil di S3. Untuk mengurangi biaya, Anda dapat menggunakan kelas penyimpanan S3 yang lebih murah. Untuk informasi selengkapnya, lihat Kelas Penyimpanan Amazon S3 dan Harga Amazon S3

Cara kerja API penyimpanan dan pemulihan AMI

Untuk menyimpan dan memulihkan AMI menggunakan S3, Anda menggunakan API berikut:

  • CreateStoreImageTask – Menyimpan AMI dalam bucket S3

  • DescribeStoreImageTasks – Menyediakan kemajuan tugas penyimpanan AMI

  • CreateRestoreImageTask – Memulihkan AMI dari bucket S3

CreateStoreImageTask

CreateStoreImageTaskAPI menyimpan AMI sebagai objek tunggal dalam bucket S3.

API menciptakan tugas yang membaca semua data dari AMI dan snapshot-nya, lalu menggunakan Unggahan multipart S3 untuk menyimpan data dalam objek S3. API mengambil semua komponen AMI, termasuk sebagian besar metadata AMI non-spesifik Wilayah, dan semua snapshot EBS yang terkandung dalam AMI, dan mengemasnya ke dalam satu objek di S3. Data dikompresi sebagai bagian dari proses unggahan untuk mengurangi jumlah ruang yang digunakan di S3, sehingga objek di S3 mungkin lebih kecil dari jumlah ukuran snapshot di AMI.

Jika terlihat ada tag AMI dan snapshot ke akun yang memanggil API ini, tag tersebut dipertahankan.

Objek di S3 memiliki ID yang sama dengan AMI, tetapi dengan ekstensi .bin. Data berikut ini juga disimpan sebagai tag metadata S3 pada objek S3: nama AMI, deskripsi AMI, tanggal pendaftaran AMI, akun pemilik AMI, dan stempel waktu untuk operasi penyimpanan.

Waktu yang diperlukan untuk menyelesaikan tugas tergantung pada ukuran AMI. Hal ini juga bergantung pada berapa banyak tugas lain yang berlangsung karena tugas diantrekan. Anda dapat melacak kemajuan tugas dengan memanggil DescribeStoreImageTasksAPI.

Jumlah ukuran semua AMI yang sedang berlangsung dibatasi hingga 600 GB data snapshot EBS per akun. Penciptaan tugas lebih lanjut akan ditolak sampai tugas yang sedang berlangsung kurang dari batasan tersebut. Sebagai contoh, jika AMI dengan 100 GB data snapshot dan AMI lain dengan 200 GB data snapshot saat ini sedang disimpan, maka permintaan lain akan diterima, karena total yang sedang berlangsung adalah 300 GB, kurang dari batas. Tetapi jika sebuah AMI dengan 800 GB data snapshot saat ini sedang disimpan, maka tugas-tugas selanjutnya akan ditolak sampai tugas penyimpanan AMI selesai.

DescribeStoreImageTasks

DescribeStoreImageTasksAPI menjelaskan kemajuan tugas penyimpanan AMI. Anda dapat menggambarkan tugas untuk AMI tertentu. Jika Anda tidak menentukan AMI, Anda akan mendapatkan daftar paginasi dari semua tugas penyimpanan gambar yang telah diproses dalam 31 hari terakhir.

Untuk setiap tugas AMI, respons menunjukkan jika tugas tersebut adalah InProgress, Completed, atau Failed. Untuk tugas InProgress, respons menunjukkan perkiraan kemajuan sebagai persentase.

Tugas tercantum dalam urutan kronologis terbalik.

Saat ini, hanya tugas dari bulan sebelumnya yang dapat dilihat.

CreateRestoreImageTask

CreateRestoreImageTaskAPI memulai tugas yang mengembalikan AMI dari objek S3 yang sebelumnya dibuat dengan menggunakan permintaan. CreateStoreImageTask

Tugas pemulihan dapat dilakukan di Wilayah yang sama atau berbeda dari tempat tugas penyimpanan dilakukan.

Bucket S3 tempat objek AMI akan dipulihkan harus berada di Wilayah yang sama dengan tempat tugas pemulihan diminta. AMI akan dipulihkan di Wilayah ini.

AMI dipulihkan dengan metadata-nya, seperti nama, deskripsi, dan pemetaan perangkat blok yang sesuai dengan nilai-nilai AMI yang tersimpan. Nama harus unik untuk AMI di Wilayah untuk akun ini. Jika Anda tidak memberikan nama, AMI yang baru akan mendapat nama yang sama dengan AMI asal. AMI akan mendapat ID AMI baru yang dihasilkan pada saat proses pemulihan.

Waktu yang diperlukan untuk menyelesaikan tugas pemulihan AMI bergantung pada ukuran AMI. Hal ini juga bergantung pada berapa banyak tugas lain yang berlangsung karena tugas diantrekan. Anda dapat melihat kemajuan tugas dengan menggambarkan AMI (describe-images) atau snapshot EBS-nya (describe-snapshot). Jika tugas gagal, AMI dan snapshot akan dipindahkan ke status gagal.

Jumlah ukuran semua AMI berlangsung dibatasi sampai 300 GB (berdasarkan ukuran setelah pemulihan) data snapsbot EBS per akun. Penciptaan tugas lebih lanjut akan ditolak sampai tugas yang sedang berlangsung kurang dari batasan tersebut.

Batasan

  • Untuk menyimpan AMI, Akun AWS Anda harus memiliki AMI dan snapshot-nya, atau AMI dan snapshot-nya harus dibagikan langsung dengan akun Anda. Anda tidak dapat menyimpan AMI jika AMI tersebut hanya dibagikan secara publik.

  • Hanya AMI yang didukung EBS yang dapat disimpan menggunakan API ini.

  • AMI Paravirtual (PV) tidak didukung.

  • Ukuran AMI (sebelum kompresi) yang dapat disimpan dibatasi hingga 5.000 GB.

  • Kuota pada permintaan simpan gambar: 600 GB penyimpanan (data snapshot) yang berlangsung.

  • Kuota pada permintaan pulihkan gambar: 300 GB pemulihan (data snapshot) yang berlangsung.

  • Untuk durasi tugas penyimpanan, snapshot tidak boleh dihapus dan pengguna utama IAM yang melakukan penyimpanan harus memiliki akses ke snapshot, jika tidak maka proses penyimpanan akan gagal.

  • Anda tidak dapat membuat beberapa salinan AMI dalam bucket S3 yang sama.

  • AMI yang disimpan dalam bucket S3 tidak dapat dipulihkan dengan ID AMI asalnya. Anda dapat memitigasi hal ini dengan menggunakan alias AMI.

  • Saat ini API penyimpanan dan pemulihan hanya didukung dengan menggunakan AWS Command Line Interface, AWS SDK, dan API Amazon EC2. Anda tidak dapat menyimpan dan memulihkan AMI menggunakan konsol Amazon EC2.

Biaya

Ketika Anda menyimpan dan memulihkan AMI menggunakan S3, Anda akan dikenai biaya untuk layanan yang digunakan oleh API penyimpanan dan pemulihan, dan untuk transfer data. API menggunakan S3 dan API EBS Direct (digunakan secara internal oleh API ini untuk mengakses data snapshot). Untuk informasi selengkapnya, lihat harga Amazon S3 dan harga Amazon EBS.

Mengamankan AMI Anda

Untuk menggunakan API penyimpanan dan pemulihan, bucket S3 dan AMI harus berada di Wilayah yang sama. Penting untuk memastikan bahwa bucket S3 dikonfigurasi dengan keamanan yang cukup untuk mengamankan konten AMI dan bahwa keamanan dipertahankan selama objek AMI berada di dalam bucket. Jika ini tidak dapat dilakukan, penggunaan API ini tidak dianjurkan. Pastikan bahwa akses publik ke bucket S3 tidak diperbolehkan. Kami menyarankan untuk mengaktifkan Enkripsi Sisi Server untuk bucket S3 tempat Anda menyimpan AMI, meskipun tidak wajib.

Untuk informasi tentang cara mengatur pengaturan keamanan yang sesuai untuk bucket S3 Anda, tinjau topik keamanan berikut:

Ketika snapshot AMI disalin ke objek S3, data kemudian disalin melalui koneksi TLS. Anda dapat menyimpan AMI dengan snapshot terenkripsi, tetapi snapshot didekripsi sebagai bagian dari proses penyimpanan.

Izin untuk menyimpan dan memulihkan AMI menggunakan S3

Jika pengguna utama IAM Anda akan menyimpan atau memulihkan AMI menggunakan Amazon S3, Anda harus memberi mereka izin yang diperlukan.

Contoh kebijakan berikut ini mencakup semua tindakan yang diperlukan untuk memungkinkan pengguna utama IAM melaksanakan tugas penyimpanan dan pemulihan.

Anda juga dapat membuat kebijakan IAM yang memberikan akses kepada pengguna utama hanya ke sumber daya tertentu. Untuk contoh kebijakan lainnya, lihat Manajemen akses untuk sumber daya AWS dalam Panduan Pengguna IAM.

catatan

Jika snapshot yang membentuk AMI dienkripsi, atau jika akun Anda diaktifkan untuk enkripsi secara default, pengguna utama IAM Anda harus memiliki izin untuk menggunakan kunci KMS. Untuk informasi selengkapnya, lihat Izin untuk menggunakan AWS KMS keys.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:DeleteObject", "s3:GetObject", "s3:ListBucket", "s3:PutObject", "s3:PutObjectTagging", "s3:AbortMultipartUpload", "ebs:CompleteSnapshot", "ebs:GetSnapshotBlock", "ebs:ListChangedBlocks", "ebs:ListSnapshotBlocks", "ebs:PutSnapshotBlock", "ebs:StartSnapshot", "ec2:CreateStoreImageTask", "ec2:DescribeStoreImageTasks", "ec2:CreateRestoreImageTask", "ec2:GetEbsEncryptionByDefault", "ec2:DescribeTags", "ec2:CreateTags" ], "Resource": "*" } ] }

Bekerja dengan API penyimpanan dan AMI

Menyimpan AMI dalam bucket S3

Untuk menyimpan AMI (AWS CLI)

Gunakan perintah create-store-image-task. Tentukan ID AMI dan nama bucket S3 untuk menyimpan AMI.

aws ec2 create-store-image-task \ --image-id ami-1234567890abcdef0 \ --bucket myamibucket

Output yang diharapkan

{ "ObjectKey": "ami-1234567890abcdef0.bin" }

Menggambarkan kemajuan tugas penyimpanan AMI

Untuk menggambarkan kemajuan tugas penyimpanan AMI (AWS CLI)

Gunakan perintah describe-store-image-tasks.

aws ec2 describe-store-image-tasks

Output yang diharapkan

{ "AmiId": "ami-1234567890abcdef0", "Bucket": "myamibucket", "ProgressPercentage": 17, "S3ObjectKey": "ami-1234567890abcdef0.bin", "StoreTaskState": "InProgress", "StoreTaskFailureReason": null, "TaskStartTime": "2021-01-01T01:01:01.001Z" }

Memulihkan AMI dari bucket S3

Untuk memulihkan AMI (AWS CLI)

Gunakan perintah create-restore-image-task. Menggunakan nilai untuk S3ObjectKey dan Bucket dari output describe-store-image-tasks, tentukan kunci objek AMI dan nama bucket S3 tempat AMI disalin. Tentukan juga nama untuk AMI yang dipulihkan. Nama harus unik untuk AMI di Wilayah untuk akun ini.

catatan

AMI yang dipulihkan akan mendapat ID AMI baru.

aws ec2 create-restore-image-task \ --object-key ami-1234567890abcdef0.bin \ --bucket myamibucket \ --name "New AMI Name"

Output yang diharapkan

{ "ImageId": "ami-0eab20fe36f83e1a8" }

Menggunakan jalur file di S3

Anda dapat menggunakan jalur file saat menyimpan dan memulihkan AMI, dengan cara berikut:

  • Saat menyimpan AMI di S3, jalur file dapat ditambahkan ke nama bucket. Secara internal, sistem memisahkan jalur dari nama bucket, lalu menambahkan jalur ke kunci objek yang dibuat untuk menyimpan AMI. Jalur objek lengkap ditampilkan dalam respons dari panggilan API.

  • Saat memulihkan AMI, karena parameter kunci objek tersedia, jalur dapat ditambahkan ke awal nilai kunci objek.

Anda dapat menggunakan jalur file saat menggunakan AWS CLI dan SDK.

Contoh: Gunakan jalur file saat menyimpan dan memulihkan AMI (AWS CLI)

Contoh berikut ini pertama-tama menyimpan AMI di S3, dengan jalur file ditambahkan ke nama bucket. Contoh ini kemudian memulihkan AMI dari S3, dengan jalur file ditambahkan ke parameter kunci objek.

  1. Menyimpan AMI. Untuk --bucket, tentukan jalur file setelah nama bucket, sebagai berikut:

    aws ec2 create-store-image-task \ --image-id ami-1234567890abcdef0 \ --bucket myamibucket/path1/path2

    Output yang diharapkan

    { "ObjectKey": "path1/path2/ami-1234567890abcdef0.bin" }
  2. Memulihkan AMI. Untuk --object-key, tentukan nilai dari output pada langkah sebelumnya, yang mencakup jalur file.

    aws ec2 create-restore-image-task \ --object-key path1/path2/ami-1234567890abcdef0.bin \ --bucket myamibucket \ --name "New AMI Name"