View a markdown version of this page

Membuat EventBridge aturan untuk sumber Amazon S3 (CLI) - AWS CodePipeline

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

Membuat EventBridge aturan untuk sumber Amazon S3 (CLI)

Untuk membuat AWS CloudTrail melacak dan mengaktifkan logging

Untuk menggunakan AWS CLI untuk membuat jejak, panggil create-trail perintah, tentukan:

  • Nama jejaknya.

  • Bucket yang telah Anda terapkan kebijakan bucket AWS CloudTrail.

Untuk informasi selengkapnya, lihat Membuat jejak dengan antarmuka baris AWS perintah.

  1. Panggil create-trail perintah dan sertakan --s3-bucket-name parameter --name dan.

    Mengapa saya membuat perubahan ini? Ini membuat CloudTrail jejak yang diperlukan untuk bucket sumber S3 Anda.

    Perintah berikut menggunakan --name dan --s3-bucket-name untuk membuat jejak bernama my-trail dan bucket bernamaamzn-s3-demo-source-bucket.

    aws cloudtrail create-trail --name my-trail --s3-bucket-name amzn-s3-demo-source-bucket
  2. Panggil start-logging perintah dan sertakan --name parameter.

    Mengapa saya membuat perubahan ini? Perintah ini memulai CloudTrail logging untuk bucket sumber Anda dan mengirim acara ke EventBridge.

    Contoh:

    Perintah berikut digunakan --name untuk mulai mencatat pada jejak bernamamy-trail.

    aws cloudtrail start-logging --name my-trail
  3. Panggil put-event-selectors perintah dan sertakan --event-selectors parameter --trail-name dan. Gunakan pemilih peristiwa untuk menentukan bahwa Anda ingin jejak Anda mencatat peristiwa data untuk bucket sumber Anda dan mengirim peristiwa ke EventBridge aturan.

    Mengapa saya membuat perubahan ini? Perintah ini menyaring peristiwa.

    Contoh:

    Perintah berikut menggunakan --trail-name dan --event-selectors untuk menentukan peristiwa data untuk bucket sumber dan awalan bernamaamzn-s3-demo-source-bucket/myFolder.

    aws cloudtrail put-event-selectors --trail-name my-trail --event-selectors '[{ "ReadWriteType": "WriteOnly", "IncludeManagementEvents":false, "DataResources": [{ "Type": "AWS::S3::Object", "Values": ["arn:aws:s3:::amzn-s3-demo-source-bucket/myFolder/file.zip"] }] }]'
Untuk membuat EventBridge aturan dengan Amazon S3 sebagai sumber acara dan CodePipeline sebagai target dan menerapkan kebijakan izin
  1. Berikan izin EventBridge untuk digunakan CodePipeline untuk memanggil aturan. Untuk informasi selengkapnya, lihat Menggunakan kebijakan berbasis sumber daya untuk Amazon. EventBridge

    1. Gunakan contoh berikut untuk membuat kebijakan kepercayaan untuk memungkinkan EventBridge untuk mengambil peran layanan. Sebutkan itutrustpolicyforEB.json.

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. Gunakan perintah berikut untuk membuat Role-for-MyRule peran dan melampirkan kebijakan kepercayaan.

      Mengapa saya membuat perubahan ini? Menambahkan kebijakan kepercayaan ini ke peran akan menciptakan izin untuk EventBridge.

      aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json
    3. Buat kebijakan izin JSON, seperti yang ditunjukkan di sini untuk pipeline bernamaMyFirstPipeline. Beri nama kebijakan izinpermissionspolicyforEB.json.

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:StartPipelineExecution" ], "Resource": [ "arn:aws:codepipeline:us-west-2:111122223333:MyFirstPipeline" ] } ] }
    4. Gunakan perintah berikut untuk melampirkan kebijakan CodePipeline-Permissions-Policy-for-EB izin baru ke Role-for-MyRule peran yang Anda buat.

      aws iam put-role-policy --role-name Role-for-MyRule --policy-name CodePipeline-Permissions-Policy-For-EB --policy-document file://permissionspolicyforEB.json
  2. Panggil put-rule perintah dan sertakan --role-arn parameter --name--event-pattern,, dan.

    Perintah contoh berikut membuat aturan bernamaMyS3SourceRule.

    aws events put-rule --name "MyS3SourceRule" --event-pattern "{\"source\":[\"aws.s3\"],\"detail-type\":[\"AWS API Call via CloudTrail\"],\"detail\":{\"eventSource\":[\"s3.amazonaws.com\"],\"eventName\":[\"CopyObject\",\"PutObject\",\"CompleteMultipartUpload\"],\"requestParameters\":{\"bucketName\":[\"amzn-s3-demo-source-bucket\"],\"key\":[\"my-key\"]}}} --role-arn "arn:aws:iam::ACCOUNT_ID:role/Role-for-MyRule"
  3. Untuk menambahkan CodePipeline sebagai target, panggil put-targets perintah dan sertakan --targets parameter --rule dan.

    Perintah berikut menentukan bahwa untuk aturan bernamaMyS3SourceRule, target Id terdiri dari nomor satu, menunjukkan bahwa dalam daftar target untuk aturan, ini adalah target 1. Perintah ini juga menentukan contoh ARN untuk pipeline. Pipeline dimulai ketika sesuatu berubah di repositori.

    aws events put-targets --rule MyS3SourceRule --targets Id=1,Arn=arn:aws:codepipeline:us-west-2:80398EXAMPLE:TestPipeline
  4. (Opsional) Untuk mengonfigurasi transformator input dengan penggantian sumber untuk ID gambar tertentu, gunakan JSON berikut dalam perintah CLI Anda. Contoh berikut mengonfigurasi penggantian di mana:

    • Dalam actionName contoh ini, adalah nilai dinamis, didefinisikan pada pembuatan pipeline, bukan berasal dari peristiwa sumber. Source

    • Dalam revisionType contoh ini, adalah nilai dinamis, didefinisikan pada pembuatan pipeline, bukan berasal dari peristiwa sumber. S3_OBJECT_VERSION_ID

    • revisionValue, < revisionValue > dalam contoh ini, diturunkan dari variabel peristiwa sumber.

    { "Rule": "my-rule", "Targets": [ { "Id": "MyTargetId", "Arn": "ARN", "InputTransformer": { "InputPathsMap": { "revisionValue": "$.detail.object.version-id" }, "InputTemplate": { "sourceRevisions": { "actionName": "Source", "revisionType": "S3_OBJECT_VERSION_ID", "revisionValue": "<revisionValue>" } } } } ] }
Untuk mengedit PollForSourceChanges parameter pipeline
penting

Saat Anda membuat pipeline dengan metode ini, PollForSourceChanges parameter default menjadi true jika tidak secara eksplisit disetel ke false. Saat menambahkan deteksi perubahan berbasis peristiwa, Anda harus menambahkan parameter ke output dan menyetelnya ke false untuk menonaktifkan polling. Jika tidak, pipeline Anda dimulai dua kali untuk satu perubahan sumber. Lihat perinciannya di Pengaturan yang valid untuk PollForSourceChanges parameter.

  1. Jalan get-pipeline kan perintah untuk menyalin struktur pipeline ke file JSON. Misalnya, untuk pipeline bernamaMyFirstPipeline, jalankan perintah berikut:

    aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json

    Perintah ini tidak mengembalikan apa pun, tetapi file yang Anda buat akan muncul di direktori tempat Anda menjalankan perintah.

  2. Buka file JSON di editor teks biasa dan edit tahap sumber dengan mengubah PollForSourceChanges parameter untuk bucket bernama amzn-s3-demo-source-bucket tofalse, seperti yang ditunjukkan dalam contoh ini.

    Mengapa saya membuat perubahan ini? Menyetel parameter ini untuk false mematikan pemeriksaan berkala sehingga Anda dapat menggunakan deteksi perubahan berbasis peristiwa saja.

    "configuration": { "S3Bucket": "amzn-s3-demo-source-bucket", "PollForSourceChanges": "false", "S3ObjectKey": "index.zip" },
  3. Jika Anda bekerja dengan struktur pipa yang diambil menggunakan get-pipeline perintah, Anda harus menghapus metadata garis dari file JSON. Jika tidak, update-pipeline perintah tidak dapat menggunakannya. Hapus "metadata": { } garis dan "updated" bidang "created""pipelineARN",, dan.

    Misalnya, hapus baris berikut dari struktur:

    "metadata": { "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name", "created": "date", "updated": "date" },

    Simpan file tersebut.

  4. Untuk menerapkan perubahan Anda, jalankan update-pipeline perintah, tentukan file JSON pipeline:

    penting

    Pastikan untuk menyertakan file:// sebelum nama file. Diperlukan dalam perintah ini.

    aws codepipeline update-pipeline --cli-input-json file://pipeline.json

    Perintah ini mengembalikan seluruh struktur pipa yang diedit.

    catatan

    Per update-pipeline intah menghentikan pipa. Jika revisi dijalankan melalui pipeline saat Anda menjalankan update-pipeline perintah, proses tersebut dihentikan. Anda harus memulai pipeline secara manual untuk menjalankan revisi tersebut melalui pipeline yang diperbarui. Gunakan start-pipeline-execution perintah untuk memulai pipeline Anda secara manual.