Transfer dari Amazon S3 dapat menggunakan distribusi Amazon CloudFront sebagai jalur egress.
Transfer data melalui CloudFront dapat memperoleh manfaat dari biaya egress AWS yang lebih rendah dibandingkan dengan transfer langsung dari S3. Lihat harga CloudFront dan biaya egress S3 untuk mengetahui detailnya.Menggunakan CloudFront sebagai jalur egress tidak akan mengekspos objek S3 Anda ke publik. Lihat Apakah penggunaan CloudFront mengekspos objek saya ke publik?
Ringkasan
Untuk mentransfer data S3 melalui CloudFront, Anda harus mengikuti langkah-langkah berikut:
- Mengonfigurasi izin IAM
- Mengonfigurasi akses ke bucket S3 Anda
- Membuat distribusi CloudFront untuk bucket S3 Anda
- Membuat tugas transfer
Mengonfigurasi izin IAM
Ikuti petunjuk di bagian Mengonfigurasi akses ke sink: Cloud Storage untuk memberikan izin Google Cloud yang diperlukan pada bucket tujuan.
Mengonfigurasi akses ke bucket S3 Anda
Ikuti petunjuk di bagian Mengonfigurasi akses ke sumber: Amazon S3 untuk mengonfigurasi akses ke data Anda di Amazon S3.
Membuat distribusi CloudFront untuk bucket S3 Anda
- Di akun AWS Anda, buka CloudFront.
- Klik Create a CloudFront distribution.
- Di bagian Origin domain, pilih bucket S3 Anda.
- Jalur origin harus dibiarkan kosong.
- Setujui Origin name yang diisi otomatis atau tentukan nilai Anda sendiri.
- Di bagian Origin access, pilih Public. Tindakan ini tidak membuat bucket Anda menjadi publik; melainkan menunjukkan kepada CloudFront bahwa tidak ada mekanisme akses yang harus dikonfigurasi.
- Di bagian Cache key and origin requests:
- Untuk Cache policy, pilih CachingDisabled. Hal ini mencegah CloudFront meng-cache permintaan dan menyajikannya kepada penonton yang tidak diautentikasi.
- Untuk Origin request policy, pilih AllViewerExceptHostHeader. Hal ini memungkinkan CloudFront meneruskan header autentikasi ke S3, sehingga Storage Transfer Service dapat mengakses bucket Anda dengan kredensial keamanan Anda.
- Di bagian firewall aplikasi web (WAF), pilih Jangan aktifkan.
- Jika perlu, pilih Price class. Storage Transfer Service memilih worker pool berdasarkan region bucket sumber, sehingga harga CloudFront dikenakan di region tersebut. Untuk mendapatkan harga terendah, pastikan bucket sumber Anda berada di AS atau Eropa, atau pilih Use only North America and Europe sebagai Price class di CloudFront.
Klik Create CloudFront distribution.
Setelah berhasil dibuat, halaman detail distribusi CloudFront akan ditampilkan.
Catat nama domain Distribusi. Contoh:
https://dy1h2n3l4ob56.cloudfront.net. Jika halaman detail tidak menyertakan protokolhttps://di depan nama domain distribusi, Anda harus menambahkannya sendiri saat membuat tugas transfer.
Membuat tugas transfer
Transfer melalui distribusi CloudFront didukung di konsol Google Cloud dan REST API.
Jangan menyertakan informasi sensitif seperti informasi identitas pribadi (PII) atau data keamanan dalam nama tugas transfer Anda. Nama resource dapat disebarkan ke nama resource Google Cloud lainnya dan dapat diekspos ke sistem internal Google di luar project Anda.Konsol Google Cloud
Untuk membuat transfer menggunakan konsol Google Cloud , ikuti petunjuk untuk membuat transfer.
Saat diminta memasukkan domain CloudFront, masukkan nama domain distribusi yang Anda catat di bagian sebelumnya. Anda juga dapat menemukan nilai ini
yang tercantum di bagian CloudFront pada konsol Amazon Web Services. Formatnya adalah https://dy1h2n3l4ob56.cloudfront.net.
REST API
Untuk membuat transfer menggunakan REST API, ikuti contoh di halaman Membuat transfer.
Tentukan nama domain distribusi sebagai nilai kolom transferSpec.awsS3DataSource.cloudfrontDomain:
"transferSpec": {
"awsS3DataSource": {
"bucketName": "AWS_SOURCE_NAME",
"cloudfrontDomain": "https://dy1h2n3l4ob56.cloudfront.net",
"awsAccessKey": {
"accessKeyId": "AWS_ACCESS_KEY_ID",
"secretAccessKey": "AWS_SECRET_ACCESS_KEY"
}
},
...
}
Pemecahan masalah
Error AuthorizationHeaderMalformed
Jika Anda mengalami error AuthorizationHeaderMalformed yang menentukan ketidakcocokan region (misalnya, the region 'Location A' is wrong; expecting
'Location B'), kemungkinan hal ini disebabkan oleh konfigurasi CloudFront yang tidak didukung.
Error ini terjadi jika Anda menggunakan satu distribusi CloudFront untuk mengarahkan beberapa bucket S3 yang berada di region AWS yang berbeda.
Untuk mengatasi masalah ini, pastikan setiap distribusi CloudFront mengarah ke bucket S3 hanya di satu region AWS. Jika Anda memiliki bucket S3 di berbagai region, buat distribusi CloudFront terpisah untuk setiap region.
Pertanyaan umum (FAQ)
Apakah penggunaan CloudFront akan mengekspos objek saya ke publik?
Tidak. Jika Anda telah mengikuti langkah-langkah konfigurasi di halaman ini, objek Anda tidak akan terekspos ke publik.
- Cloudfront tidak memiliki akses langsung ke objek S3 Anda.
- Pengguna akan menerima error
permission deniedjika mereka mencoba mengakses objek Anda, baik secara langsung maupun melalui CloudFront (jika bucket Anda bersifat pribadi). - Storage Transfer Service menandatangani permintaan ke CloudFront menggunakan kredensial yang Anda berikan dalam tugas transfer, sehingga kami dapat mendownload objek Anda dengan aman seolah-olah kami mendownload langsung dari S3. Hal ini berfungsi karena
setelan penerusan header
AllViewerExceptHostHeader.