

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

# Buat EventBridge aturan untuk sumber Amazon S3 (CLI)
<a name="create-cloudtrail-S3-source-cli"></a><a name="proc-cli-event-s3-createtrail"></a>

**Untuk membuat AWS CloudTrail jejak dan mengaktifkan logging**

Untuk menggunakan AWS CLI untuk membuat jejak, panggil **create-trail** perintah, dengan menentukan:
+ Nama jejak.
+ Bucket tempat Anda telah menerapkan kebijakan bucket AWS CloudTrail.

Untuk informasi selengkapnya, lihat [Membuat jejak dengan antarmuka baris AWS perintah](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail-by-using-the-aws-cli.html).

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

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

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

   ```
   aws cloudtrail create-trail --name my-trail --s3-bucket-name amzn-s3-demo-source-bucket
   ```

1. Panggil **start-logging** perintah dan sertakan `--name` parameternya.

   **Mengapa saya membuat perubahan ini?** Perintah ini memulai CloudTrail pencatatan untuk bucket sumber Anda dan mengirimkan acara ke EventBridge.

   Contoh:

   Perintah berikut digunakan `--name` untuk memulai logging pada jejak bernama`my-trail`.

   ```
   aws cloudtrail start-logging --name my-trail
   ```

1. Panggil **put-event-selectors** perintah dan sertakan `--event-selectors` parameter `--trail-name` dan. Gunakan penyeleksi peristiwa untuk menentukan bahwa jejak Anda ingin 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` menentukan peristiwa data untuk bucket sumber dan awalan bernama`amzn-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"] }] }]'
   ```<a name="proc-cli-event-s3-createrule"></a>

**Untuk membuat EventBridge aturan dengan Amazon S3 sebagai sumber peristiwa dan CodePipeline sebagai target dan menerapkan kebijakan izin**

1. Berikan izin EventBridge untuk digunakan CodePipeline untuk menjalankan aturan. Untuk informasi selengkapnya, lihat [Menggunakan kebijakan berbasis sumber daya](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-use-resource-based.html) untuk Amazon. EventBridge

   1. Gunakan contoh berikut untuk membuat kebijakan kepercayaan agar memungkinkan EventBridge untuk mengambil peran layanan. Nama itu`trustpolicyforEB.json`.

------
#### [ JSON ]

****  

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

------

   1. 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 membuat izin untuk EventBridge.

      ```
      aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json
      ```

   1. Buat kebijakan izin JSON, seperti yang ditunjukkan di sini untuk pipeline bernama. `MyFirstPipeline` Beri nama kebijakan `permissionspolicyforEB.json` izin.

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "codepipeline:StartPipelineExecution"
                  ],
                  "Resource": [
                      "arn:aws:codepipeline:us-west-2:111122223333:MyFirstPipeline"
                  ]
              }
          ]
      }
      ```

------

   1. 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
      ```

1. Panggil **put-rule** perintah dan sertakan`--name`,`--event-pattern`, dan `--role-arn` parameter.

   Perintah contoh berikut membuat aturan bernama`MyS3SourceRule`.

   ```
   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"
   ```

1. Untuk menambahkan CodePipeline sebagai target, panggil **put-targets** perintah dan sertakan `--targets` parameter `--rule` dan.

   Perintah berikut menentukan bahwa untuk aturan bernama`MyS3SourceRule`, 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
   ```

1. (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:
   + `Source`Dalam contoh ini, adalah nilai dinamis, yang didefinisikan pada pembuatan pipeline, bukan berasal dari peristiwa sumber. `actionName`
   + `S3_OBJECT_VERSION_ID`Dalam contoh ini, adalah nilai dinamis, yang didefinisikan pada pembuatan pipeline, bukan berasal dari peristiwa sumber. `revisionType`
   + The`revisionValue`, < *revisionValue* > dalam contoh ini, berasal 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>"
                       }
                   }
               }
           }
       ]
   }
   ```<a name="proc-cli-flag-s3"></a>

**Untuk mengedit PollForSourceChanges parameter pipeline**
**penting**  
Saat Anda membuat pipeline dengan metode ini, `PollForSourceChanges` parameter default ke true jika tidak secara eksplisit disetel ke false. Saat Anda menambahkan deteksi perubahan berbasis peristiwa, Anda harus menambahkan parameter ke output Anda dan mengaturnya 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](PollForSourceChanges-defaults.md).

1. Jalankan **get-pipeline** perintah untuk menyalin struktur pipa ke file JSON. Misalnya, untuk pipeline bernama`MyFirstPipeline`, 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.

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

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

   ```
   "configuration": {
       "S3Bucket": "amzn-s3-demo-source-bucket",
       "PollForSourceChanges": "false",
       "S3ObjectKey": "index.zip"
   },
   ```

1. Jika Anda bekerja dengan struktur pipa yang diambil menggunakan **get-pipeline** perintah, Anda harus menghapus `metadata` baris dari file JSON. Jika tidak, **update-pipeline** perintah 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 tersebut.

1. Untuk menerapkan perubahan Anda, jalankan **update-pipeline** perintah, dengan menentukan 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**  
**update-pipeline**Perintah menghentikan pipa. Jika revisi sedang dijalankan melalui pipeline saat Anda menjalankan **update-pipeline** perintah, proses itu dihentikan. Anda harus memulai pipeline secara manual untuk menjalankan revisi itu melalui pipeline yang diperbarui. Gunakan **start-pipeline-execution** perintah untuk memulai pipeline Anda secara manual.