Last chance! 50% off DataCamp Premium
Sale ends in
Menyalin file ke penyimpanan AWS secara manual bisa melelahkan, rentan kesalahan, dan tidak efisien—terutama saat menangani data dalam jumlah besar. Anda tentu tidak menginginkannya.
AWS Command Line Interface (CLI) menyediakan alat praktis bernama aws s3 cp yang menyederhanakan proses ini. Perintah ini memungkinkan Anda menyalin file ke dan dari bucket Amazon S3 dengan perintah sederhana yang dapat diskrip dan berjalan di semua sistem operasi. Menggunakan AWS CLI tidak hanya menghemat waktu, tetapi juga memungkinkan otomatisasi tugas transfer file rutin.
Perintah aws s3 cp menawarkan banyak opsi untuk menangani skenario transfer file yang kompleks. Anda dapat menyalin file individual, mentransfer seluruh direktori secara rekursif, memfilter file berdasarkan pola, dan bahkan menentukan kelas penyimpanan berbeda untuk optimisasi biaya.
Dalam tutorial ini, saya akan memandu Anda melalui semua hal yang perlu diketahui untuk menggunakan aws s3 cp secara efektif, mulai dari perintah dasar hingga teknik lanjutan dan strategi otomatisasi.
> Baru di AWS dan belum yakin tentang penyimpanan cloud dan S3? Panduan kami yang terperinci tentang S3 dan EFS adalah tempat yang tepat untuk memulai. Jika Anda tertarik khusus pada S3, lihat panduan S3 mendalam kami.
Perintah aws s3 cp adalah utilitas dalam AWS Command Line Interface yang memungkinkan Anda menyalin file antara sistem lokal dan penyimpanan Amazon S3.
Intinya, perintah ini dirancang untuk memberikan pengalaman baris perintah yang familier seperti perintah Linux standar cp, tetapi disesuaikan untuk berinteraksi dengan bucket S3.
Pada dasarnya, aws s3 cp menghubungkan mesin lokal Anda dan infrastruktur penyimpanan cloud AWS. Saat Anda menjalankan perintah aws s3 cp, AWS CLI menangani autentikasi dan pembagian berkas (chunking) untuk transfer besar dan memastikan integritas data selama proses penyalinan. Utilitas ini mendukung penyalinan file individual, banyak file menggunakan wildcard, dan seluruh struktur direktori dengan operasi rekursif.
aws s3 cp mampu melakukan banyak hal, berikut beberapa di antaranya:
Namun, kekuatan aws s3 cp terletak pada fleksibilitas dan integrasinya dengan ekosistem AWS. Anda dapat menentukan parameter berbeda untuk mengontrol aspek seperti kelas penyimpanan, enkripsi, metadata, kontrol akses, dan lainnya. Ini membuatnya cocok untuk segala hal, dari transfer file sederhana sekali jalan hingga solusi pencadangan otomatis yang kompleks.
Perintah ini berbeda dengan menggunakan AWS Management Console, yang memerlukan navigasi dan klik manual. Perintah aws s3 cp dapat dijalankan langsung dari terminal Anda atau digabungkan ke dalam skrip dan alur kerja otomatis. Akses terprogram ke S3 ini sangat penting bagi banyak profesional teknologi, terutama engineer DevOps dan data scientist.
Sebagai penutup, aws s3 cp menyediakan solusi andal yang dapat diskrip dan mampu menangani transfer besar sambil menjaga kinerja. Perintah ini dapat melanjutkan unggahan dan unduhan yang terputus, yang sangat berguna saat menghadapi koneksi jaringan tidak stabil atau mentransfer file berukuran sangat besar.
Berikutnya, saya akan memandu Anda melalui hal-hal mendasar yang membosankan—menyiapkan AWS CLI di sistem Anda.
Sebelum menyelami perintah aws s3 cp, Anda perlu menginstal dan mengonfigurasi AWS CLI dengan benar di sistem Anda. Jangan khawatir jika Anda belum pernah bekerja dengan AWS sebelumnya—proses penyiapannya mudah dan seharusnya memakan waktu kurang dari 10 menit.
Saya akan membaginya menjadi tiga tahap sederhana: memasang alat AWS CLI, mengonfigurasi kredensial Anda, dan membuat bucket S3 pertama untuk penyimpanan.
Proses instalasi sedikit berbeda tergantung sistem operasi yang Anda gunakan.
Untuk sistem Windows:
Untuk sistem Linux:
Jalankan tiga perintah berikut melalui Terminal:
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
Untuk sistem macOS:
Dengan asumsi Anda telah memasang Homebrew, jalankan satu baris berikut dari Terminal:
brew install awscli
Jika Anda tidak memiliki Homebrew, gunakan dua perintah ini sebagai gantinya:
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /
Untuk memastikan instalasi berhasil, jalankan aws --version di terminal Anda. Anda akan melihat sesuatu seperti ini:

Gambar 1 - Versi AWS CLI
Setelah CLI terpasang, saatnya menyiapkan kredensial AWS Anda untuk autentikasi.
Pertama, akses akun AWS Anda dan buka dasbor layanan IAM. Buat pengguna baru dengan akses terprogram dan lampirkan kebijakan perizinan S3 yang sesuai:

Gambar 2 - Pengguna AWS IAM
Selanjutnya, kunjungi tab "Security credentials" dan buat pasangan kunci akses baru. Pastikan untuk menyimpan Access key ID dan Secret access key di tempat yang aman—Amazon tidak akan menampilkan secret key lagi setelah layar ini:

Gambar 3 - Kredensial pengguna AWS IAM
Sekarang buka terminal Anda dan jalankan perintah aws configure. Anda akan diminta empat informasi: Access key ID, Secret access key, region bawaan (saya menggunakan eu-central-1), dan format keluaran pilihan (biasanya json):

Gambar 4 - Konfigurasi AWS CLI
Untuk memastikan semuanya terhubung dengan benar, verifikasi identitas Anda dengan perintah berikut:
aws sts get-caller-identity
Jika dikonfigurasi dengan benar, Anda akan melihat detail akun Anda:

Gambar 5 - Perintah uji koneksi AWS CLI
Terakhir, Anda perlu membuat bucket S3 untuk menyimpan file yang akan Anda salin.
Buka bagian layanan S3 di AWS Console Anda dan klik "Create bucket". Ingatlah bahwa nama bucket harus unik secara global di seluruh AWS. Pilih nama yang khas, biarkan pengaturan bawaan untuk saat ini, lalu klik "Create":

Gambar 6 - Pembuatan bucket AWS
Setelah dibuat, bucket baru Anda akan muncul di konsol. Anda juga dapat mengonfirmasi keberadaannya melalui baris perintah:
aws s3 ls

Gambar 7 - Semua bucket S3 yang tersedia
Semua bucket S3 dikonfigurasi sebagai privat secara default, jadi ingatlah hal ini. Jika Anda bermaksud menggunakan bucket ini untuk file yang dapat diakses publik, Anda perlu mengubah kebijakan bucket sesuai kebutuhan.
Sekarang Anda siap sepenuhnya untuk mulai menggunakan perintah aws s3 cp untuk mentransfer file. Mari mulai dari dasar-dasarnya.
Sekarang setelah semuanya dikonfigurasi, mari masuk ke penggunaan dasar perintah aws s3 cp. Seperti biasa pada AWS, keindahannya terletak pada kesederhanaan, meskipun perintah ini dapat menangani berbagai skenario transfer file.
Dalam bentuk paling sederhana, perintah aws s3 cp mengikuti sintaks berikut:
aws s3 cp <source> <destination> [options]
Di mana <source> dan <destination> dapat berupa path file lokal atau URI S3 (yang dimulai dengan s3://). Mari jelajahi tiga kasus penggunaan paling umum.
Untuk menyalin file dari sistem lokal Anda ke bucket S3, sumbernya adalah path lokal dan tujuannya adalah URI S3:
aws s3 cp /Users/dradecic/Desktop/test_file.txt s3://testbucket-aws-cp-dradecic/test_file.txt
Perintah ini mengunggah file test_file.txt dari direktori yang diberikan ke bucket S3 yang ditentukan. Jika operasi berhasil, Anda akan melihat keluaran konsol seperti ini:

Gambar 8 - Keluaran konsol setelah menyalin file lokal
Dan pada AWS Management Console, Anda akan melihat file Anda terunggah:

Gambar 9 - Isi bucket S3
Demikian pula, jika Anda ingin menyalin folder lokal ke bucket S3 dan menempatkannya, katakanlah, di folder bertingkat lain, jalankan perintah serupa ini:
aws s3 cp /Users/dradecic/Desktop/test_folder s3://testbucket-aws-cp-dradecic/my-desired-folder/test_folder/ --recursive

Gambar 10 - Isi bucket S3 setelah mengunggah folder
Flag --recursive akan memastikan semua file dan subfolder di dalam folder tersalin.
Perlu diingat—S3 sebenarnya tidak memiliki folder—struktur path hanyalah bagian dari key objek, namun secara konseptual bekerja seperti folder.
Untuk menyalin file dari S3 ke sistem lokal Anda, cukup balik urutannya—sumber menjadi URI S3, dan tujuan adalah path lokal Anda:
aws s3 cp s3://testbucket-aws-cp-dradecic/test_file.txt /Users/dradecic/Documents/s3-data/downloaded_test_file.txt
Perintah ini mengunduh test_file.txt dari bucket S3 Anda dan menyimpannya sebagai downloaded_test_file.txt di direktori yang diberikan. Anda akan langsung melihatnya di sistem lokal Anda:

Gambar 11 - Mengunduh satu file dari S3
Jika Anda menghilangkan nama file tujuan, perintah akan menggunakan nama asli:
aws s3 cp s3://testbucket-aws-cp-dradecic/test_file.txt .

Gambar 12 - Isi file yang diunduh
Titik (.) mewakili direktori Anda saat ini, jadi ini akan mengunduh test_file.txt ke lokasi Anda saat ini.
Terakhir, untuk mengunduh seluruh direktori, Anda dapat menggunakan perintah serupa ini:
aws s3 cp s3://testbucket-aws-cp-dradecic/my-desired-folder/test_folder /Users/dradecic/Documents/test_folder --recursive

Gambar 13 - Isi folder yang diunduh
Ingat bahwa flag --recursive sangat penting saat bekerja dengan banyak file—tanpanya, perintah akan gagal jika sumbernya adalah direktori.
Dengan perintah dasar ini, Anda sudah dapat menyelesaikan sebagian besar tugas transfer file yang diperlukan. Namun di bagian berikutnya, Anda akan mempelajari opsi lanjutan yang memberi kendali lebih baik atas proses penyalinan.
AWS menawarkan beberapa opsi lanjutan yang memungkinkan Anda memaksimalkan operasi penyalinan file. Di bagian ini, saya akan menunjukkan beberapa flag dan parameter paling berguna yang akan membantu pekerjaan Anda sehari-hari.
Terkadang Anda hanya ingin menyalin file tertentu yang cocok dengan pola spesifik. Flag --exclude dan --include memungkinkan Anda memfilter file berdasarkan pola, dan memberi kontrol presisi atas apa yang disalin.
Sebagai konteks, ini adalah struktur direktori yang saya gunakan:

Gambar 14 - Struktur direktori
Sekarang, misalkan Anda ingin menyalin semua file dari direktori kecuali file .log:
aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --exclude "*.log"
Perintah ini akan menyalin semua file dari direktori advanced_folder ke S3, mengecualikan semua file dengan ekstensi .log:

Gambar 15 - Hasil penyalinan folder
Anda juga dapat menggabungkan beberapa pola. Misalkan Anda ingin menyalin hanya file HTML dan CSS dari folder proyek:
aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --exclude "*" --include "*.html" --include "*.css"
Perintah ini pertama-tama mengecualikan semuanya (--exclude "*"), lalu hanya menyertakan file dengan ekstensi .html dan .css. Hasilnya terlihat seperti ini:

Gambar 16 - Hasil penyalinan folder (2)
Perlu diingat bahwa urutan flag berpengaruh—AWS CLI memproses flag ini secara berurutan, jadi jika Anda meletakkan --include sebelum --exclude, hasilnya akan berbeda:
aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --include "*.html" --include "*.css" --exclude "*"
Kali ini, tidak ada yang disalin ke bucket:

Gambar 17 - Hasil penyalinan folder (3)
Amazon S3 menawarkan berbagai kelas penyimpanan, masing-masing dengan biaya dan karakteristik pengambilan yang berbeda. Secara default, aws s3 cp mengunggah file ke kelas Standard, tetapi Anda dapat menentukan kelas lain menggunakan flag --storage-class:
aws s3 cp /Users/dradecic/Desktop/large-archive.zip s3://testbucket-aws-cp-dradecic/archives/ --storage-class GLACIER
Perintah ini mengunggah large-archive.zip ke kelas penyimpanan Glacier, yang jauh lebih murah tetapi memiliki biaya dan waktu pengambilan yang lebih tinggi:

Gambar 18 - Menyalin file ke S3 dengan kelas penyimpanan berbeda
Kelas penyimpanan yang tersedia meliputi:
STANDARD (default): Penyimpanan tujuan umum dengan durabilitas dan ketersediaan tinggi.REDUCED_REDUNDANCY (tidak direkomendasikan lagi): Durabilitas lebih rendah, opsi penghematan biaya, kini usang.STANDARD_IA (Infrequent Access): Penyimpanan berbiaya lebih rendah untuk data yang jarang diakses.ONEZONE_IA (Single Zone Infrequent Access): Biaya lebih rendah, akses jarang dalam satu Availability Zone AWS.INTELLIGENT_TIERING: Secara otomatis memindahkan data antar tier berdasarkan pola akses.GLACIER: Penyimpanan arsip berbiaya rendah untuk retensi jangka panjang, pengambilan dalam hitungan menit hingga jam.DEEP_ARCHIVE: Penyimpanan arsip paling murah, pengambilan dalam hitungan jam, ideal untuk pencadangan jangka panjang.Jika Anda mencadangkan file yang tidak perlu diakses segera, menggunakan GLACIER atau DEEP_ARCHIVE dapat menghemat biaya penyimpanan secara signifikan.
Saat Anda memperbarui file di S3 yang sudah ada, Anda mungkin hanya ingin menyalin file yang berubah. Flag --exact-timestamps membantu dengan membandingkan cap waktu antara sumber dan tujuan.
Berikut contohnya:
aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --exact-timestamps
Dengan flag ini, perintah hanya akan menyalin file jika cap waktunya berbeda dari file yang sudah ada di S3. Ini dapat mengurangi waktu transfer dan penggunaan bandwidth saat Anda rutin memperbarui sekumpulan besar file.
Mengapa ini berguna? Bayangkan skenario deployment di mana Anda ingin memperbarui file aplikasi tanpa perlu mentransfer aset yang tidak berubah.
Meskipun --exact-timestamps berguna untuk melakukan semacam sinkronisasi, jika Anda membutuhkan solusi yang lebih canggih, pertimbangkan menggunakan aws s3 sync alih-alih aws s3 cp. Perintah sync dirancang khusus untuk menjaga direktori tetap sinkron dan memiliki kapabilitas tambahan untuk tujuan ini. Saya membahas semuanya tentang perintah sync dalam tutorial AWS S3 Sync.
Dengan opsi lanjutan ini, kini Anda memiliki kontrol yang jauh lebih halus atas operasi file S3 Anda. Anda dapat menargetkan file tertentu, mengoptimalkan biaya penyimpanan, dan memperbarui file secara efisien. Di bagian berikutnya, Anda akan mempelajari cara mengotomatiskan operasi ini menggunakan skrip dan tugas terjadwal.
Sejauh ini, Anda telah mempelajari cara menyalin file secara manual ke dan dari S3 menggunakan baris perintah. Salah satu keunggulan terbesar menggunakan aws s3 cp adalah Anda dapat dengan mudah mengotomatiskan transfer ini, yang akan sangat menghemat waktu.
Mari kita lihat cara mengintegrasikan perintah aws s3 cp ke dalam skrip dan pekerjaan terjadwal untuk transfer file tanpa intervensi.
Berikut contoh skrip bash sederhana yang mencadangkan direktori ke S3, menambahkan cap waktu ke cadangan, serta menerapkan penanganan kesalahan dan pencatatan ke berkas:
#!/bin/bash
# Set variables
SOURCE_DIR="/Users/dradecic/Desktop/advanced_folder"
BUCKET="s3://testbucket-aws-cp-dradecic/backups"
DATE=$(date +%Y-%m-%d-%H-%M)
BACKUP_NAME="backup-$DATE"
LOG_FILE="/Users/dradecic/logs/s3-backup-$DATE.log"
# Ensure the logs directory exists
mkdir -p "$(dirname "$LOG_FILE")"
# Create the backup and log the output
echo "Starting backup of $SOURCE_DIR to $BUCKET/$BACKUP_NAME" | tee -a $LOG_FILE
aws s3 cp $SOURCE_DIR $BUCKET/$BACKUP_NAME --recursive 2>&1 | tee -a $LOG_FILE
# Check if the backup was successful
if [ $? -eq 0 ]; then
echo "Backup completed successfully on $DATE" | tee -a $LOG_FILE
else
echo "Backup failed on $DATE" | tee -a $LOG_FILE
fi
Simpan sebagai backup.sh, buat dapat dieksekusi dengan chmod +x backup.sh, dan Anda memiliki skrip cadangan yang dapat digunakan ulang!
Anda kemudian dapat menjalankannya dengan perintah berikut:
./backup.sh

Gambar 19 - Skrip berjalan di terminal
Segera setelah itu, folder backups pada bucket akan terisi:

Gambar 20 - Cadangan tersimpan di bucket S3
Mari tingkatkan lagi dengan menjalankan skrip sesuai jadwal.
Sekarang setelah Anda memiliki skrip, langkah berikutnya adalah menjadwalkannya untuk berjalan otomatis pada waktu tertentu.
Jika Anda menggunakan Linux atau macOS, Anda dapat menggunakan cron untuk menjadwalkan cadangan. Berikut cara menyiapkan cron job untuk menjalankan skrip cadangan setiap hari pada tengah malam:
1. Buka crontab Anda untuk disunting:
crontab -e
2. Tambahkan baris berikut untuk menjalankan skrip setiap hari pada tengah malam:
0 0 * * * /path/to/your/backup.sh

Gambar 21 - Cron job untuk menjalankan skrip harian
Format untuk cron job adalah minute hour day-of-month month day-of-week command. Berikut beberapa contoh lainnya:
0 * * * * /path/to/your/backup.sh0 9 * * 1 /path/to/your/backup.sh0 0 1 * * /path/to/your/backup.shDan selesai! Skrip backup.sh sekarang akan berjalan sesuai interval terjadwal.
Mengotomatiskan transfer file S3 adalah langkah yang tepat. Ini sangat berguna untuk skenario seperti:
Teknik otomatisasi seperti ini akan membantu Anda menyiapkan sistem andal yang menangani transfer file tanpa intervensi manual. Anda cukup menulisnya sekali, lalu bisa melupakannya.
Di bagian berikutnya, saya akan membahas beberapa praktik terbaik agar operasi aws s3 cp Anda lebih aman dan efisien.
Meskipun perintah aws s3 cp mudah digunakan, tetap ada kemungkinan terjadi masalah.
Jika Anda mengikuti praktik terbaik, Anda akan terhindar dari jebakan umum, mengoptimalkan kinerja, dan menjaga data tetap aman. Mari bahas praktik-praktik ini untuk membuat operasi transfer file Anda lebih efisien.
Saat bekerja dengan S3, mengorganisasi file secara logis akan menghemat waktu dan kerepotan di kemudian hari.
Pertama, tetapkan konvensi penamaan bucket dan prefix yang konsisten. Misalnya, Anda dapat memisahkan data berdasarkan lingkungan, aplikasi, atau tanggal:
s3://company-backups/production/database/2023-03-13/
s3://company-backups/staging/uploads/2023-03/
Organisasi seperti ini memudahkan untuk:
Tips lain: Saat mentransfer kumpulan file besar, pertimbangkan untuk mengelompokkan file kecil terlebih dahulu (menggunakan zip atau tar) sebelum mengunggah. Ini mengurangi jumlah panggilan API ke S3, yang dapat menurunkan biaya dan mempercepat transfer.
# Alih-alih menyalin ribuan file log kecil
# kompres dulu, lalu unggah
tar -czf example-logs-2025-03.tar.gz /var/log/application/
aws s3 cp example-logs-2025-03.tar.gz s3://testbucket-aws-cp-dradecic/logs/2025/03/
Saat Anda menyalin file berukuran besar atau banyak file sekaligus, ada beberapa teknik untuk membuat prosesnya lebih andal dan efisien.
Anda dapat menggunakan flag --quiet untuk mengurangi keluaran saat berjalan dalam skrip:
aws s3 cp large-directory/ s3://testbucket-aws-cp-dradecic/backups/ --recursive --quiet
Ini menekan informasi progres untuk setiap file, yang membuat log lebih mudah dikelola. Ini juga sedikit meningkatkan kinerja.
Untuk file yang sangat besar, pertimbangkan menggunakan multipart upload dengan flag --multipart-threshold:
aws s3 cp huge-file.iso s3://testbucket-aws-cp-dradecic/backups/ --multipart-threshold 100MB
Pengaturan di atas memberi tahu AWS CLI untuk membagi file yang lebih besar dari 100MB menjadi beberapa bagian untuk diunggah. Melakukannya memiliki beberapa manfaat:
Saat mentransfer data antar region, pertimbangkan menggunakan S3 Transfer Acceleration untuk unggahan yang lebih cepat:
aws s3 cp large-file.zip s3://testbucket-aws-cp-dradecic/backups/ --endpoint-url https://s3-accelerate.amazonaws.com
Perintah di atas merutekan transfer Anda melalui jaringan edge Amazon, yang dapat mempercepat transfer lintas region secara signifikan.
Keamanan harus selalu menjadi prioritas utama saat bekerja dengan data Anda di cloud.
Pertama, pastikan izin IAM Anda mengikuti prinsip hak istimewa paling sedikit. Hanya berikan izin spesifik yang diperlukan untuk setiap tugas.
Berikut contoh kebijakan yang dapat Anda tetapkan ke pengguna:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject"
],
"Resource": "arn:aws:s3:::testbucket-aws-cp-dradecic/backups/*"
}
]
}
Kebijakan ini memungkinkan penyalinan file ke dan dari hanya prefix "backups" di "my-bucket".
Cara tambahan untuk meningkatkan keamanan adalah dengan mengaktifkan enkripsi untuk data sensitif. Anda dapat menentukan enkripsi sisi server saat mengunggah:
aws s3 cp confidential.docx s3://testbucket-aws-cp-dradecic/ --sse AES256
Atau, untuk keamanan lebih, gunakan AWS Key Management Service (KMS):
aws s3 cp secret-data.json s3://testbucket-aws-cp-dradecic/ --sse aws:kms --sse-kms-key-id myKMSKeyId
Namun, untuk operasi yang sangat sensitif, pertimbangkan menggunakan endpoint VPC untuk S3. Ini menjaga lalu lintas Anda tetap dalam jaringan AWS dan sepenuhnya menghindari internet publik.
Di bagian berikutnya, Anda akan mempelajari cara memecahkan masalah umum yang mungkin Anda temui saat bekerja dengan perintah ini.
Satu hal yang pasti—sesekali Anda akan menemui masalah saat bekerja dengan aws s3 cp. Namun, dengan memahami error umum dan solusinya, Anda akan menghemat waktu dan mengurangi frustrasi saat sesuatu tidak berjalan sesuai rencana.
Di bagian ini, saya akan menunjukkan masalah yang paling sering terjadi dan cara memperbaikinya.
Ini mungkin error paling umum yang akan Anda temui:
upload failed: ./myfile.txt to s3://testbucket-aws-cp-dradecic/myfile.txt An error occurred (AccessDenied) when calling the PutObject operation: Access Denied
Biasanya ini berarti salah satu dari tiga hal berikut:
Untuk menelusuri masalah:
s3:PutObject (untuk unggahan) atau s3:GetObject (untuk unduhan) yang diperlukan.aws configure untuk memperbarui kredensial jika telah kedaluwarsa.Error ini terjadi saat file atau direktori lokal yang Anda coba salin tidak ada:
upload failed: ./missing-file.txt to s3://testbucket-aws-cp-dradecic/missing-file.txt An error occurred (404) when calling the PutObject operation: Not Found
Solusinya sederhana—periksa path file Anda dengan saksama. Path bersifat case-sensitive, jadi ingat itu. Juga, pastikan Anda berada di direktori yang benar saat menggunakan path relatif.
Jika Anda melihat error ini:
upload failed: ./myfile.txt to s3://testbucket-aws-cp-dradecic/myfile.txt An error occurred (NoSuchBucket) when calling the PutObject operation: The specified bucket does not exist
Periksa:
Anda dapat mencantumkan semua bucket Anda dengan aws s3 ls untuk memastikan nama yang benar.
Masalah jaringan dapat menyebabkan koneksi habis waktu:
upload failed: ./largefile.zip to s3://testbucket-aws-cp-dradecic/largefile.zip An error occurred (RequestTimeout) when calling the PutObject operation: Request timeout
Untuk mengatasinya:
Error lebih mungkin terjadi saat mentransfer file besar. Dalam kasus tersebut, coba tangani kegagalan dengan baik.
Misalnya, Anda dapat menggunakan flag --only-show-errors untuk memudahkan diagnosis error dalam skrip:
aws s3 cp large-directory/ s3://testbucket-aws-cp-dradecic/ --recursive --only-show-errors
Ini menekan pesan transfer yang berhasil, hanya menampilkan error, sehingga pemecahan masalah transfer besar menjadi jauh lebih mudah.
Untuk menangani transfer yang terputus, perintah --recursive akan otomatis melewati file yang sudah ada di tujuan dengan ukuran yang sama. Namun, agar lebih menyeluruh, Anda dapat menggunakan retry bawaan AWS CLI untuk masalah jaringan dengan menyetel variabel lingkungan berikut:
export AWS_RETRY_MODE=standard
export AWS_MAX_ATTEMPTS=5
aws s3 cp large-file.zip s3://testbucket-aws-cp-dradecic/
Ini memberi tahu AWS CLI untuk otomatis mengulang operasi yang gagal hingga 5 kali.
Namun untuk dataset yang sangat besar, pertimbangkan menggunakan aws s3 sync alih-alih cp, karena perintah ini dirancang untuk menangani interupsi dengan lebih baik:
aws s3 sync large-directory/ s3://testbucket-aws-cp-dradecic/large-directory/
Perintah sync hanya akan mentransfer file yang berbeda dari yang sudah ada di tujuan, sehingga sangat cocok untuk melanjutkan transfer besar yang terputus.
Jika Anda memahami error umum ini dan menerapkan penanganan kesalahan yang tepat dalam skrip, Anda akan membuat operasi penyalinan S3 jauh lebih tangguh dan andal.
Sebagai kesimpulan, perintah aws s3 cp adalah solusi satu pintu untuk menyalin file lokal ke S3 dan sebaliknya.
Anda telah mempelajarinya secara menyeluruh di artikel ini. Anda mulai dari dasar dan konfigurasi lingkungan, dan berakhir dengan menulis skrip terjadwal dan otomatis untuk menyalin file. Anda juga mempelajari cara mengatasi beberapa error dan tantangan umum saat memindahkan file, terutama yang berukuran besar.
Jadi, jika Anda seorang developer, profesional data, atau administrator sistem, saya rasa Anda akan menemukan perintah ini bermanfaat. Cara terbaik untuk terbiasa dengannya adalah dengan sering menggunakannya. Pastikan Anda memahami dasar-dasarnya, lalu luangkan waktu untuk mengotomatiskan bagian pekerjaan yang membosankan.
Untuk mempelajari lebih lanjut tentang AWS, ikuti kursus-kursus DataCamp berikut:
Anda bahkan dapat menggunakan DataCamp untuk mempersiapkan ujian sertifikasi AWS - AWS Cloud Practitioner (CLF-C02).
Perintah aws s3 cp adalah utilitas dalam AWS Command Line Interface yang memungkinkan Anda menyalin file antara sistem lokal dan penyimpanan Amazon S3. Perintah ini dirancang untuk memberikan pengalaman baris perintah yang familier seperti perintah Linux standar cp, tetapi disesuaikan untuk berinteraksi dengan bucket S3. Anda dapat menggunakannya untuk transfer dua arah, penyalinan rekursif seluruh struktur direktori, memfilter file berdasarkan pola, dan bahkan menentukan kelas penyimpanan berbeda untuk optimisasi biaya. Perintah ini sangat berguna bagi engineer DevOps, data scientist, dan administrator sistem yang perlu mengelola data di bucket S3 secara efisien.
Menyiapkan AWS CLI untuk menggunakan perintah aws s3 cp melibatkan pemasangan AWS CLI di sistem Anda, mengonfigurasinya dengan kredensial AWS Anda, dan membuat bucket S3. Proses instalasi sedikit berbeda tergantung sistem operasi Anda (Windows, Linux, atau macOS). Setelah instalasi, Anda perlu menjalankan perintah aws configure dan memberikan Access key ID, Secret access key, region bawaan, dan format keluaran pilihan. Terakhir, Anda perlu membuat bucket S3 melalui AWS Management Console atau langsung menggunakan AWS CLI.
Sintaks dasar untuk aws s3 cp adalah aws s3 cp <source> <destination> [options], di mana source dan destination dapat berupa path file lokal atau URI S3 (diawali dengan s3://). Kasus penggunaan umum mencakup mengunggah file dari sistem lokal ke S3, mengunduh file dari S3 ke sistem lokal, dan menyalin seluruh direktori secara rekursif menggunakan flag --recursive. Anda juga dapat menggunakan perintah ini untuk menyalin file antar bucket S3 yang berbeda, menentukan nama berbeda untuk file tujuan, dan mengorganisasi file dalam struktur "folder" bertingkat di dalam bucket Anda.
Flag --exclude dan --include memungkinkan Anda memfilter file berdasarkan pola saat menggunakan aws s3 cp, sehingga memberi kontrol presisi atas apa yang disalin. Misalnya, Anda dapat menyalin semua file dari direktori kecuali yang memiliki ekstensi tertentu (seperti --exclude "*.log"), atau Anda dapat menargetkan hanya tipe file tertentu (seperti --include "*.html" --include "*.css" setelah terlebih dahulu mengecualikan semuanya dengan --exclude "*"). Urutan flag ini sangat berpengaruh karena AWS CLI memprosesnya secara berurutan. Hal ini memungkinkan Anda membuat aturan pemfilteran yang canggih untuk skenario transfer file yang kompleks.
Meskipun keduanya dapat digunakan untuk memperbarui file di S3, keduanya memiliki tujuan dan perilaku yang berbeda. Perintah aws s3 cp dengan flag --exact-timestamps hanya akan menyalin file jika cap waktunya berbeda dari yang sudah ada di S3, yang dapat mengurangi waktu transfer dan penggunaan bandwidth saat memperbarui file. Namun, aws s3 sync dirancang khusus untuk menjaga direktori tetap sinkron dan menawarkan kapabilitas sinkronisasi yang lebih canggih. Jika Anda perlu rutin memperbarui kumpulan file besar dan hanya ingin mentransfer yang berubah, aws s3 sync umumnya merupakan opsi yang lebih baik, meskipun aws s3 cp dengan --exact-timestamps dapat bekerja untuk kebutuhan sinkronisasi yang lebih sederhana.
Pelajari lebih lanjut tentang AWS dengan kursus-kursus ini!
Kursus
Kursus
Kursus
blogs
David Woods
13 mnt
blogs
Dario Radečić
15 mnt

blogs
Javier Canales Luna
14 mnt
blogs
Hugo Bowne-Anderson
13 mnt