Katakanlah saya memiliki mesin yang saya inginkan untuk dapat menulis ke file log tertentu yang disimpan di bucket S3.
Jadi, mesin harus memiliki kemampuan menulis ke keranjang itu, tetapi, saya tidak ingin mesin memiliki kemampuan untuk menimpa atau menghapus file apa pun di keranjang itu (termasuk yang saya inginkan untuk menuliskannya).
Jadi pada dasarnya, saya ingin mesin saya hanya dapat menambahkan data ke file log itu, tanpa menimpa atau mengunduhnya.
Apakah ada cara untuk mengkonfigurasi S3 saya agar berfungsi seperti itu? Mungkin ada beberapa kebijakan IAM yang dapat saya lampirkan sehingga akan berfungsi seperti yang saya inginkan?
Jawaban:
Sayangnya, Anda tidak bisa.
S3 tidak memiliki operasi "tambahkan". * Setelah sebuah objek diunggah, tidak ada cara untuk mengubahnya; satu-satunya pilihan Anda adalah mengunggah objek baru untuk menggantikannya, yang tidak memenuhi kebutuhan Anda.
*: Ya, saya tahu posting ini berumur beberapa tahun. Ini masih akurat.
sumber
Seperti yang dinyatakan oleh jawaban yang diterima, Anda tidak bisa. Solusi terbaik yang saya ketahui adalah menggunakan:
AWS Kinesis Firehose
https://aws.amazon.com/kinesis/firehose/
Sampel kode mereka terlihat rumit tetapi sampel Anda bisa sangat sederhana. Anda terus melakukan operasi PUT (atau BATCH PUT) ke aliran pengiriman Kinesis Firehose di aplikasi Anda (menggunakan AWS SDK), dan Anda mengonfigurasi aliran pengiriman Kinesis Firehose untuk mengirim data Anda yang dialirkan ke ember AWS S3 pilihan Anda (di Konsol AWS Kinesis Firehose).
Ini masih tidak senyaman
>>
dari baris perintah Linux, karena setelah Anda membuat file di S3, Anda harus berurusan lagi dengan mengunduh, menambahkan, dan mengunggah file baru tetapi Anda hanya perlu melakukannya sekali per kumpulan baris. daripada untuk setiap baris data sehingga Anda tidak perlu khawatir tentang biaya besar karena volume operasi penambahan. Mungkin itu bisa dilakukan tapi saya tidak bisa melihat bagaimana melakukannya dari konsol.sumber
Objek di S3 tidak dapat ditambahkan. Anda memiliki 2 solusi dalam kasus ini:
sumber
Seperti yang telah dinyatakan orang lain sebelumnya, objek S3 tidak dapat ditambahkan.
Namun, solusi lain adalah menulis ke log CloudWatch dan kemudian mengekspor log yang Anda inginkan ke S3 . Ini juga akan mencegah penyerang yang mengakses server Anda untuk menghapus dari bucket S3 Anda, karena Lambda tidak memerlukan izin S3 apa pun.
sumber
Jika ada yang ingin menambahkan data ke objek dengan layanan seperti S3, Alibaba Cloud OSS (Object Storage Service) mendukung ini secara native .
sumber
Saya memiliki masalah serupa dan inilah yang saya tanyakan
cara Menambahkan data dalam file menggunakan AWS Lambda
Inilah yang saya temukan untuk memecahkan masalah di atas:
Gunakan getObject untuk mengambil dari file yang sudah ada
Tulis fungsi untuk ditambahkan ke file
Semoga bantuan ini !!
sumber
writeToS3
Fungsi Anda akan menimpa file, bukan menambahkannya.