Buat CloudWatch Aturan peristiwa 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.

Buat CloudWatch Aturan peristiwa untuk sumber Amazon S3 (CLI)

Untuk membuatAWS CloudTrailjejak dan mengaktifkan pencatatan

Untuk menggunakanAWS CLIuntuk membuat jejak, memanggilcreate-trailperintah, menentukan:

  • Nama jejak.

  • Ember tempat Anda telah menerapkan kebijakan bucket untukAWS CloudTrail.

Untuk informasi selengkapnya, lihatMembuat jejak denganAWSantarmuka baris perintah.

  1. Memiilihcreate-trailperintah dan termasuk--namedan--s3-bucket-nameparameter.

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

    Perintah berikut menggunakan--namedan--s3-bucket-nameuntuk membuat jejak bernamamy-traildan ember bernamamyBucket.

    aws cloudtrail create-trail --name my-trail --s3-bucket-name myBucket
  2. Memiilihstart-loggingperintah dan termasuk--nameparameter.

    Mengapa saya membuat perubahan ini? Perintah ini memulai CloudTrail logging untuk bucket sumber Anda dan mengirimkan acara ke CloudWatch Peristiwa.

    Contoh:

    Perintah berikut menggunakan--nameuntuk mulai log pada jejak bernamamy-trail.

    aws cloudtrail start-logging --name my-trail
  3. Memanggilput-event-selectorsperintah dan termasuk--trail-namedan--event-selectorsparameter. Gunakan pemilih acara untuk menentukan bahwa Anda ingin jejak Anda mencatat peristiwa data untuk bucket sumber Anda dan mengirim acara ke Amazon CloudWatch Acara aturan.

    Mengapa saya membuat perubahan ini? Perintah ini menyaring peristiwa.

    Contoh:

    Perintah berikut menggunakan--trail-namedan--event-selectorsuntuk menentukan peristiwa data untuk bucket sumber dan awalan bernamamyBucket/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:::myBucket/myFolder/file.zip"] }] }]'

Untuk membuat CloudWatch Aturan peristiwa dengan Amazon S3 sebagai sumber kejadian dan CodePipeline sebagai target dan menerapkan kebijakan izin

  1. Izin hibah untuk Amazon CloudWatch Peristiwa untuk digunakan CodePipeline untuk memanggil aturan. Untuk informasi selengkapnya, lihatMenggunakan Kebijakan Berbasis Sumber Daya untuk Amazon CloudWatch Peristiwa.

    1. Gunakan contoh berikut untuk membuat kebijakan kepercayaan untuk memungkinkan CloudWatch Peristiwa untuk mengasumsikan peran layanan. NamatrustpolicyforCWE.json.

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

      Mengapa saya membuat perubahan ini? Menambahkan kebijakan kepercayaan ini ke peran menciptakan izin untuk CloudWatch Peristiwa.

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

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:StartPipelineExecution" ], "Resource": [ "arn:aws:codepipeline:us-west-2:80398EXAMPLE:MyFirstPipeline" ] } ] }
    4. Gunakan perintah berikut untuk melampirkanCodePipeline-Permissions-Policy-for-CWEKebijakan izin untukRole-for-MyRuleperan yang Anda buat.

      aws iam put-role-policy --role-name Role-for-MyRule --policy-name CodePipeline-Permissions-Policy-For-CWE --policy-document file://permissionspolicyforCWE.json
  2. Memanggilput-ruleperintah dan termasuk--name,--event-pattern, dan--role-arnparameter.

    Contoh perintah 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\":[\"my-bucket\"],\"key\":[\"my-key\"]}}} --role-arn "arn:aws:iam::ACCOUNT_ID:role/Role-for-MyRule"
  3. Untuk menambahkan CodePipeline sebagai target, memanggilput-targetsperintah dan termasuk--ruledan--targetsparameter.

    Perintah berikut menentukan bahwa untuk aturan bernamaMyS3SourceRule, targetIdterdiri dari nomor satu, menunjukkan bahwa dalam daftar target untuk aturan, ini adalah target 1. Perintah ini juga menentukan contohARNuntuk alur. Pipa dimulai ketika sesuatu berubah dalam repositori.

    aws events put-targets --rule MyS3SourceRule --targets Id=1,Arn=arn:aws:codepipeline:us-west-2:80398EXAMPLE:TestPipeline

Untuk mengedit parameter PollForSourceChanges pipeline

penting

Bila Anda membuat alur dengan metode ini,PollForSourceChangesparameter default ke true jika tidak secara eksplisit diatur ke false. Ketika Anda menambahkan deteksi perubahan berbasis peristiwa, Anda harus menambahkan parameter ke output Anda dan mengaturnya ke false untuk menonaktifkan polling. Jika tidak, pipa Anda dimulai dua kali untuk perubahan sumber tunggal. Untuk detailnya, lihat Pengaturan default untuk PollForSourceChanges parameter.

  1. Jalankanget-pipelineperintah untuk menyalin struktur pipa ke dalam file JSON. Misalnya, untuk pipa bernamaMyFirstPipeline, jalankan perintah berikut:

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

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

  2. Buka file JSON di editor teks biasa dan edit tahap sumber dengan mengubahPollForSourceChangesparameter untuk bucket bernamastorage-bucketkepadafalse, seperti yang ditunjukkan dalam contoh ini.

    Mengapa saya membuat perubahan ini? Mengatur parameter ini kefalsemematikan pemeriksaan berkala sehingga Anda dapat menggunakan deteksi perubahan berbasis peristiwa saja.

    "configuration": { "S3Bucket": "storage-bucket", "PollForSourceChanges": "false", "S3ObjectKey": "index.zip" },
  3. Jika Anda bekerja dengan struktur pipa diambil menggunakanget-pipelineperintah, Anda harus menghapusmetadatabaris dari file JSON. Jika tidak,update-pipelineperintah tidak dapat menggunakannya. Hapus"metadata": { }garis dan"created","pipelineARN", dan"updated"bidang.

    Misalnya, hapus baris berikut dari struktur:

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

    Simpan file.

  4. Untuk menerapkan perubahan Anda, jalankanupdate-pipelineperintah, menentukan pipa JSON file:

    penting

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

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

    Perintah ini mengembalikan seluruh struktur pipa diedit.

    catatan

    Parameterupdate-pipelineperintah berhenti pipa. Jika revisi sedang dijalankan melalui pipa ketika Anda menjalankanupdate-pipelineperintah, yang menjalankan dihentikan. Anda harus secara manual memulai pipa untuk menjalankan revisi melalui pipa yang diperbarui. Gunakanstart-pipeline-executionperintah untuk secara manual memulai pipa Anda.