View a markdown version of this page

Buat integrasi acara S3 untuk menyalin file secara otomatis dari bucket Amazon S3 - Amazon Redshift

Amazon Redshift tidak akan lagi mendukung penggunaan Python UDF setelah 30 Juni 2026. Kami akan mulai menegakkannya secara bertahap. Untuk informasi lebih lanjut tentang detail opsi akhir masa pakai dan migrasi Python, lihat posting blog yang diterbitkan pada 30 Juni 2025.

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

Buat integrasi acara S3 untuk menyalin file secara otomatis dari bucket Amazon S3

catatan

Rilis pratinjau untuk salin otomatis telah berakhir. Akibatnya, cluster pratinjau akan dihapus secara otomatis 30 hari setelah akhir periode pratinjau. Jika Anda berencana untuk terus menggunakan salin otomatis, sebaiknya buat ulang pekerjaan salin otomatis yang ada di cluster Amazon Redshift lain. Upgrade cluster pratinjau ke versi Amazon Redshift terbaru tidak didukung.

Anda dapat menggunakan pekerjaan penyalinan otomatis untuk memuat data ke tabel Amazon Redshift dari file yang disimpan di Amazon S3. Amazon Redshift mendeteksi ketika file Amazon S3 baru ditambahkan ke jalur yang ditentukan dalam perintah COPY Anda. Perintah COPY kemudian dijalankan secara otomatis tanpa Anda harus membuat pipeline penyerapan data eksternal. Amazon Redshift melacak file mana yang telah dimuat. Amazon Redshift menentukan jumlah file yang digabungkan bersama per perintah COPY. Anda dapat melihat perintah COPY yang dihasilkan dalam tampilan sistem.

Langkah pertama untuk membuat COPY JOB otomatis adalah membuat integrasi acara S3. Saat file baru muncul di bucket sumber Amazon S3, Amazon Redshift kemudian mengelola pemuatan file ke database Anda menggunakan perintah COPY.

Prasyarat untuk membuat integrasi acara S3

Untuk mengatur integrasi acara s3 Anda, konfirmasikan prasyarat berikut telah selesai.

  • Bucket Amazon S3 Anda harus memiliki kebijakan bucket yang mengizinkan beberapa izin Amazon S3. Misalnya, kebijakan contoh berikut mengizinkan izin untuk bucket sumber daya amzn-s3-demo-bucket yang dihostingus-east-1. Baik bucket Amazon S3 dan integrasinya sama Wilayah AWS.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "Auto-Copy-Policy-01", "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": [ "s3:GetBucketNotification", "s3:PutBucketNotification", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket:*", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:redshift:us-east-1:111122223333:integration:*" }, "StringEquals": { "aws:SourceAccount": "111122223333" } } } ] }
  • Cluster target yang disediakan Amazon Redshift atau namespace Redshift Serverless Anda harus memiliki izin ke bucket. Konfirmasikan peran IAM yang terkait dengan cluster atau ruang nama tanpa server Anda memiliki kebijakan IAM yang memungkinkan izin yang tepat. Kebijakan harus mengizinkan baik s3:GetObject untuk sumber daya bucket seperti amzn-s3-demo-bucket dan s3:ListBucket untuk sumber daya bucket dan isinya sepertiamzn-s3-demo-bucket/*.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "AutoCopyReadId", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }

    Menambahkan kebijakan Anda ke peran IAM yang memiliki hubungan kepercayaan untuk peran tersebut adalah sebagai berikut.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "redshift.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

    Jika gudang data target Anda adalah cluster yang disediakan, Anda dapat mengaitkan peran IAM ke cluster yang disediakan menggunakan konsol Amazon Redshift, tab Izin klaster di detail cluster Anda. Untuk informasi tentang cara mengaitkan peran ke cluster yang disediakan, lihat Mengaitkan peran IAM dengan cluster di Panduan Manajemen Amazon Redshift.

    Jika gudang data target Anda adalah Redshift Serverless, Anda dapat mengaitkan peran IAM ke namespace tanpa server menggunakan konsol Redshift Serverless, tab Keamanan dan enkripsi di detail namespace Anda. Untuk informasi tentang cara mengaitkan peran ke namespace tanpa server Anda, lihat Memberikan izin ke Amazon Redshift Serverless di Panduan Manajemen Amazon Redshift.

  • Gudang data Amazon Redshift Anda juga harus memiliki kebijakan sumber daya yang memungkinkan bucket Amazon S3. Jika Anda menggunakan konsol Amazon Redshift, saat Anda membuat integrasi peristiwa s3, Amazon Redshift menyediakan opsi Per baiki agar saya menambahkan kebijakan ini ke gudang data Amazon Redshift Anda. Untuk memperbarui kebijakan sumber daya sendiri, Anda dapat menggunakan perintah put-resour AWS CLI ce-policy. Misalnya, untuk melampirkan kebijakan sumber daya ke cluster yang disediakan Amazon Redshift untuk integrasi peristiwa S3 dengan bucket Amazon S3, jalankan AWS CLI perintah yang serupa dengan berikut ini. Contoh berikut menunjukkan kebijakan untuk namespace cluster yang disediakan di akun pengguna us-east-1 Wilayah AWS untuk. 123456789012 Ember itu diberi namaamzn-s3-demo-bucket.

    aws redshift put-resource-policy \ --policy file://rs-rp.json \ --resource-arn "arn:aws:redshift: us-east-1:123456789012:namespace/cc4ffe56-ad2c-4fd1-a5a2-f29124a56433"

    Di mana rs-rp.json berisi:

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "redshift:AuthorizeInboundIntegration", "Resource": "arn:aws:redshift:us-east-1:123456789012:namespace:cc4ffe56-ad2c-4fd1-a5a2-f29124a56433", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-bucket", "aws:SourceAccount": 111122223333 } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/myRedshiftRole" }, "Action": "redshift:CreateInboundIntegration", "Resource": "arn:aws:redshift:us-east-1:123456789012:namespace:cc4ffe56-ad2c-4fd1-a5a2-f29124a56433", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-bucket", "aws:SourceAccount": 111122223333 } } } ] }

    Untuk melampirkan kebijakan sumber daya ke namespace Redshift Serverless Anda untuk integrasi peristiwa S3 dengan bucket Amazon S3, jalankan AWS CLI perintah yang serupa dengan berikut ini. Contoh berikut menunjukkan kebijakan untuk namespace tanpa server di us-east-1 Wilayah AWS untuk akun pengguna. 123456789012 Ember itu diberi namaamzn-s3-demo-bucket.

    aws redshift put-resource-policy \ --policy file://rs-rp.json \ --resource-arn "arn:aws:redshift-serverless:us-east-1:123456789012:namespace/namespace-1"

    Di mana rs-rp.json berisi:

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "redshift:AuthorizeInboundIntegration", "Resource": "arn:aws:redshift-serverless:us-east-1:123456789012:namespace/namespace-1", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-bucket", "aws:SourceAccount": 111122223333 } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/myUser" }, "Action": "redshift:CreateInboundIntegration", "Resource": "arn:aws:redshift-serverless:us-east-1:123456789012:namespace/namespace-1", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-bucket", "aws:SourceAccount": 111122223333 } } } ] }

Membuat integrasi acara S3

Untuk mengatur pekerjaan penyalinan Anda, pertama-tama Anda menentukan integrasi peristiwa S3.

Amazon Redshift console
Cara membuat integrasi acara Amazon S3 di konsol Amazon Redshift
  1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon Redshift di https://console.aws.amazon.com/redshiftv2/.

  2. Di panel navigasi kiri, pilih integrasi acara S3.

  3. Pilih Buat integrasi acara Amazon S3 untuk membuka wizard untuk membuat dan integrasi acara S3 untuk digunakan dengan salin otomatis. Bucket Amazon S3 sumber Anda dan gudang data Amazon Redshift target harus berada di tempat yang sama Wilayah AWS. Tentukan informasi berikut saat melalui langkah-langkah untuk membuat integrasi:

    • Nama integrasi — Merupakan pengidentifikasi unik di semua integrasi yang dimiliki oleh Anda Akun AWS saat ini Wilayah AWS.

    • Deskripsi — Adalah teks yang menjelaskan integrasi acara Amazon S3 untuk referensi nanti.

    • Bucket Source S3 - Apakah bucket Amazon S3 saat ini Akun AWS dan Wilayah AWS yang merupakan sumber penyerapan data ke Amazon Redshift.

    • Gudang data Amazon Redshift — Adalah cluster yang disediakan Amazon Redshift target atau kelompok kerja Redshift Serverless yang menerima data dari integrasi.

      Jika target Amazon Redshift Anda ada di akun yang sama, Anda dapat memilih target. Jika target berada di akun yang berbeda, Anda menentukan gudang data Amazon Redshift AR N. Target harus memiliki kebijakan sumber daya dengan prinsipal resmi dan sumber integrasi. Jika Anda tidak memiliki kebijakan sumber daya yang benar pada target dan target Anda berada di akun yang sama, Anda dapat memilih opsi Per baiki untuk saya untuk menerapkan kebijakan sumber daya secara otomatis selama proses integrasi buat. Jika target Anda berbeda Akun AWS, Anda perlu menerapkan kebijakan sumber daya di gudang Amazon Redshift secara manual.

  4. Masukkan hingga 50 K unci tag dan dengan Nilai opsional — Untuk memberikan metadata tambahan tentang integrasi.

  5. Halaman ulasan ditampilkan di mana Anda dapat memilih Buat integrasi acara S3.

AWS CLI

Untuk membuat integrasi acara Amazon S3 menggunakan AWS CLI, gunakan create-integration perintah dengan opsi berikut:

  • integration-name – Tentukan nama untuk integrasi.

  • source-arn— Tentukan ARN dari bucket sumber Amazon S3.

  • target-arn— Tentukan namespace ARN dari cluster yang disediakan Amazon Redshift atau target kelompok kerja Redshift Serverless.

Contoh berikut membuat integrasi dengan memberikan nama integrasi, sumber ARN, dan target ARN. Integrasi tidak dienkripsi.

aws redshift create-integration \ --integration-name s3-integration \ --source-arn arn:aws:s3:us-east-1::s3-example-bucket \ --target-arn arn:aws:redshift:us-east-1:123456789012:namespace:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222 { "IntegrationArn": "arn:aws:redshift:us-east-1:123456789012:integration:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "IntegrationName": "s3-integration", "SourceArn": "arn:aws:s3:::s3-example-bucket", "SourceType": "s3-event-notifications", "TargetArn": "arn:aws:redshift:us-east-1:123456789012:namespace:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "Status": "creating", "Errors": [], "CreateTime": "2024-10-09T19:08:52.758000+00:00", "Tags": [] }

Anda juga dapat menggunakan AWS CLI perintah berikut untuk mengelola integrasi acara S3 Anda.

  • delete-integration— Tentukan integrasi ARN untuk menghapus integrasi peristiwa S3.

  • modify-integration— Tentukan integrasi ARN untuk mengubah nama atau deskripsi (atau keduanya) integrasi peristiwa S3.

  • describe-integrations— Tentukan integrasi ARN untuk melihat properti integrasi peristiwa S3.

Lihat Panduan Amazon Redshift CLI untuk informasi selengkapnya tentang perintah ini.

Amazon Redshift kemudian membuat integrasi peristiwa S3 dengan sumber dan target terkait, status, dan informasi tentang status pekerjaan penyalinan otomatis terkait. Anda dapat melihat informasi tentang integrasi acara S3 di konsol Amazon Redshift dengan memilih integrasi acara S3, dan memilih integrasi untuk menampilkan detailnya. Integrasi dipisahkan oleh yang dibuat di akun saya dan Dari akun lain. Daftar Di akun saya menunjukkan integrasi di mana sumber dan target berada di akun yang sama. Daftar Dari akun lain menunjukkan integrasi di mana sumbernya dimiliki oleh akun lain.

Jika Anda menghapus integrasi peristiwa S3, status COPY JOB yang sesuai berubah dari 1 (aktif) menjadi 0 (inactive/pending). Namun, COPY JOB yang sesuai tidak secara otomatis dihapus. Jika nanti Anda mencoba membuat COPY JOB dengan nama yang sama, mungkin ada konflik.

Membuat dan memantau COPY JOB

Setelah integrasi dibuat, pada halaman detail integrasi peristiwa S3 untuk integrasi yang Anda buat, pilih Buat pekerjaan penyalinan otomatis untuk membuka editor kueri Amazon Redshift v2 di mana Anda dapat membuat pekerjaan penyalinan otomatis untuk integrasi. Amazon Redshift mencocokkan bucket dalam klausa FROM dalam pernyataan COPY JOB CREATE dengan bucket yang digunakan dalam integrasi peristiwa S3. Untuk informasi tentang cara menggunakan editor kueri Amazon Redshift v2, lihat Meng kueri database menggunakan editor kueri Amazon Redshift v2 di Panduan Manajemen Amazon Redshift. Misalnya, jalankan perintah COPY berikut di query editor v2 untuk membuat COPY JOB otomatis yang cocok dengan bucket s3://amzn-s3-demo-bucket/staging-folder Amazon S3 dengan integrasi acara Amazon S3.

COPY public.target_table FROM 's3://amzn-s3-demo-bucket/staging-folder' IAM_ROLE 'arn:aws:iam::123456789012:role/MyLoadRoleName' JOB CREATE my_copy_job_name AUTO ON;

Anda mendefinisikan COPY JOB satu kali. Parameter yang sama digunakan untuk proses di masa mendatang.

Untuk menentukan dan mengelola COPY JOB, Anda harus memiliki izin. Untuk informasi tentang pemberian dan pencabutan izin pada COPY JOB, lihat HIBAH danMENCABUT. Untuk informasi selengkapnya tentang pemberian dan pencabutan izin cakupan untuk COPY JOB, lihat Memberikan izin bercakupan dan. Mencabut izin yang dicakup

Anda mengelola operasi pemuatan menggunakan opsi untuk CREATE, LIST, SHOW, DROP, ALTER, dan RUN. Untuk informasi selengkapnya, lihat SALIN PEKERJAAN.

Anda dapat menanyakan tampilan sistem untuk melihat status dan kemajuan COPY JOB. Tampilan disediakan sebagai berikut:

Untuk informasi tentang pemecahan masalah kesalahan integrasi peristiwa S3, lihatMemecahkan masalah integrasi peristiwa S3 dan kesalahan COPY JOB.

Untuk mendapatkan daftar file yang dimuat oleh COPY JOB, jalankan SQL berikut, tetapi pertama-tama ganti<job_id>:

SELECT job_id, job_name, data_source, copy_query, filename, status, curtime FROM sys_copy_job copyjob JOIN stl_load_commits loadcommit ON copyjob.job_id = loadcommit.copy_job_id WHERE job_id = <job_id>;

Pertimbangan saat membuat integrasi acara S3 untuk penyalinan otomatis

Pertimbangkan hal berikut saat menggunakan salin otomatis.

  • Anda dapat membuat maksimal 200 COPY JOBS untuk setiap cluster atau workgroup dalam sebuah Akun AWS.

  • Anda dapat membuat maksimal 50 integrasi acara S3 untuk setiap target Amazon Redshift.

  • Anda tidak dapat membuat integrasi peristiwa S3 dengan bucket Amazon S3 sumber yang memiliki titik (.) dalam nama bucket.

  • Anda hanya dapat membuat satu integrasi peristiwa S3 antara sumber dan target yang sama. Artinya, hanya ada satu integrasi peristiwa S3 antara bucket Amazon S3 dan gudang data Amazon Redshift pada satu waktu.

  • Anda tidak dapat memiliki notifikasi peristiwa yang ada untuk jenis peristiwa S3_OBJECT_CREATED yang ditentukan pada bucket Amazon S3 sumber. Namun, setelah integrasi peristiwa S3 dibuat, Anda dapat memperbarui pemberitahuan peristiwa bucket Amazon S3 dengan cakupan yang prefix/suffix lebih sempit. Dengan cara ini, Anda juga dapat mengonfigurasi S3_OBJECT_CREATED untuk target lain prefix/suffix ke target lain dan menghindari konflik dengan integrasi peristiwa S3. Jika Anda mengalami masalah karena penyalinan otomatis tidak berjalan seperti yang diharapkan, siapkan AWS CloudTrail log s3:PutBucketNotificationConfiguration tindakan pada bucket S3 Anda untuk kerangka waktu yang dimaksud saat Anda menghubungi AWS Dukungan.

Wilayah yang Didukung

Wilayah berikut tersedia untuk penyalinan otomatis.

Region Auto-copy
Africa (Cape Town) Available
Asia Pasifik (Hong Kong) Available
Asia Pasifik (Taipei) Available
Asia Pasifik (Tokyo) Available
Asia Pasifik (Seoul) Available
Asia Pasifik (Osaka) Available
Asia Pasifik (Mumbai) Available
Asia Pasifik (Hyderabad) Available
Asia Pasifik (Singapura) Available
Asia Pasifik (Sydney) Available
Asia Pasifik (Jakarta) Available
Asia Pacific (Melbourne) Available
Asia Pasifik (Malaysia) Available
Asia Pasifik (Selandia Baru) Tidak tersedia
Asia Pasifik (Thailand) Available
Kanada (Pusat) Available
Kanada Barat (Calgary) Available
Tiongkok (Beijing) Available
Tiongkok (Ningxia) Available
Eropa (Frankfurt) Available
Europe (Zurich) Available
Eropa (Stockholm) Available
Europe (Milan) Available
Eropa (Spanyol) Available
Eropa (Irlandia) Available
Eropa (London) Available
Eropa (Paris) Available
Israel (Tel Aviv) Available
Timur Tengah (UAE) Available
Timur Tengah (Bahrain) Available
Meksiko (Tengah) Available
Amerika Selatan (Sao Paulo) Available
AS Timur (Virginia Utara) Available
AS Timur (Ohio) Available
AS Barat (California Utara) Available
AS Barat (Oregon) Tersedia
AWS GovCloud (US-East) Tersedia
AWS GovCloud (US-West) Tersedia

Pertimbangan saat memulihkan target integrasi peristiwa S3

Saat Anda memulihkan namespace Amazon Redshift Serverless dari snapshot atau titik pemulihan ke namespace tanpa server yang sama, integrasi peristiwa S3 dan COPY JOB terkait akan dipertahankan secara otomatis. Pertimbangan berikut berlaku untuk instans Mac:

  • Memulihkan snapshot ke namespace yang berbeda tidak mempertahankan integrasi peristiwa S3.

  • Setelah pemulihan, Amazon Redshift secara otomatis mengidentifikasi file yang diunggah ke bucket Amazon S3 sumber setelah snapshot diambil. File apa pun yang ada di Amazon S3 yang belum dimuat akan dicerna secara otomatis. Selama proses ini, penyerapan file baru dari notifikasi peristiwa S3 terus bekerja secara paralel.

    catatan

    Setelah pemulihan, hanya file yang ada di bucket Amazon S3 yang memenuhi syarat untuk dicerna. File yang diunggah setelah snapshot diambil dan kemudian dihapus sebelum pemulihan selesai tidak dicerna.

  • Jika integrasi peristiwa S3 dibuat setelah snapshot diambil, integrasi memasuki NEEDS_ATTENTION status setelah pemulihan. Untuk mengatasi masalah ini, Anda dapat memulihkan dari snapshot yang lebih baru yang menyertakan integrasi, atau menghapus integrasi.

  • Jika integrasi peristiwa S3 dihapus setelah snapshot diambil, integrasi tidak dipulihkan. Status COPY JOB yang sesuai berubah menjadiPENDING. Anda dapat membuat integrasi baru ke bucket Amazon S3 yang sama dan membuat ulang COPY JOB. File yang ditambahkan ke S3 antara waktu snapshot dan waktu COPY JOB dibuat ulang tidak dapat dipulihkan atau dicerna kembali. Untuk mengidentifikasi file-file ini, periksa waktu snapshot di konsol dan waktu penghapusan integrasi CloudTrail dan file yang tiba di bucket S3 antara waktu-waktu ini adalah file yang terlewatkan.

  • Jika COPY JOB diubah setelah snapshot diambil, namespace yang dipulihkan menggunakan COPY JOB dari snapshot. Amazon Redshift merekonsiliasi perbedaan apa pun dan memperbarui integrasi untuk mencerminkan konfigurasi COPY JOB yang dipulihkan.

  • Untuk memilih tidak mempertahankan integrasi peristiwa S3 selama pemulihan, hapus centang pada kotak Maintain Integrations pada halaman restore di, atau jika Anda menggunakan Konsol Manajemen AWS, setel --no-maintain-integration parameter saat memanggil operasi API restore-from-snapshot atau restore-from-recovery-point. AWS CLIhttps://docs.aws.amazon.com/redshift-serverless/latest/APIReference/API_RestoreFromRecoveryPoint.html Saat Anda memilih keluar, integrasi masuk ke FAILED status setelah pemulihan.

  • Fitur ini berlaku untuk Amazon Redshift Serverless hanya ketika dipulihkan ke namespace tanpa server yang sama. Pemulihan snapshot pada cluster yang disediakan tidak mempertahankan integrasi peristiwa S3.