Thursday

19-06-2025 Vol 19

Renaming and Migrating Google Cloud Storage Buckets Using Storage Transfer Service

Mengganti Nama dan Memigrasikan Bucket Google Cloud Storage Menggunakan Storage Transfer Service

Google Cloud Storage (GCS) adalah layanan penyimpanan objek yang sangat skalabel dan tahan lama. Kadang-kadang, Anda mungkin perlu mengganti nama bucket GCS Anda atau memigrasikannya ke lokasi lain karena berbagai alasan seperti persyaratan organisasi, kepatuhan, atau pengoptimalan biaya. Artikel ini memandu Anda melalui proses penggantian nama dan migrasi bucket GCS menggunakan Storage Transfer Service (STS), dengan menekankan praktik terbaik dan pertimbangan penting.

Mengapa Mengganti Nama atau Memigrasikan Bucket Google Cloud Storage?

Sebelum kita masuk ke detail teknis, mari kita pahami mengapa Anda mungkin mempertimbangkan untuk mengganti nama atau memigrasikan bucket GCS Anda:

  1. Persyaratan Organisasi: Struktur organisasi Anda mungkin berubah, dan Anda perlu mencerminkan perubahan ini dalam penamaan bucket Anda.
  2. Kepatuhan: Mungkin ada persyaratan kepatuhan baru yang mengharuskan Anda untuk menyimpan data di wilayah tertentu.
  3. Pengoptimalan Biaya: Memindahkan data Anda ke kelas penyimpanan yang lebih murah atau wilayah yang lebih dekat dengan pengguna Anda dapat membantu Anda mengurangi biaya.
  4. Penyederhanaan Manajemen: Konsolidasi atau reorganisasi bucket dapat menyederhanakan manajemen dan meningkatkan efisiensi.
  5. Perbaikan Penamaan: Mungkin nama bucket awal tidak sesuai dengan standar penamaan saat ini, dan Anda ingin memperbaikinya.

Batasan Mengganti Nama Bucket GCS

Penting untuk memahami batasan penggantian nama bucket GCS:

  1. Tidak Ada Penggantian Nama Langsung: GCS tidak mengizinkan penggantian nama bucket secara langsung. Anda harus membuat bucket baru dan memindahkan data dari bucket lama ke bucket baru.
  2. Downtime Potensial: Selama proses migrasi, mungkin ada downtime, terutama untuk aplikasi yang bergantung pada data yang disimpan di bucket.
  3. Perubahan Konfigurasi: Anda mungkin perlu memperbarui konfigurasi aplikasi Anda untuk menunjuk ke bucket baru.
  4. Konsistensi Data: Memastikan konsistensi data selama migrasi sangat penting untuk mencegah kehilangan atau kerusakan data.

Storage Transfer Service (STS): Solusi yang Kuat

Storage Transfer Service (STS) adalah layanan terkelola yang menyediakan cara yang andal dan efisien untuk mentransfer data antara bucket GCS, Amazon S3, dan sumber penyimpanan lainnya. Ini sangat berguna untuk migrasi dan penggantian nama bucket.

Keuntungan Menggunakan STS

  1. Keandalan: STS dirancang untuk mentransfer data dalam jumlah besar dengan andal.
  2. Efisiensi: STS mengoptimalkan transfer data untuk kecepatan dan efisiensi.
  3. Skalabilitas: STS dapat menangani transfer data dalam skala besar.
  4. Manajemen Terpusat: STS menyediakan antarmuka terpusat untuk mengelola transfer data Anda.
  5. Pemantauan: Anda dapat memantau kemajuan transfer data Anda di STS.

Kerangka Posting Blog: Mengganti Nama dan Memigrasikan Bucket GCS dengan STS

  1. Pendahuluan
    • Ikhtisar Google Cloud Storage (GCS) dan pentingnya manajemen bucket.
    • Pentingnya mengganti nama atau memigrasikan bucket GCS.
    • Pengenalan Storage Transfer Service (STS) sebagai solusi yang kuat.
  2. Prasyarat
    • Akun Google Cloud Platform (GCP) dengan izin yang diperlukan.
    • Google Cloud SDK (gcloud) diinstal dan dikonfigurasi.
    • Memahami dasar-dasar GCS dan STS.
  3. Langkah 1: Membuat Bucket Tujuan Baru
    • Menjelaskan pentingnya membuat bucket tujuan baru.
    • Langkah-langkah untuk membuat bucket baru menggunakan Konsol Google Cloud atau gcloud CLI.
    • Praktik terbaik untuk penamaan bucket dan konfigurasi lokasi.
  4. Langkah 2: Mengaktifkan Storage Transfer Service
    • Menjelaskan cara mengaktifkan STS di project GCP Anda.
    • Menavigasi ke bagian Storage Transfer Service di Konsol Google Cloud.
    • Mengaktifkan API STS.
  5. Langkah 3: Membuat Akun Layanan untuk STS
    • Menjelaskan kebutuhan akan akun layanan untuk STS.
    • Langkah-langkah untuk membuat akun layanan dengan peran yang sesuai (Storage Admin, Storage Object Admin).
    • Memberikan izin akun layanan untuk mengakses bucket sumber dan tujuan.
  6. Langkah 4: Membuat Pekerjaan Transfer di STS
    • Menjelaskan proses pembuatan pekerjaan transfer menggunakan Konsol Google Cloud atau gcloud CLI.
    • Mengkonfigurasi bucket sumber dan tujuan.
    • Memilih opsi transfer (misalnya, mentransfer semua objek, mentransfer hanya objek baru).
    • Menjadwalkan pekerjaan transfer atau menjalankannya segera.
  7. Langkah 5: Memantau Pekerjaan Transfer
    • Menjelaskan cara memantau kemajuan pekerjaan transfer di STS.
    • Menafsirkan metrik transfer (misalnya, objek yang ditransfer, byte yang ditransfer, kesalahan).
    • Memecahkan masalah kesalahan transfer umum.
  8. Langkah 6: Memverifikasi Transfer Data
    • Menjelaskan pentingnya memverifikasi transfer data.
    • Metode untuk memverifikasi integritas data (misalnya, menggunakan hash MD5 atau CRC32C).
    • Membandingkan jumlah objek dan ukuran antara bucket sumber dan tujuan.
  9. Langkah 7: Mengubah Lalu Lintas Aplikasi ke Bucket Baru
    • Menjelaskan cara memperbarui konfigurasi aplikasi untuk menunjuk ke bucket baru.
    • Strategi untuk mengalihkan lalu lintas secara bertahap untuk meminimalkan downtime.
    • Memantau aplikasi setelah pengalihan untuk memastikan tidak ada masalah.
  10. Langkah 8: Menghapus Bucket Sumber (Opsional)
    • Menjelaskan cara menghapus bucket sumber setelah transfer selesai dan diverifikasi.
    • Pertimbangan keamanan sebelum menghapus bucket.
    • Mengaktifkan perlindungan penghapusan bucket untuk mencegah penghapusan yang tidak disengaja.
  11. Praktik Terbaik dan Pertimbangan Tambahan
    • Memperkirakan waktu dan biaya transfer.
    • Mengoptimalkan kinerja transfer dengan menyesuaikan pengaturan konkurensi.
    • Menangani objek besar dan file terkompresi.
    • Menggunakan filter transfer untuk mentransfer subset objek.
    • Mengelola metadata dan kontrol akses.
  12. Keamanan
    • Mengamankan bucket GCS Anda dengan kontrol akses dan kebijakan IAM.
    • Mengenkripsi data dalam transit dan saat istirahat.
    • Menggunakan rotasi kunci enkripsi.
  13. Pemecahan Masalah
    • Masalah transfer umum dan solusinya.
    • Memecahkan masalah konektivitas jaringan.
    • Memecahkan masalah izin.
  14. Kesimpulan
    • Ringkasan proses penggantian nama dan migrasi bucket GCS menggunakan STS.
    • Menekankan keuntungan menggunakan STS untuk transfer data yang andal dan efisien.
    • Mendorong pembaca untuk menjelajahi fitur dan kemampuan STS lebih lanjut.

Artikel Lengkap

Pendahuluan

Google Cloud Storage (GCS) adalah layanan penyimpanan objek yang menawarkan skalabilitas, daya tahan, dan ketersediaan yang tak tertandingi. Hal ini menjadikannya pilihan populer bagi bisnis yang ingin menyimpan dan mengelola data dalam jumlah besar di cloud. Namun, seiring berkembangnya kebutuhan bisnis, Anda mungkin perlu mengganti nama atau memigrasikan bucket GCS Anda. Mengganti nama bucket secara langsung tidak dimungkinkan di GCS, sehingga proses migrasi data ke bucket baru diperlukan. Storage Transfer Service (STS) menyederhanakan proses ini dengan menawarkan cara yang andal, aman, dan efisien untuk mentransfer data antar bucket GCS, Amazon S3, dan layanan penyimpanan lainnya. Artikel ini memberikan panduan komprehensif tentang cara mengganti nama dan memigrasikan bucket GCS menggunakan STS, membahas praktik terbaik dan pertimbangan penting di sepanjang jalan.

Prasyarat

Sebelum memulai proses penggantian nama dan migrasi bucket GCS, pastikan Anda memenuhi prasyarat berikut:

  1. Akun Google Cloud Platform (GCP): Anda memerlukan akun GCP aktif dengan izin yang diperlukan untuk membuat dan mengelola bucket GCS dan menggunakan STS.
  2. Google Cloud SDK (gcloud): Instal Google Cloud SDK (gcloud) di mesin lokal Anda. SDK ini menyediakan antarmuka baris perintah untuk berinteraksi dengan layanan GCP. Anda dapat mengunduh dan menginstal SDK dari situs web Google Cloud. Setelah diinstal, konfigurasikan gcloud CLI untuk menggunakan akun GCP Anda.
  3. Memahami GCS dan STS: Pemahaman dasar tentang GCS dan STS penting untuk mengikuti panduan ini secara efektif. Familiarisasikan diri Anda dengan konsep-konsep seperti bucket, objek, kelas penyimpanan, dan peran dan izin IAM.

Langkah 1: Membuat Bucket Tujuan Baru

Karena GCS tidak mengizinkan penggantian nama bucket secara langsung, langkah pertama adalah membuat bucket tujuan baru. Bucket ini akan berfungsi sebagai tempat data Anda akan dipindahkan.

Anda dapat membuat bucket baru menggunakan Konsol Google Cloud atau gcloud CLI.

Menggunakan Konsol Google Cloud:

  1. Buka Konsol Google Cloud.
  2. Navigasikan ke Storage > Cloud Storage > Bucket.
  3. Klik Create bucket.
  4. Masukkan nama unik untuk bucket Anda. Ikuti aturan penamaan bucket GCS.
  5. Pilih lokasi bucket. Pilih wilayah yang paling dekat dengan pengguna Anda atau yang memenuhi persyaratan kepatuhan Anda.
  6. Pilih kelas penyimpanan default untuk bucket. Pertimbangkan frekuensi akses data Anda saat memilih kelas penyimpanan.
  7. Konfigurasikan opsi lain, seperti kontrol versi dan kebijakan siklus hidup.
  8. Klik Create.

Menggunakan gcloud CLI:

Buka terminal atau prompt perintah dan jalankan perintah berikut:

gcloud storage buckets create gs://[NAMA_BUCKET] --location=[LOKASI] --default-storage-class=[KELAS_PENYIMPANAN]

Ganti:

  • [NAMA_BUCKET] dengan nama bucket yang Anda inginkan.
  • [LOKASI] dengan lokasi bucket (misalnya, US, EU, asia-east1).
  • [KELAS_PENYIMPANAN] dengan kelas penyimpanan default (misalnya, STANDARD, NEARLINE, COLDLINE, ARCHIVE).

Contoh:

gcloud storage buckets create gs://my-new-bucket --location=US --default-storage-class=STANDARD

Praktik Terbaik untuk Penamaan Bucket dan Konfigurasi Lokasi:

  • Penamaan Bucket: Pilih nama bucket yang deskriptif dan konsisten dengan standar penamaan Anda. Nama bucket harus unik secara global.
  • Konfigurasi Lokasi: Pilih lokasi bucket yang mempertimbangkan latensi, biaya, dan persyaratan kepatuhan. Jika pengguna Anda tersebar secara global, pertimbangkan untuk menggunakan bucket multi-wilayah.

Langkah 2: Mengaktifkan Storage Transfer Service

Sebelum menggunakan STS, Anda perlu mengaktifkannya di proyek GCP Anda.

Menggunakan Konsol Google Cloud:

  1. Buka Konsol Google Cloud.
  2. Navigasikan ke IAM & Admin > APIs & Services > Enabled APIs & Services.
  3. Klik Enable APIs and Services.
  4. Cari “Storage Transfer Service”.
  5. Klik Storage Transfer API.
  6. Klik Enable.

Langkah 3: Membuat Akun Layanan untuk STS

STS menggunakan akun layanan untuk mengakses bucket sumber dan tujuan. Anda perlu membuat akun layanan dan memberinya peran yang sesuai.

Menggunakan Konsol Google Cloud:

  1. Buka Konsol Google Cloud.
  2. Navigasikan ke IAM & Admin > Service Accounts.
  3. Klik Create service account.
  4. Masukkan nama untuk akun layanan (misalnya, sts-transfer-account).
  5. Berikan deskripsi untuk akun layanan.
  6. Klik Create.
  7. Berikan peran berikut ke akun layanan:
    • Storage Admin: Memberikan akses penuh ke bucket GCS.
    • Storage Object Admin: Memberikan akses untuk mengelola objek di bucket GCS.
  8. Klik Continue.
  9. Klik Done.
  10. Buat kunci untuk akun layanan (file JSON). Klik pada akun layanan yang baru dibuat, pilih tab Keys, klik Add Key dan pilih JSON. Simpan file JSON ini dengan aman.

Menggunakan gcloud CLI:

gcloud iam service-accounts create sts-transfer-account \
    --display-name="Storage Transfer Service Account"

gcloud projects add-iam-policy-binding [ID_PROYEK] \
    --member="serviceAccount:sts-transfer-account@[ID_PROYEK].iam.gserviceaccount.com" \
    --role="roles/storage.admin"

gcloud projects add-iam-policy-binding [ID_PROYEK] \
    --member="serviceAccount:sts-transfer-account@[ID_PROYEK].iam.gserviceaccount.com" \
    --role="roles/storage.objectAdmin"

gcloud iam service-accounts keys create key.json \
    --iam-account=sts-transfer-account@[ID_PROYEK].iam.gserviceaccount.com

Ganti [ID_PROYEK] dengan ID proyek GCP Anda.

Memberikan Izin Akun Layanan untuk Mengakses Bucket Sumber dan Tujuan:

Pastikan akun layanan memiliki izin untuk membaca dari bucket sumber dan menulis ke bucket tujuan.

Untuk bucket sumber:

gsutil iam ch serviceAccount:sts-transfer-account@[ID_PROYEK].iam.gserviceaccount.com:READER gs://[BUCKET_SUMBER]

Untuk bucket tujuan:

gsutil iam ch serviceAccount:sts-transfer-account@[ID_PROYEK].iam.gserviceaccount.com:WRITER gs://[BUCKET_TUJUAN]

Ganti [BUCKET_SUMBER] dan [BUCKET_TUJUAN] dengan nama bucket sumber dan tujuan Anda.

Langkah 4: Membuat Pekerjaan Transfer di STS

Sekarang Anda telah menyiapkan semua yang diperlukan, Anda dapat membuat pekerjaan transfer di STS.

Menggunakan Konsol Google Cloud:

  1. Buka Konsol Google Cloud.
  2. Navigasikan ke Storage > Storage Transfer.
  3. Klik Create transfer job.
  4. Pilih Google Cloud Storage bucket sebagai sumber.
  5. Masukkan nama bucket sumber.
  6. Pilih Google Cloud Storage bucket sebagai tujuan.
  7. Masukkan nama bucket tujuan.
  8. Konfigurasikan opsi transfer:
    • Transfer all objects: Mentransfer semua objek dari bucket sumber ke bucket tujuan.
    • Transfer objects added since: Mentransfer hanya objek yang ditambahkan sejak tanggal tertentu.
    • Delete objects unique to the source after the transfer completes: Menghapus objek dari bucket sumber setelah transfer berhasil. Berhati-hatilah dengan opsi ini.
  9. Konfigurasikan jadwal:
    • Run once now: Menjalankan pekerjaan transfer segera.
    • Schedule: Menjadwalkan pekerjaan transfer untuk dijalankan pada interval tertentu.
  10. Klik Create.

Menggunakan gcloud CLI:

gcloud transfer jobs create gs://[BUCKET_SUMBER] gs://[BUCKET_TUJUAN] \
    --description="Migrasi bucket dari [BUCKET_SUMBER] ke [BUCKET_TUJUAN]" \
    --schedule-start-date=[TANGGAL] \
    --schedule-end-date=[TANGGAL] \
    --schedule-frequency=daily \
    --transfer-options="delete-objects-unique-in-source=false,overwrite-objects-already-existing-in-sink=true" \
    --status=ENABLED \
    --credentials-file=key.json

Ganti:

  • [BUCKET_SUMBER] dengan nama bucket sumber.
  • [BUCKET_TUJUAN] dengan nama bucket tujuan.
  • [TANGGAL] dengan tanggal mulai dan akhir jadwal (format: YYYY-MM-DD).
  • key.json dengan path ke file kunci akun layanan Anda.

Langkah 5: Memantau Pekerjaan Transfer

Setelah pekerjaan transfer dibuat, Anda dapat memantau kemajuannya di STS.

Menggunakan Konsol Google Cloud:

  1. Buka Konsol Google Cloud.
  2. Navigasikan ke Storage > Storage Transfer.
  3. Klik pada pekerjaan transfer yang ingin Anda pantau.
  4. Tinjau metrik transfer, seperti objek yang ditransfer, byte yang ditransfer, dan kesalahan.

Menggunakan gcloud CLI:

gcloud transfer jobs describe [NAMA_PEKERJAAN]

Ganti [NAMA_PEKERJAAN] dengan nama pekerjaan transfer Anda.

Anda dapat melacak kemajuan transfer dan mengidentifikasi potensi kesalahan. STS memberikan log detail yang dapat membantu memecahkan masalah.

Langkah 6: Memverifikasi Transfer Data

Setelah pekerjaan transfer selesai, sangat penting untuk memverifikasi bahwa semua data telah ditransfer dengan benar.

Metode untuk Memverifikasi Integritas Data:

  • Menggunakan Hash MD5 atau CRC32C: Hitung hash MD5 atau CRC32C objek di bucket sumber dan tujuan dan bandingkan.
  • Membandingkan Jumlah Objek dan Ukuran: Bandingkan jumlah objek dan total ukuran bucket sumber dan tujuan.
  • Contoh Periksa Objek: Unduh beberapa objek dari kedua bucket dan pastikan isinya sama.

Menggunakan `gsutil rsync` untuk Verifikasi:

Anda dapat menggunakan perintah `gsutil rsync` dengan opsi `-n` (run dry) untuk memverifikasi apakah ada perbedaan antara bucket sumber dan tujuan tanpa benar-benar menyalin data. Perintah ini mencetak daftar file yang akan disalin atau dihapus.

gsutil rsync -n -r gs://[BUCKET_SUMBER] gs://[BUCKET_TUJUAN]

Jika outputnya kosong, artinya bucket sumber dan tujuan sinkron.

Langkah 7: Mengubah Lalu Lintas Aplikasi ke Bucket Baru

Setelah Anda memverifikasi bahwa semua data telah ditransfer dengan benar, Anda dapat mengalihkan lalu lintas aplikasi Anda ke bucket baru.

Strategi untuk Mengalihkan Lalu Lintas Secara Bertahap:

  • Peralihan Bertahap: Mengalihkan sebagian kecil lalu lintas ke bucket baru dan secara bertahap meningkatkan persentase dari waktu ke waktu.
  • Pengalihan Blue/Green: Menyiapkan lingkungan terpisah menggunakan bucket baru dan mengalihkan semua lalu lintas ke lingkungan baru sekaligus.
  • Menggunakan DNS atau Load Balancer: Menggunakan DNS atau load balancer untuk mengalihkan lalu lintas ke bucket baru.

Pastikan untuk memantau aplikasi Anda setelah pengalihan untuk memastikan tidak ada masalah.

Langkah 8: Menghapus Bucket Sumber (Opsional)

Setelah Anda mengalihkan semua lalu lintas ke bucket baru dan memverifikasi bahwa aplikasi Anda berfungsi dengan benar, Anda dapat menghapus bucket sumber.

Pertimbangan Keamanan Sebelum Menghapus Bucket:

  • Pastikan Tidak Ada Data yang Hilang: Verifikasi kembali bahwa semua data telah ditransfer ke bucket tujuan sebelum menghapus bucket sumber.
  • Pertimbangkan Cadangan: Pertimbangkan untuk membuat cadangan bucket sumber sebelum menghapusnya.
  • Perlindungan Penghapusan Bucket: Aktifkan perlindungan penghapusan bucket untuk mencegah penghapusan yang tidak disengaja.

Untuk mengaktifkan perlindungan penghapusan bucket, gunakan perintah berikut:

gsutil lifecycle set lifecycle.json gs://[BUCKET_SUMBER]

Dimana `lifecycle.json` berisi aturan siklus hidup yang mencegah penghapusan objek dalam bucket selama periode waktu tertentu.

Untuk menghapus bucket, gunakan perintah berikut:

gsutil rm -r gs://[BUCKET_SUMBER]

PERINGATAN: Tindakan ini tidak dapat diurungkan. Pastikan Anda menghapus bucket yang benar.

Praktik Terbaik dan Pertimbangan Tambahan

  • Memperkirakan Waktu dan Biaya Transfer: Waktu dan biaya transfer akan bervariasi tergantung pada ukuran data Anda, lokasi bucket Anda, dan pengaturan konfigurasi Anda. Gunakan Kalkulator Harga Google Cloud untuk memperkirakan biaya.
  • Mengoptimalkan Kinerja Transfer: Anda dapat meningkatkan kinerja transfer dengan menyesuaikan pengaturan konkurensi di STS.
  • Menangani Objek Besar dan File Terkompresi: STS dapat menangani objek besar dan file terkompresi. Pastikan Anda memiliki sumber daya yang cukup yang tersedia untuk transfer.
  • Menggunakan Filter Transfer: Anda dapat menggunakan filter transfer untuk mentransfer subset objek. Ini dapat berguna jika Anda hanya perlu memindahkan data tertentu.
  • Mengelola Metadata dan Kontrol Akses: STS menyalin metadata dan kontrol akses bersama dengan data. Pastikan kontrol akses sudah dikonfigurasi dengan benar di bucket tujuan.

Keamanan

Keamanan adalah aspek terpenting dari penggantian nama dan migrasi bucket GCS. Pertimbangkan langkah-langkah keamanan berikut:

  • Kontrol Akses: Gunakan kontrol akses dan kebijakan IAM untuk mengamankan bucket GCS Anda. Berikan hak istimewa paling sedikit yang diperlukan kepada pengguna dan akun layanan.
  • Enkripsi: Enkripsi data dalam transit dan saat istirahat. GCS menyediakan opsi enkripsi default dan opsi enkripsi yang dikelola pelanggan.
  • Rotasi Kunci Enkripsi: Putar kunci enkripsi Anda secara teratur untuk meningkatkan keamanan.

Pemecahan Masalah

Selama proses penggantian nama dan migrasi bucket GCS, Anda mungkin mengalami masalah. Berikut adalah beberapa masalah umum dan solusinya:

  • Masalah Konektivitas Jaringan: Pastikan Anda memiliki koneksi jaringan yang stabil dan bahwa firewall Anda tidak memblokir koneksi ke GCS.
  • Masalah Izin: Verifikasi bahwa akun layanan STS memiliki izin yang diperlukan untuk mengakses bucket sumber dan tujuan.
  • Kesalahan Transfer: Tinjau log STS untuk kesalahan transfer. Perbaiki kesalahan apa pun dan coba lagi transfer.

Kesimpulan

Mengganti nama atau memigrasikan bucket GCS adalah tugas yang kompleks tetapi penting. Dengan mengikuti langkah-langkah yang diuraikan dalam artikel ini dan menggunakan Storage Transfer Service (STS), Anda dapat memigrasikan data Anda dengan andal dan efisien. Ingatlah untuk merencanakan proses migrasi Anda dengan hati-hati, memverifikasi data Anda setelah transfer, dan memperbarui konfigurasi aplikasi Anda. Dengan perencanaan yang tepat, Anda dapat meminimalkan downtime dan memastikan transisi yang mulus.

Storage Transfer Service adalah alat yang hebat untuk mengelola data Anda di Google Cloud Storage. Dengan memahami cara menggunakannya secara efektif, Anda dapat memastikan bahwa data Anda selalu berada di tempat yang tepat dan tersedia saat Anda membutuhkannya.

“`

omcoding

Leave a Reply

Your email address will not be published. Required fields are marked *