View a markdown version of this page

Memecahkan Masalah File S3 - Amazon Simple Storage Service

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

Memecahkan Masalah File S3

Halaman ini membantu Anda mendiagnosis dan menyelesaikan masalah umum dengan File S3.

Perintah mount gagal

mount -t s3filesPerintah gagal dengan kesalahan.

Penyebab dan tindakan umum:

  • “mount.s3files: perintah tidak ditemukan” - Klien File S3 (amazon-efs-utils) tidak diinstal atau di bawah versi 3.0.0. Instal atau tingkatkan klien. Untuk informasi selengkapnya, lihat Prasyarat untuk File S3.

  • “Gagal menyelesaikan nama DNS sistem file” - Tidak ada target pemasangan di Availability Zone tempat instans EC2 Anda berjalan. Buat target pemasangan di Availability Zone tersebut, atau luncurkan instance Anda di Availability Zone yang memiliki target mount. Untuk informasi selengkapnya, lihat Pembuatan target pemasangan.

  • Waktu koneksi habis - Konfigurasi grup keamanan tidak mengizinkan lalu lintas NFS. Verifikasi bahwa grup keamanan target mount mengizinkan TCP masuk pada port 2049 dari grup keamanan instans Anda, dan grup keamanan instans Anda mengizinkan TCP keluar pada port 2049 ke grup keamanan target mount. Untuk informasi selengkapnya, lihat Prasyarat untuk File S3.

  • “Akses ditolak” selama pemasangan - Peran IAM yang dilampirkan ke sumber daya komputasi Anda tidak memiliki izin File S3 yang diperlukan. Verifikasi bahwa peran tersebut memiliki AmazonS3FilesClientFullAccess atau kebijakan AmazonS3FilesClientReadOnlyAccess terkelola yang dilampirkan, atau setidaknya s3files:ClientMount izin. Untuk informasi selengkapnya, lihat Prasyarat untuk File S3.

  • botocore tidak diinstal - Pembantu pemasangan membutuhkan botocore untuk berinteraksi dengan layanan. AWS Instal botocore mengikuti instruksi di amazon-efs-utils README aktif. GitHub

Izin ditolak pada operasi file

Anda dapat memasang sistem file tetapi menerima kesalahan “Izin ditolak” atau “Operasi tidak diizinkan” saat membaca, menulis, atau mengakses file.

Penyebab dan tindakan umum:

  • Izin menulis tidak ada — Jika Anda dapat membaca tetapi tidak menulis, verifikasi bahwa peran IAM yang dilampirkan ke sumber daya komputasi Anda menyertakan s3files:ClientWrite izin, atau lampirkan kebijakan AmazonS3FilesClientReadWriteAccess atau AmazonS3FilesClientFullAccess terkelola. Untuk informasi selengkapnya, lihat kebijakan AWS terkelola untuk File Amazon S3.

  • Akses root hilang - Jika Anda menerima kesalahan izin saat mengakses file yang dimiliki oleh root (UID 0), peran IAM Anda mungkin tidak memiliki izin. s3files:ClientRootAccess Tanpa izin ini, semua operasi dilakukan sebagai pengguna anonim NFS (biasanya nfsnobody), yang mungkin tidak memiliki akses ke file. Lampirkan kebijakan AmazonS3FilesClientFullAccess terkelola atau tambahkan s3files:ClientRootAccess ke kebijakan Anda.

  • Kebijakan sistem file yang menolak akses — Jika Anda telah melampirkan kebijakan sistem file, verifikasi bahwa itu tidak menyangkal tindakan yang dibutuhkan klien Anda. “Izinkan” baik dalam kebijakan berbasis identitas atau kebijakan sistem file sudah cukup untuk akses. Untuk informasi selengkapnya, lihat Bagaimana File S3 bekerja dengan IAM.

  • Ketidakcocokan izin POSIX - File S3 memberlakukan izin POSIX standar (pemilik, grup, lainnya) pada file dan direktori. Jika aplikasi Anda berjalan sebagai pengguna yang tidak cocok dengan pemilik atau grup file, akses dapat ditolak meskipun izin IAM sudah benar. Gunakan titik akses untuk menegakkan spesifik UID/GID untuk semua permintaan. Untuk informasi selengkapnya, lihat Membuat titik akses untuk sistem file S3.

Perutean baca cerdas tidak berfungsi

File S3 melakukan perutean baca cerdas karena secara otomatis merutekan permintaan baca ke lapisan penyimpanan yang paling cocok untuk mereka, sambil mempertahankan semantik sistem file lengkap termasuk konsistensi, penguncian, dan izin POSIX. Pembacaan kecil dan acak dari file yang digunakan secara aktif disajikan dari penyimpanan berkinerja tinggi untuk latensi rendah. Pembacaan dan pembacaan berurutan besar yang tidak ada pada sistem file disajikan langsung dari bucket S3 Anda untuk throughput tinggi, tanpa biaya data sistem file.

Perutean baca cerdas mungkin tidak berfungsi jika salah satu metrik konektivitas klien (NFSConnectionAccessible,S3BucketAccessible, danS3BucketReachable) menunjukkan 0, atau jika Anda tidak melihat throughput baca yang diharapkan.

Penyebab dan tindakan umum:

  • Kebijakan inline S3 yang hilang pada peran komputasi — Peran IAM yang dilampirkan ke sumber daya komputasi Anda harus menyertakan pemberian s3:GetObject kebijakan sebaris dan pada bucket S3 yang ditautkan. s3:GetObjectVersion Tanpa kebijakan ini, mount helper tidak dapat membaca langsung dari S3 dan semua pembacaan melalui sistem file. Untuk informasi selengkapnya, lihat Prasyarat untuk File S3.

  • Bucket S3 tidak dapat dijangkau — Periksa metrik. S3BucketReachable Jika menunjukkan 0, verifikasi bahwa sumber daya komputasi Anda memiliki akses jaringan ke S3 (misalnya, melalui titik akhir VPC atau gateway NAT).

  • File telah dimodifikasi - Bacaan hanya disajikan langsung dari S3 ketika file belum dimodifikasi melalui sistem file. Jika Anda telah menulis ke file dan perubahan belum disinkronkan ke S3, membaca melalui sistem file sampai sinkronisasi selesai.

Sistem file secara konsisten mengembalikan kesalahan server NFS

Sistem file terenkripsi secara konsisten mengembalikan kesalahan server NFS. Kesalahan ini dapat terjadi ketika File S3 tidak dapat mengambil kunci KMS Anda dari AWS KMS karena salah satu alasan berikut:

  • Kuncinya dinonaktifkan.

  • Kuncinya telah dihapus.

  • Izin untuk File S3 untuk menggunakan kunci telah dicabut.

  • AWS KMS untuk sementara tidak tersedia.

Tindakan yang harus diambil

Pertama, konfirmasikan bahwa kunci AWS KMS diaktifkan. Anda dapat melihat kunci Anda di konsol AWS KMS. Untuk informasi selengkapnya, lihat Melihat AWS Kunci di Panduan Pengembang Layanan Manajemen Kunci.

Jika kunci tidak diaktifkan, aktifkan. Untuk informasi selengkapnya, lihat Mengaktifkan dan Menonaktifkan Kunci di Panduan Pengembang Layanan Manajemen AWS Kunci.

Jika kunci tertunda penghapusan, batalkan penghapusan dan aktifkan kembali kunci. Untuk informasi selengkapnya, lihat Menjadwalkan dan Membatalkan Penghapusan Kunci di Panduan Pengembang Layanan Manajemen AWS Kunci.

Jika kunci diaktifkan dan Anda masih mengalami masalah, hubungi AWS Support.

Objek hilang di ember S3 setelah sistem file ditulis

Anda menulis file melalui sistem file dan mengharapkannya muncul sebagai objek di bucket S3 Anda, tetapi objek tersebut tidak ada. S3 File batch berubah selama sekitar 60 detik sebelum menyalinnya ke S3. Jika objek masih tidak muncul, ekspor mungkin gagal. Dalam kasus seperti itu, Anda melihat peningkatan FailedExports CloudWatch metrik.

Tindakan yang harus diambil

Periksa status ekspor file menggunakan atribut yang diperluas:

getfattr -n "user.s3files.status;$(date -u +%s)" missing-file.txt --only-values

Stempel waktu dalam nama atribut memastikan Anda mendapatkan status terbaru. Contoh output:

S3Key: s3://bucket/prefix/missing-file.txt ExportError: PathTooLong

ExportErrortidak ditampilkan jika tidak ada kegagalan ekspor. S3Keykosong jika objek S3 tidak pernah ditautkan ke file.

Tabel berikut mencantumkan semua ExportError nilai yang mungkin:

Kesalahan Penyebab
S3AccessDenied Peran IAM yang diasumsikan oleh File S3 tidak memiliki izin yang cukup untuk menulis ke bucket S3. Untuk informasi selengkapnya, lihat Prasyarat untuk File S3.
S3BucketNotFound Bucket S3 sumber tidak ada lagi atau telah diganti namanya. Verifikasi itu ada di AWS Wilayah dan akun yang diharapkan.
InternalError Ada kesalahan sistem internal.
S3UserMetadataTooLarge Batas ukuran metadata pengguna S3 terlampaui. Lihat Fitur, batas, dan kuota yang tidak didukung untuk informasi tentang batas-batas ini.
FileSizeExceedsS3Limit Ukuran file melebihi batas ukuran objek S3. Lihat Fitur, batas, dan kuota yang tidak didukung untuk informasi tentang batas-batas ini.
EncryptionKeyInaccessible Kunci enkripsi yang digunakan oleh bucket S3 tidak dapat diakses oleh File S3. Berikan akses File S3 ke kunci enkripsi Anda. Untuk informasi selengkapnya, lihat Enkripsi.
RoleAssumptionFailed Tidak bisa mengambil peran. Periksa kebijakan kepercayaan Anda. Untuk informasi selengkapnya, lihat Prasyarat untuk File S3.
KeyTooLongToBreakCycle File S3 tidak dapat menyelesaikan ketergantungan melingkar (misalnya, karena mengganti nama dua file ke nama masing-masing) karena jalur file melebihi batas panjang kunci S3. Mempersingkat jalur direktori untuk mengatasi kesalahan ini.
PathTooLong Jalur file Anda melebihi batas panjang kunci S3. Lihat Fitur, batas, dan kuota yang tidak didukung untuk informasi tentang batas-batas ini.
DependencyExportFailed Induk atau ketergantungan memiliki kegagalan ekspor yang tidak dapat dicoba ulang. Periksa status untuk induk atau dependensi apa pun yang menggunakan. getfattr
S3ObjectArchived Objek S3 diarsipkan (S3 Glacier Flexible Retrieval atau S3 Glacier Deep Archive) dan tidak dapat dibaca. Kembalikan objek terlebih dahulu menggunakan S3 APIs.

File S3 secara otomatis mencoba ulang ekspor yang gagal. ExportErrorditampilkan hanya untuk kesalahan yang tidak dapat dicoba ulang.

Objek S3 tidak terlihat dalam sistem file

Sebuah objek ada di bucket S3 Anda tetapi tidak muncul di sistem file. Nama kunci objek mungkin tidak dipetakan ke jalur file POSIX yang valid. File S3 tidak mendukung akses nama kunci S3 dengan komponen jalur kosong (), komponen jalur relatif (,foo//bar), nama kunci yang berisi byte nol, atau nama kunci di mana komponen jalur apa pun melebihi 255 byte. foo/./bar foo/../bar Objek dengan nama kunci yang tidak kompatibel tidak diimpor ke sistem file.

File muncul di direktori yang hilang dan ditemukan

File telah muncul di .s3files-lost+found-file-system-id direktori di direktori root sistem file Anda. Dalam hal ini, Anda melihat peningkatan LostAndFoundFiles CloudWatch metrik. Ini terjadi ketika konflik sinkronisasi muncul. Konflik terjadi ketika file yang sama dimodifikasi melalui sistem file dan objek S3 yang sesuai berubah sebelum File S3 menyinkronkan sistem file berubah kembali ke S3. File S3 memperlakukan bucket S3 sebagai sumber kebenaran, memindahkan file yang bertentangan ke direktori yang hilang dan ditemukan, dan mengimpor versi terbaru dari bucket S3 ke dalam sistem file.

Mengidentifikasi file di direktori yang hilang dan ditemukan

Ketika File S3 memindahkan file ke direktori yang hilang dan ditemukan, itu menambahkan nama file dengan pengenal heksadesimal untuk membedakan beberapa versi dari file yang sama yang dapat dipindahkan dari waktu ke waktu. Nama file yang lebih panjang dari 100 karakter dipotong untuk memberi ruang bagi pengenal ini. Jalur direktori asli file tidak disimpan di direktori yang hilang dan ditemukan.

Tindakan yang harus diambil

Dapatkan jalur asli file dan kunci objek S3 yang sesuai:

getfattr -n "user.s3files.status;$(date -u +%s)" .s3files-lost+found-fs-12345678/abcdef1234_report.csv --only-values

Contoh output:

S3Key: s3://bucket/prefix/report.csv FilePath: /data/report.csv
Bidang Deskripsi
S3Key Jalur S3 penuh dari objek yang menyebabkan konflik, atau kosong jika objek dihapus di bucket S3.
FilePath Jalur relatif file sebelum konflik.

Anda kemudian dapat menyimpan versi terbaru dari bucket S3 Anda dan menghapus file dari direktori yang hilang dan ditemukan, atau menyalin file dari direktori yang hilang dan ditemukan kembali ke jalur aslinya untuk menimpa versi S3.

catatan

File di direktori yang hilang dan ditemukan tetap ada tanpa batas waktu dan dihitung terhadap biaya penyimpanan sistem file Anda. Hapus file dari direktori yang hilang dan ditemukan ketika mereka tidak lagi diperlukan.

Sinkronisasi tertinggal

PendingExports CloudWatch Metrik berkembang, menunjukkan bahwa beban kerja Anda menghasilkan perubahan lebih cepat daripada File S3 dapat menyinkronkannya ke S3.

Ini berarti bahwa beban kerja Anda mungkin melebihi tingkat sinkronisasi. File S3 mengekspor hingga 800 file per detik per sistem file. Pertimbangkan untuk mengurangi tingkat modifikasi file atau mendistribusikan pekerjaan di beberapa sistem file. Pantau PendingExports metrik dari waktu ke waktu. Jika stabil atau berkurang, File S3 mengejar ketinggalan. Jika terus tumbuh, hubungi AWS Support.

Mengaktifkan log debug klien

Jika Anda memecahkan masalah pemasangan, konektivitas, atau baca bypass, Anda dapat mengaktifkan logging tingkat debug pada klien File S3 untuk menangkap lebih detail.

Pasang log pembantu dan pengawas

Edit /etc/amazon/efs/s3files-utils.conf dan ubah level logging dari INFO ke DEBUG:

[DEFAULT] logging_level = DEBUG

Lepaskan dan pasang kembali sistem file agar perubahan diterapkan:

sudo umount /mnt/s3files sudo mount -t s3files file-system-id:/ /mnt/s3files

Log ditulis ke/var/log/amazon/efs/. Log pembantu mount adalahmount.log.

Log proxy (efs-proxy)

Proxy menangani lalu lintas NFS dan bypass baca S3. Untuk mengaktifkan pencatatan debug untuk proxy, edit/etc/amazon/efs/s3files-utils.conf:

[proxy] proxy_logging_level = DEBUG

Lepaskan dan pasang kembali agar perubahan diterapkan. Log proxy ditulis ke/var/log/amazon/efs/.

Log terowongan TLS (stunnel)

Log terowongan TLS dinonaktifkan secara default. Untuk mengaktifkannya, edit /etc/amazon/efs/s3files-utils.conf dan atur yang berikut ini:

[mount] stunnel_debug_enabled = true

Untuk menyimpan semua log stunnel untuk sistem file ke satu file, hapus komentar juga pada stunnel_logs_file baris:

stunnel_logs_file = /var/log/amazon/efs/{fs_id}.stunnel.log

Batas ukuran log

File log diputar secara otomatis. Anda dapat mengonfigurasi ukuran maksimum dan jumlah file yang diputar dis3files-utils.conf:

[DEFAULT] logging_max_bytes = 1048576 logging_file_count = 10

Defaultnya adalah 1 MB per file log dengan 10 file yang diputar, untuk maksimum 10 MB per jenis log.

Berbagi log dengan AWS Support

Saat menghubungi AWS Support, kumpulkan log dan konfigurasi klien ke dalam satu arsip:

sudo tar -czf /tmp/s3files-support-logs.tar.gz \ /var/log/amazon/efs/ \ /etc/amazon/efs/s3files-utils.conf

Sertakan /tmp/s3files-support-logs.tar.gz dengan kasus dukungan Anda.