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

Amazon Redshift tidak akan lagi mendukung pembuatan Python UDFs baru mulai 1 November 2025. Jika Anda ingin menggunakan Python UDFs, buat UDFs sebelum tanggal tersebut. Python yang ada UDFs akan terus berfungsi seperti biasa. Untuk informasi lebih lanjut, lihat posting blog.

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 salinan otomatis telah berakhir. Akibatnya, klaster pratinjau akan dihapus secara otomatis 30 hari setelah akhir periode pratinjau. Jika Anda berencana untuk terus menggunakan penyalinan otomatis, sebaiknya buat ulang pekerjaan penyalinan otomatis yang ada di klaster Amazon Redshift lainnya. Memutakhirkan klaster pratinjau ke versi Amazon Redshift terbaru tidak didukung.

Anda dapat menggunakan pekerjaan salin otomatis untuk memuat data ke tabel Amazon Redshift dari file yang disimpan di Amazon S3. Amazon Redshift mendeteksi kapan file Amazon S3 baru ditambahkan ke jalur yang ditentukan dalam perintah COPY Anda. Perintah COPY kemudian dijalankan secara otomatis tanpa Anda harus membuat pipeline konsumsi data eksternal. Amazon Redshift melacak file mana yang telah dimuat. Amazon Redshift menentukan jumlah file yang dikumpulkan 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 memungkinkan beberapa izin Amazon S3. Misalnya, kebijakan contoh berikut mengizinkan izin untuk bucket sumber daya amzn-s3-demo-bucket yang di-host. us-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": { "StringLike": { "aws:SourceArn": "arn:aws:redshift:us-east-1:123456789012:integration:*", "aws:SourceAccount": "123456789012" } } } ] }
  • Cluster yang disediakan Amazon Redshift target atau namespace Tanpa Server Redshift 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 sumber daya bucket seperti amzn-s3-demo-bucket dan s3:ListBucket untuk sumber daya bucket dan isinya sepertiamzn-s3-demo-bucket/*. s3:GetObject

    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/*" ] } ] }

    Tambahkan 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 klaster yang disediakan, Anda dapat mengaitkan peran IAM ke klaster yang disediakan menggunakan konsol Amazon Redshift, tab izin Cluster di detail klaster Anda. Untuk informasi tentang cara mengaitkan peran ke kluster yang disediakan, lihat Mengaitkan peran IAM dengan klaster di Panduan Manajemen Pergeseran Merah Amazon.

    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, lihat Memberikan izin ke Amazon Redshift Tanpa Server di Panduan Manajemen Pergeseran Merah Amazon.

  • 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 acara s3, Amazon Redshift menyediakan opsi Perbaiki agar saya menambahkan kebijakan ini ke gudang data Amazon Redshift Anda. Untuk memperbarui kebijakan sumber daya sendiri, Anda dapat menggunakan put-resource-policy AWS CLI perintah. Misalnya, untuk melampirkan kebijakan sumber daya ke kluster yang disediakan Amazon Redshift untuk integrasi peristiwa S3 dengan bucket Amazon S3, jalankan perintah yang serupa dengan berikut ini. AWS CLI Contoh berikut menunjukkan kebijakan untuk namespace klaster yang disediakan di akun untuk pengguna. us-east-1 Wilayah AWS 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" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012: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" } } } ] }

    Untuk melampirkan kebijakan sumber daya ke namespace Redshift Tanpa Server Anda untuk integrasi peristiwa S3 dengan bucket Amazon S3, jalankan perintah yang serupa dengan berikut ini. AWS CLI Contoh berikut menunjukkan kebijakan untuk namespace tanpa server di akun untuk pengguna. us-east-1 Wilayah AWS 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" } } }, { "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" } } } ] }

Buat integrasi acara S3

Untuk menyiapkan pekerjaan penyalinan Anda, pertama-tama Anda menentukan integrasi acara S3.

Amazon Redshift console
Untuk membuat integrasi acara Amazon S3 di konsol Amazon Redshift
  1. Masuk ke AWS Management Console 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 auto-copy. Bucket Amazon S3 sumber Anda dan gudang data Amazon Redshift target harus sama. Wilayah AWS Tentukan informasi berikut saat melalui langkah-langkah untuk membuat integrasi:

    • Nama integrasi - Adalah 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 S3 Sumber — Apakah bucket Amazon S3 Akun AWS saat ini Wilayah AWS dan yang merupakan sumber penyerapan data ke Amazon Redshift.

    • Gudang data Amazon Redshift — Apakah klaster yang disediakan Amazon Redshift target atau grup kerja Tanpa Server Redshift yang menerima data dari integrasi.

      Jika target Amazon Redshift Anda ada di akun yang sama, Anda dapat memilih target. Jika target ada di akun yang berbeda, Anda menentukan ARN gudang data Amazon Redshift. 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 Perbaiki 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 tag Kunci 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 ARN namespace dari cluster yang disediakan Amazon Redshift atau target grup kerja Redshift Serverless.

Contoh berikut menciptakan integrasi dengan memberikan nama integrasi, sumber ARN, dan ARN target. 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 ARN integrasi untuk menghapus integrasi acara S3.

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

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

Lihat Panduan CLI Amazon Redshift 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. Dalam daftar akun saya menunjukkan integrasi di mana sumber dan target berada di akun yang sama. Daftar Dari akun lain menunjukkan integrasi di mana sumber dimiliki oleh akun lain.

Jika Anda menghapus integrasi acara S3, status COPY JOB yang sesuai berubah dari 1 (aktif) menjadi 0 (tidak aktif/tertunda). Namun, COPY JOB yang sesuai tidak secara otomatis dijatuhkan. 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 acara S3 untuk integrasi yang Anda buat, pilih Buat pekerjaan penyalinan otomatis untuk membuka editor kueri Amazon Redshift v2 di mana Anda dapat membuat pekerjaan salin otomatis untuk integrasi. Amazon Redshift mencocokkan bucket dalam klausa FROM dalam pernyataan COPY JOB CREATE dengan bucket yang digunakan dalam integrasi acara S3. Untuk informasi tentang cara menggunakan editor kueri Amazon Redshift v2, lihat Menanyakan database menggunakan editor kueri Amazon Redshift v2 di Panduan Manajemen Pergeseran Merah Amazon. Misalnya, jalankan perintah COPY berikut di editor kueri v2 untuk membuat COPY JOB otomatis yang cocok dengan bucket Amazon S3 dengan s3://amzn-s3-demo-bucket/staging-folder integrasi peristiwa 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 future run.

Untuk menentukan dan mengelola COPY JOB, Anda harus memiliki izin. Untuk informasi tentang pemberian dan pencabutan izin pada COPY JOB, lihat dan. HIBAH MENCABUT Untuk informasi selengkapnya tentang pemberian dan pencabutan izin cakupan untuk COPY JOB, lihat dan. Memberikan izin terbatas Mencabut izin tercakup

Anda mengelola operasi pemuatan menggunakan opsi untuk CREATE, LIST, SHOW, DROP, ALTER, dan RUN jobs. 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, lihat. Memecahkan masalah integrasi acara S3 dan kesalahan COPY JOB

Untuk mendapatkan daftar file yang dimuat oleh COPY JOB, jalankan SQL berikut, tetapi ganti <job_id> terlebih dahulu:

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 salinan otomatis

Pertimbangkan hal berikut saat menggunakan auto-copy.

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

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

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

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

  • Anda tidak dapat memiliki pemberitahuan peristiwa yang ada untuk jenis acara S3_OBJECT_CREATED yang ditentukan pada bucket Amazon S3 sumber. Namun, setelah integrasi acara S3 dibuat, Anda dapat memperbarui notifikasi acara bucket Amazon S3 dengan cakupan prefix/suffix yang lebih sempit. Dengan cara ini, Anda juga dapat mengonfigurasi S3_OBJECT_CREATED target lain prefix/suffix ke target lain dan menghindari konflik dengan integrasi acara S3. Jika Anda mengalami masalah bahwa 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