Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Migrasikan pipeline polling untuk menggunakan deteksi perubahan berbasis peristiwa
AWS CodePipeline mendukung pengiriman berkelanjutan penuh ujung ke ujung, yang mencakup memulai pipeline Anda setiap kali ada perubahan kode. Ada dua cara yang didukung untuk memulai pipeline Anda setelah perubahan kode: deteksi perubahan berbasis peristiwa dan polling. Sebaiknya gunakan deteksi perubahan berbasis peristiwa untuk pipeline.
Gunakan prosedur yang disertakan di sini untuk memigrasikan (memperbarui) pipeline polling Anda ke metode deteksi perubahan berbasis peristiwa untuk pipeline Anda.
Metode deteksi perubahan berbasis peristiwa yang direkomendasikan untuk pipeline ditentukan oleh sumber pipa, seperti CodeCommit. Dalam hal ini, misalnya, pipeline polling perlu bermigrasi ke deteksi perubahan berbasis peristiwa dengan. EventBridge
Cara memigrasikan saluran pemungutan suara
Untuk memigrasikan pipeline polling, tentukan pipeline polling Anda, lalu tentukan metode deteksi perubahan berbasis peristiwa yang direkomendasikan:
-
Gunakan langkah-langkah di dalam Melihat pipeline polling di akun Anda untuk menentukan jalur polling Anda.
-
Dalam tabel, temukan jenis sumber pipeline Anda dan kemudian pilih prosedur dengan implementasi yang ingin Anda gunakan untuk memigrasikan pipeline polling Anda. Setiap bagian berisi beberapa metode untuk migrasi, seperti menggunakan CLI atau CloudFormation.
| Cara memigrasikan pipeline ke metode deteksi perubahan yang disarankan | ||
|---|---|---|
| Sumber pipa | Metode deteksi berbasis peristiwa yang direkomendasikan | Prosedur migrasi |
| AWS CodeCommit | EventBridge (direkomendasikan). | Lihat Migrasikan saluran polling dengan sumber CodeCommit. |
| Amazon S3 | EventBridge dan bucket diaktifkan untuk pemberitahuan acara (disarankan). | Lihat Migrasikan pipeline polling dengan sumber S3 diaktifkan untuk acara. |
| Amazon S3 | EventBridge dan sebuah AWS CloudTrail jejak. | Lihat Migrasikan pipeline polling dengan sumber dan CloudTrail jejak S3. |
| GitHub (melalui GitHub Aplikasi) | Koneksi (disarankan) | Lihat Migrasikan saluran polling untuk tindakan sumber GitHub (melalui aplikasi OAuth) ke koneksi. |
| GitHub (melalui aplikasi OAuth) | Webhook | Lihat Migrasikan pipeline polling untuk tindakan sumber GitHub (melalui aplikasi OAuth) ke webhook. |
penting
Untuk pembaruan konfigurasi tindakan pipeline yang berlaku, seperti pipeline dengan tindakan GitHub (melalui aplikasi OAuth), Anda harus secara eksplisit menyetel PollForSourceChanges parameter ke false dalam konfigurasi tindakan Sumber Anda untuk menghentikan pipeline dari polling. Akibatnya, dimungkinkan untuk secara keliru mengkonfigurasi pipeline dengan deteksi perubahan berbasis peristiwa dan polling dengan, misalnya, mengonfigurasi EventBridge aturan dan juga menghilangkan parameter. PollForSourceChanges Ini menghasilkan eksekusi pipeline duplikat, dan pipeline dihitung terhadap batas jumlah total pipeline polling, yang secara default jauh lebih rendah daripada pipeline berbasis peristiwa. Untuk informasi selengkapnya, lihat Kuota di AWS CodePipeline.
Melihat pipeline polling di akun Anda
Sebagai langkah pertama, gunakan salah satu skrip berikut untuk menentukan pipeline mana di akun Anda yang dikonfigurasi untuk polling. Ini adalah saluran pipa untuk bermigrasi ke deteksi perubahan berbasis peristiwa.
Melihat pipeline polling di akun Anda (skrip)
Ikuti langkah-langkah berikut untuk menggunakan skrip untuk menentukan pipeline di akun Anda yang menggunakan polling.
-
Buka jendela terminal, lalu lakukan salah satu hal berikut:
-
Jalankan perintah berikut untuk membuat skrip baru bernama PollingPipelinesExtractor.sh.
vi PollingPipelinesExtractor.sh -
Untuk menggunakan skrip python, jalankan perintah berikut untuk membuat skrip python baru bernama PollingPipelinesExtractor.py.
vi PollingPipelinesExtractor.py
-
-
Salin dan tempel kode berikut ke dalam PollingPipelinesExtractor skrip. Lakukan salah satu tindakan berikut:
-
Salin dan tempel kode berikut ke dalam PollingPipelinesExtractor.sh skrip.
#!/bin/bash set +x POLLING_PIPELINES=() LAST_EXECUTED_DATES=() NEXT_TOKEN=null HAS_NEXT_TOKEN=true if [[ $# -eq 0 ]] ; then echo 'Please provide region name' exit 0 fi REGION=$1 while [ "$HAS_NEXT_TOKEN" != "false" ]; do if [ "$NEXT_TOKEN" != "null" ]; then LIST_PIPELINES_RESPONSE=$(aws codepipeline list-pipelines --region $REGION --next-token $NEXT_TOKEN) else LIST_PIPELINES_RESPONSE=$(aws codepipeline list-pipelines --region $REGION) fi LIST_PIPELINES=$(jq -r '.pipelines[].name' <<< "$LIST_PIPELINES_RESPONSE") NEXT_TOKEN=$(jq -r '.nextToken' <<< "$LIST_PIPELINES_RESPONSE") if [ "$NEXT_TOKEN" == "null" ]; then HAS_NEXT_TOKEN=false fi for pipline_name in $LIST_PIPELINES do PIPELINE=$(aws codepipeline get-pipeline --name $pipline_name --region $REGION) HAS_POLLABLE_ACTIONS=$(jq '.pipeline.stages[].actions[] | select(.actionTypeId.category == "Source") | select(.actionTypeId.owner == ("ThirdParty","AWS")) | select(.actionTypeId.provider == ("GitHub","S3","CodeCommit")) | select(.configuration.PollForSourceChanges == ("true",null))' <<< "$PIPELINE") if [ ! -z "$HAS_POLLABLE_ACTIONS" ]; then POLLING_PIPELINES+=("$pipline_name") PIPELINE_EXECUTIONS=$(aws codepipeline list-pipeline-executions --pipeline-name $pipline_name --region $REGION) LAST_EXECUTION=$(jq -r '.pipelineExecutionSummaries[0]' <<< "$PIPELINE_EXECUTIONS") if [ "$LAST_EXECUTION" != "null" ]; then LAST_EXECUTED_TIMESTAMP=$(jq -r '.startTime' <<< "$LAST_EXECUTION") LAST_EXECUTED_DATE="$(date -r ${LAST_EXECUTED_TIMESTAMP%.*})" else LAST_EXECUTED_DATE="Not executed in last year" fi LAST_EXECUTED_DATES+=("$LAST_EXECUTED_DATE") fi done done fileName=$REGION-$(date +%s) printf "| %-30s | %-30s |\n" "Polling Pipeline Name" "Last Executed Time" printf "| %-30s | %-30s |\n" "_____________________" "__________________" for i in "${!POLLING_PIPELINES[@]}"; do printf "| %-30s | %-30s |\n" "${POLLING_PIPELINES[i]}" "${LAST_EXECUTED_DATES[i]}" printf "${POLLING_PIPELINES[i]}," >> $fileName.csv done printf "\nSaving Polling Pipeline Names to file $fileName.csv." -
Salin dan tempel kode berikut ke dalam PollingPipelinesExtractor.py skrip.
import boto3 import sys import time import math hasNextToken = True nextToken = "" pollablePipelines = [] lastExecutedTimes = [] if len(sys.argv) == 1: raise Exception("Please provide region name.") session = boto3.Session(profile_name='default', region_name=sys.argv[1]) codepipeline = session.client('codepipeline') def is_pollable_action(action): actionTypeId = action['actionTypeId'] configuration = action['configuration'] return actionTypeId['owner'] in {"AWS", "ThirdParty"} and actionTypeId['provider'] in {"GitHub", "CodeCommit", "S3"} and ('PollForSourceChanges' not in configuration or configuration['PollForSourceChanges'] == 'true') def has_pollable_actions(pipeline): hasPollableAction = False pipelineDefinition = codepipeline.get_pipeline(name=pipeline['name'])['pipeline'] for action in pipelineDefinition['stages'][0]['actions']: hasPollableAction = is_pollable_action(action) if hasPollableAction: break return hasPollableAction def get_last_executed_time(pipelineName): pipelineExecutions=codepipeline.list_pipeline_executions(pipelineName=pipelineName)['pipelineExecutionSummaries'] if pipelineExecutions: return pipelineExecutions[0]['startTime'].strftime("%A %m/%d/%Y, %H:%M:%S") else: return "Not executed in last year" while hasNextToken: if nextToken=="": list_pipelines_response = codepipeline.list_pipelines() else: list_pipelines_response = codepipeline.list_pipelines(nextToken=nextToken) if 'nextToken' in list_pipelines_response: nextToken = list_pipelines_response['nextToken'] else: hasNextToken= False for pipeline in list_pipelines_response['pipelines']: if has_pollable_actions(pipeline): pollablePipelines.append(pipeline['name']) lastExecutedTimes.append(get_last_executed_time(pipeline['name'])) fileName="{region}-{timeNow}.csv".format(region=sys.argv[1],timeNow=math.trunc(time.time())) file = open(fileName, 'w') print ("{:<30} {:<30} {:<30}".format('Polling Pipeline Name', '|','Last Executed Time')) print ("{:<30} {:<30} {:<30}".format('_____________________', '|','__________________')) for i in range(len(pollablePipelines)): print("{:<30} {:<30} {:<30}".format(pollablePipelines[i], '|', lastExecutedTimes[i])) file.write("{pipeline},".format(pipeline=pollablePipelines[i])) file.close() print("\nSaving Polling Pipeline Names to file {fileName}".format(fileName=fileName))
-
-
Untuk setiap Wilayah di mana Anda memiliki pipeline, Anda harus menjalankan skrip untuk Wilayah tersebut. Untuk menjalankan skrip, lakukan salah satu hal berikut:
-
Jalankan perintah berikut untuk menjalankan skrip bernama PollingPipelinesExtractor.sh. Dalam contoh ini, Wilayah adalah us-west-2.
./PollingPipelinesExtractor.sh us-west-2 -
Untuk skrip python, jalankan perintah berikut untuk menjalankan skrip python bernama PollingPipelinesExtractor.py. Dalam contoh ini, Wilayah adalah us-west-2.
python3 PollingPipelinesExtractor.py us-west-2
Dalam contoh output berikut dari skrip, Region us-west-2 mengembalikan daftar pipeline polling dan menunjukkan waktu eksekusi terakhir untuk setiap pipeline.
% ./pollingPipelineExtractor.sh us-west-2 | Polling Pipeline Name | Last Executed Time | | _____________________ | __________________ | | myCodeBuildPipeline | Wed Mar 8 09:35:49 PST 2023 | | myCodeCommitPipeline | Mon Apr 24 22:32:32 PDT 2023 | | TestPipeline | Not executed in last year | Saving list of polling pipeline names to us-west-2-1682496174.csv...%Analisis output skrip dan, untuk setiap pipeline dalam daftar, perbarui sumber polling ke metode deteksi perubahan berbasis peristiwa yang direkomendasikan.
catatan
Pipeline polling Anda ditentukan oleh konfigurasi tindakan pipeline untuk
PollForSourceChangesparameter. Jika konfigurasi sumber pipeline memilikiPollForSourceChangesparameter yang dihilangkan, maka secara CodePipeline default akan melakukan polling repositori Anda untuk perubahan sumber. Perilaku ini sama seperti jikaPollForSourceChangesdisertakan dan disetel ke true. Untuk informasi selengkapnya, lihat parameter konfigurasi untuk tindakan sumber pipeline Anda, seperti parameter konfigurasi tindakan sumber Amazon S3 diReferensi tindakan sumber Amazon S3.Perhatikan bahwa skrip ini juga menghasilkan file.csv yang berisi daftar pipeline polling di akun Anda dan menyimpan file.csv ke folder kerja saat ini.
-
Migrasikan saluran polling dengan sumber CodeCommit
Anda dapat memigrasikan pipeline polling untuk digunakan EventBridge untuk mendeteksi perubahan pada repositori CodeCommit sumber atau bucket sumber Amazon S3 Anda.
CodeCommit- Untuk pipa dengan CodeCommit sumber, modifikasi pipa sehingga deteksi perubahan dilakukan secara otomatis EventBridge. Pilih dari metode berikut untuk mengimplementasikan migrasi:
Migrasikan saluran polling (CodeCommit atau sumber Amazon S3) (konsol)
Anda dapat menggunakan CodePipeline konsol untuk memperbarui pipeline untuk digunakan EventBridge untuk mendeteksi perubahan pada repositori CodeCommit sumber atau bucket sumber Amazon S3 Anda.
catatan
Saat Anda menggunakan konsol untuk mengedit pipeline yang memiliki repositori CodeCommit sumber atau bucket sumber Amazon S3, aturan dan peran IAM dibuat untuk Anda. Jika Anda menggunakan AWS CLI untuk mengedit pipeline, Anda harus membuat EventBridge aturan dan peran IAM sendiri. Untuk informasi selengkapnya, lihat CodeCommit Tindakan sumber dan EventBridge.
Gunakan langkah-langkah ini untuk mengedit pipeline yang menggunakan pemeriksaan berkala. Jika Anda ingin membuat pipeline, lihatBuat pipeline, tahapan, dan tindakan.
Untuk mengedit tahap sumber pipeline
-
Masuk ke Konsol Manajemen AWS dan buka CodePipeline konsol di http://console.aws.amazon.com/codesuite/codepipeline/home
. Nama-nama semua pipeline yang terkait dengan AWS akun Anda ditampilkan.
-
Di Nama, pilih nama pipeline yang ingin Anda edit. Ini membuka tampilan rinci dari pipa, termasuk keadaan masing-masing tindakan di setiap tahap pipa.
-
Pada halaman rincian pipeline, pilih Edit.
-
Pada tahap Edit, pilih ikon edit pada tindakan sumber.
-
Per luas Opsi Deteksi Perubahan dan pilih CloudWatch Gunakan Acara untuk memulai pipeline saya secara otomatis ketika perubahan terjadi (disarankan).
Sebuah pesan muncul yang menunjukkan EventBridge aturan yang akan dibuat untuk pipeline ini. Pilih Perbarui.
Jika Anda memperbarui pipeline yang memiliki sumber Amazon S3, Anda melihat pesan berikut. Pilih Perbarui.
-
Setelah selesai mengedit pipeline, pilih S impan perubahan pipeline untuk kembali ke halaman ringkasan.
Sebuah pesan menampilkan nama EventBridge aturan yang akan dibuat untuk pipeline Anda. Jangan pilih Save and continue (Simpan dan lanjutkan).
-
Untuk menguji tindakan Anda, lepaskan perubahan dengan menggunakan AWS CLI untuk melakukan perubahan ke sumber yang ditentukan dalam tahap sumber pipeline.
Migrasikan saluran polling (CodeCommit sumber) (CLI)
Ikuti langkah-langkah ini untuk mengedit pipeline yang menggunakan polling (pemeriksaan berkala) untuk menggunakan EventBridge aturan untuk memulai pipeline. Jika Anda ingin membuat pipeline, lihatBuat pipeline, tahapan, dan tindakan.
Untuk membangun pipeline berbasis peristiwa dengan CodeCommit, Anda mengedit PollForSourceChanges parameter pipeline Anda dan kemudian membuat sumber daya berikut:
-
EventBridge acara
-
Peran IAM untuk memungkinkan acara ini memulai pipeline Anda
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.
-
Jalan get-pipeline kan perintah untuk menyalin struktur pipeline ke file JSON. Misalnya, untuk pipeline bernama
MyFirstPipeline, jalankan perintah berikut:aws codepipeline get-pipeline --nameMyFirstPipeline>pipeline.jsonPerintah ini tidak mengembalikan apa pun, tetapi file yang Anda buat akan muncul di direktori tempat Anda menjalankan perintah.
-
Buka file JSON di editor teks biasa dan edit tahap sumber dengan mengubah
PollForSourceChangesparameter menjadifalse, seperti yang ditunjukkan dalam contoh ini.Mengapa saya membuat perubahan ini? Mengubah parameter ini untuk
falsemematikan pemeriksaan berkala sehingga Anda dapat menggunakan deteksi perubahan berbasis peristiwa saja."configuration": {"PollForSourceChanges": "false","BranchName": "main", "RepositoryName": "MyTestRepo" }, -
Jika Anda bekerja dengan struktur pipa yang diambil menggunakan get-pipeline perintah, hapus
metadatagaris 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.
-
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.jsonPerintah 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-executionperintah untuk memulai pipeline Anda secara manual.
Untuk membuat EventBridge aturan dengan CodeCommit sebagai sumber peristiwa dan CodePipeline sebagai target
-
Tambahkan izin EventBridge untuk digunakan CodePipeline untuk memanggil aturan. Untuk informasi selengkapnya, lihat Menggunakan kebijakan berbasis sumber daya untuk Amazon. EventBridge
-
Gunakan contoh berikut untuk membuat kebijakan kepercayaan yang memungkinkan EventBridge untuk mengambil peran layanan. Sebutkan kebijakan kepercayaan
trustpolicyforEB.json. -
Gunakan perintah berikut untuk membuat
Role-for-MyRuleperan dan melampirkan kebijakan kepercayaan.aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json -
Buat kebijakan izin JSON, seperti yang ditunjukkan dalam contoh ini, untuk pipeline bernama
MyFirstPipeline. Beri nama kebijakan izinpermissionspolicyforEB.json. -
Gunakan perintah berikut untuk melampirkan kebijakan
CodePipeline-Permissions-Policy-for-EBizin keRole-for-MyRuleperan.Mengapa saya membuat perubahan ini? Menambahkan kebijakan ini ke peran akan membuat izin untuk EventBridge.
aws iam put-role-policy --role-name Role-for-MyRule --policy-name CodePipeline-Permissions-Policy-For-EB --policy-document file://permissionspolicyforEB.json
-
-
Panggil put-rule perintah dan sertakan
--role-arnparameter--name--event-pattern,, dan.Mengapa saya membuat perubahan ini? Perintah ini CloudFormation memungkinkan untuk membuat acara.
Perintah contoh berikut membuat aturan yang disebut
MyCodeCommitRepoRule.aws events put-rule --name "MyCodeCommitRepoRule" --event-pattern "{\"source\":[\"aws.codecommit\"],\"detail-type\":[\"CodeCommit Repository State Change\"],\"resources\":[\"repository-ARN\"],\"detail\":{\"referenceType\":[\"branch\"],\"referenceName\":[\"main\"]}}" --role-arn "arn:aws:iam::ACCOUNT_ID:role/Role-for-MyRule" -
Untuk menambahkan CodePipeline sebagai target, panggil put-targets perintah dan sertakan parameter berikut:
-
--ruleParameter digunakan dengan yangrule_nameAnda buat dengan menggunakanput-rule. -
--targetsParameter digunakan denganIddaftar target dalam daftar target danARNpipa target.
Perintah sampel berikut menentukan bahwa untuk aturan yang
IddipanggilMyCodeCommitRepoRule, target terdiri dari nomor satu, menunjukkan bahwa dalam daftar target untuk aturan, ini adalah target 1. Perintah sampel juga menentukan contohARNuntuk pipeline. Pipeline dimulai ketika sesuatu berubah di repositori.aws events put-targets --rule MyCodeCommitRepoRule --targets Id=1,Arn=arn:aws:codepipeline:us-west-2:80398EXAMPLE:TestPipeline -
-
(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
actionNamecontoh ini, adalah nilai dinamis, didefinisikan pada pembuatan pipeline, bukan berasal dari peristiwa sumber.Source -
Dalam
revisionTypecontoh ini, adalah nilai dinamis, didefinisikan pada pembuatan pipeline, bukan berasal dari peristiwa sumber.COMMIT_ID -
revisionValue, <revisionValue> dalam contoh ini, diturunkan dari variabel peristiwa sumber.
{ "Rule": "my-rule", "Targets": [ { "Id": "MyTargetId", "Arn": "pipeline-ARN", "InputTransformer": { "sourceRevisions": { "actionName": "Source", "revisionType": "COMMIT_ID", "revisionValue": "<revisionValue>" }, "variables": [ { "name": "Branch_Name", "value": "value" } ] } } ] } -
Migrasikan saluran polling (CodeCommit sumber) (CloudFormation templat)
Untuk membangun pipeline berbasis peristiwa AWS CodeCommit, Anda mengedit PollForSourceChanges parameter pipeline Anda dan kemudian menambahkan sumber daya berikut ke template Anda:
-
Sebuah EventBridge aturan
-
Peran IAM untuk aturan Anda EventBridge
Jika Anda menggunakan CloudFormation untuk membuat dan mengelola pipeline Anda, template Anda menyertakan konten seperti berikut ini.
catatan
Pro Configuration perti di tahap sumber disebutPollForSourceChanges. Jika properti itu tidak disertakan dalam template Anda, maka PollForSourceChanges disetel ke true secara default.
Untuk memperbarui pipeline Anda CloudFormation template dan buat EventBridge aturan
-
Di template, di bawah
Resources, gunakanAWS::IAM::RoleCloudFormation sumber daya untuk mengonfigurasi peran IAM yang memungkinkan acara Anda memulai pipeline Anda. Entri ini membuat peran yang menggunakan dua kebijakan:-
Kebijakan pertama memungkinkan peran untuk diasumsikan.
-
Kebijakan kedua memberikan izin untuk memulai pipeline.
Mengapa saya membuat perubahan ini? Menambahkan
AWS::IAM::Rolesumber daya memungkinkan CloudFormation untuk membuat izin untuk EventBridge. Sumber daya ini ditambahkan ke CloudFormation tumpukan Anda. -
-
Di template, di bawah
Resources, gunakanAWS::Events::RuleCloudFormation sumber daya untuk menambahkan EventBridge aturan. Pola peristiwa ini menciptakan peristiwa yang memantau perubahan push ke repositori Anda. Saat EventBridge mendeteksi perubahan status repositori, aturan akan dipanggilStartPipelineExecutionpada pipeline target Anda.Mengapa saya membuat perubahan ini? Menambahkan
AWS::Events::Rulesumber daya CloudFormation memungkinkan untuk membuat acara. Sumber daya ini ditambahkan ke CloudFormation tumpukan Anda. -
(Opsional) Untuk mengonfigurasi transformator input dengan penggantian sumber untuk ID gambar tertentu, gunakan cuplikan YAML berikut. Contoh berikut mengonfigurasi penggantian di mana:
-
Dalam
actionNamecontoh ini, adalah nilai dinamis, didefinisikan pada pembuatan pipeline, bukan berasal dari peristiwa sumber.Source -
Dalam
revisionTypecontoh ini, adalah nilai dinamis, didefinisikan pada pembuatan pipeline, bukan berasal dari peristiwa sumber.COMMIT_ID -
revisionValue, <revisionValue> dalam contoh ini, diturunkan dari variabel peristiwa sumber. -
Variabel output untuk
BranchNamedanValueditentukan.
Rule: my-rule Targets: - Id: MyTargetId Arn: pipeline-ARN InputTransformer: sourceRevisions: actionName:SourcerevisionType:COMMIT_IDrevisionValue: <revisionValue> variables: - name:BranchNamevalue:value -
-
Simpan template yang diperbarui ke komputer lokal Anda, lalu buka CloudFormation konsol.
-
Pilih tumpukan Anda, lalu pilih Buat Set Perubahan untuk Tumpukan Saat Ini.
-
Unggah template, lalu lihat perubahan yang tercantum di CloudFormation. Ini adalah perubahan yang harus dilakukan pada tumpukan. Anda harus melihat sumber daya baru Anda dalam daftar.
-
Pilih Eksekusi.
Untuk mengedit PollForSourceChanges parameter pipeline
penting
Dalam banyak kasus, PollForSourceChanges parameter default menjadi true saat Anda membuat pipeline. 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.
-
Di template, ubah
PollForSourceChangeskefalse. Jika Anda tidak menyertakanPollForSourceChangesdalam definisi pipeline Anda, tambahkan dan setel kefalse.Mengapa saya membuat perubahan ini? Mengubah parameter ini untuk
falsemematikan pemeriksaan berkala sehingga Anda dapat menggunakan deteksi perubahan berbasis peristiwa saja.
contoh
Saat Anda membuat sumber daya ini dengan CloudFormation, pipeline Anda dipicu saat file di repositori Anda dibuat atau diperbarui. Berikut cuplikan template terakhir:
Migrasikan pipeline polling dengan sumber S3 diaktifkan untuk acara
Untuk pipeline dengan sumber Amazon S3, ubah pipeline sehingga deteksi perubahan dilakukan secara otomatis melalui EventBridge dan dengan bucket sumber yang diaktifkan untuk notifikasi peristiwa. Ini adalah metode yang disarankan jika Anda menggunakan CLI atau CloudFormation untuk memigrasikan pipeline Anda.
catatan
Ini termasuk menggunakan bucket yang diaktifkan untuk notifikasi acara, di mana Anda tidak perlu membuat CloudTrail jejak terpisah. Jika Anda menggunakan konsol, maka aturan acara dan CloudTrail jejak disiapkan untuk Anda. Untuk langkah-langkah tersebut, lihatMigrasikan pipeline polling dengan sumber dan CloudTrail jejak S3.
Migrasikan pipeline polling dengan sumber S3 diaktifkan untuk peristiwa (CLI)
Ikuti langkah-langkah ini untuk mengedit pipeline yang menggunakan polling (pemeriksaan berkala) untuk menggunakan acara sebagai EventBridge gantinya. Jika Anda ingin membuat pipeline, lihatBuat pipeline, tahapan, dan tindakan.
Untuk membuat pipeline berbasis peristiwa dengan Amazon S3, Anda mengedit PollForSourceChanges parameter pipeline Anda dan kemudian membuat sumber daya berikut:
-
EventBridge aturan acara
-
Peran IAM untuk memungkinkan EventBridge acara memulai pipeline Anda
Untuk membuat EventBridge aturan dengan Amazon S3 sebagai sumber acara dan CodePipeline sebagai target dan menerapkan kebijakan izin
-
Berikan izin EventBridge untuk digunakan CodePipeline untuk memanggil aturan. Untuk informasi selengkapnya, lihat Menggunakan kebijakan berbasis sumber daya untuk Amazon. EventBridge
-
Gunakan contoh berikut untuk membuat kebijakan kepercayaan untuk memungkinkan EventBridge untuk mengambil peran layanan. Sebutkan itu
trustpolicyforEB.json. -
Gunakan perintah berikut untuk membuat
Role-for-MyRuleperan 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 -
Buat kebijakan izin JSON, seperti yang ditunjukkan di sini untuk pipeline bernama
MyFirstPipeline. Beri nama kebijakan izinpermissionspolicyforEB.json. -
Gunakan perintah berikut untuk melampirkan kebijakan
CodePipeline-Permissions-Policy-for-EBizin baru keRole-for-MyRuleperan 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
-
-
Panggil put-rule perintah dan sertakan
--role-arnparameter--name--event-pattern,, dan.Perintah contoh berikut membuat aturan bernama
EnabledS3SourceRule.aws events put-rule --name "EnabledS3SourceRule" --event-pattern "{\"source\":[\"aws.s3\"],\"detail-type\":[\"Object Created\"],\"detail\":{\"bucket\":{\"name\":[\"amzn-s3-demo-source-bucket\"]}}}" --role-arn "arn:aws:iam::ACCOUNT_ID:role/Role-for-MyRule" -
Untuk menambahkan CodePipeline sebagai target, panggil put-targets perintah dan sertakan
--targetsparameter--ruledan.Perintah berikut menentukan bahwa untuk aturan bernama
EnabledS3SourceRule, targetIdterdiri dari nomor satu, menunjukkan bahwa dalam daftar target untuk aturan, ini adalah target 1. Perintah ini juga menentukan contohARNuntuk pipeline. Pipeline dimulai ketika sesuatu berubah di repositori.aws events put-targets --rule EnabledS3SourceRule --targets Id=codepipeline-AppPipeline,Arn=arn:aws:codepipeline:us-west-2:80398EXAMPLE:TestPipeline
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.
-
Jalan get-pipeline kan perintah untuk menyalin struktur pipeline ke file JSON. Misalnya, untuk pipeline bernama
MyFirstPipeline, jalankan perintah berikut:aws codepipeline get-pipeline --nameMyFirstPipeline>pipeline.jsonPerintah ini tidak mengembalikan apa pun, tetapi file yang Anda buat akan muncul di direktori tempat Anda menjalankan perintah.
-
Buka file JSON di editor teks biasa dan edit tahap sumber dengan mengubah
PollForSourceChangesparameter untuk bucket bernamaamzn-s3-demo-source-buckettofalse, seperti yang ditunjukkan dalam contoh ini.Mengapa saya membuat perubahan ini? Menyetel parameter ini untuk
falsemematikan pemeriksaan berkala sehingga Anda dapat menggunakan deteksi perubahan berbasis peristiwa saja."configuration": { "S3Bucket": "amzn-s3-demo-source-bucket","PollForSourceChanges": "false","S3ObjectKey": "index.zip" }, -
Jika Anda bekerja dengan struktur pipa yang diambil menggunakan get-pipeline perintah, Anda harus menghapus
metadatagaris 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.
-
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.jsonPerintah 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.
Migrasikan pipeline polling dengan sumber S3 diaktifkan untuk acara (CloudFormation templat)
Prosedur ini untuk pipeline di mana bucket sumber mengaktifkan peristiwa.
Gunakan langkah-langkah ini untuk mengedit pipeline Anda dengan sumber Amazon S3 dari polling hingga deteksi perubahan berbasis peristiwa.
Untuk membuat pipeline berbasis peristiwa dengan Amazon S3, Anda mengedit PollForSourceChanges parameter pipeline Anda dan kemudian menambahkan sumber daya berikut ke template Anda:
-
EventBridge aturan dan peran IAM untuk memungkinkan acara ini memulai pipeline Anda.
Jika Anda menggunakan CloudFormation untuk membuat dan mengelola pipeline Anda, template Anda menyertakan konten seperti berikut ini.
catatan
Pro Configuration perti di tahap sumber disebutPollForSourceChanges. Jika template Anda tidak menyertakan properti itu, maka PollForSourceChanges diatur ke true secara default.
Untuk membuat EventBridge aturan dengan Amazon S3 sebagai sumber acara dan CodePipeline sebagai target dan menerapkan kebijakan izin
-
Di template, di bawah
Resources, gunakanAWS::IAM::RoleCloudFormation sumber daya untuk mengonfigurasi peran IAM yang memungkinkan acara Anda memulai pipeline Anda. Entri ini membuat peran yang menggunakan dua kebijakan:-
Kebijakan pertama memungkinkan peran untuk diasumsikan.
-
Kebijakan kedua memberikan izin untuk memulai pipeline.
Mengapa saya membuat perubahan ini? Menambahkan
AWS::IAM::Rolesumber daya CloudFormation memungkinkan untuk membuat izin untuk EventBridge. Sumber daya ini ditambahkan ke CloudFormation tumpukan Anda. -
-
Gunakan sumber
AWS::Events::RuleCloudFormation daya untuk menambahkan EventBridge aturan. Pola peristiwa ini membuat peristiwa yang memantau pembuatan atau penghapusan objek di bucket sumber Amazon S3 Anda. Selain itu, sertakan target pipeline Anda. Ketika sebuah objek dibuat, aturan ini dipanggilStartPipelineExecutionpada pipeline target Anda.Mengapa saya membuat perubahan ini? Menambahkan
AWS::Events::Rulesumber daya CloudFormation memungkinkan untuk membuat acara. Sumber daya ini ditambahkan ke CloudFormation tumpukan Anda. -
Simpan template yang diperbarui ke komputer lokal Anda, dan buka CloudFormation konsol.
-
Pilih tumpukan Anda, lalu pilih Buat Set Perubahan untuk Tumpukan Saat Ini.
-
Unggah template yang diperbarui, lalu lihat perubahan yang tercantum di CloudFormation. Ini adalah perubahan yang akan dilakukan pada tumpukan. Anda harus melihat sumber daya baru Anda dalam daftar.
-
Pilih Eksekusi.
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.
-
Di template, ubah
PollForSourceChangeskefalse. Jika Anda tidak menyertakanPollForSourceChangesdalam definisi pipeline Anda, tambahkan dan setel kefalse.Mengapa saya membuat perubahan ini? Meng
PollForSourceChangesubahfalsemenjadi mematikan pemeriksaan berkala sehingga Anda dapat menggunakan deteksi perubahan berbasis peristiwa saja.
contoh
Saat Anda menggunakan CloudFormation untuk membuat sumber daya ini, pipeline Anda dipicu saat file di repositori Anda dibuat atau diperbarui.
catatan
Jangan berhenti di sini. Meskipun pipeline Anda dibuat, Anda harus membuat CloudFormation template kedua untuk pipeline Amazon S3 Anda. Jika Anda tidak membuat template kedua, pipeline Anda tidak memiliki fungsi deteksi perubahan.
Migrasikan pipeline polling dengan sumber dan CloudTrail jejak S3
Untuk pipeline dengan sumber Amazon S3, ubah pipeline sehingga deteksi perubahan dilakukan secara otomatis EventBridge. Pilih dari metode berikut untuk mengimplementasikan migrasi:
Migrasikan pipeline polling dengan sumber S3 dan CloudTrail jejak (CLI)
Ikuti langkah-langkah ini untuk mengedit pipeline yang menggunakan polling (pemeriksaan berkala) untuk menggunakan acara sebagai EventBridge gantinya. Jika Anda ingin membuat pipeline, lihatBuat pipeline, tahapan, dan tindakan.
Untuk membuat pipeline berbasis peristiwa dengan Amazon S3, Anda mengedit PollForSourceChanges parameter pipeline Anda dan kemudian membuat sumber daya berikut:
-
AWS CloudTrail kebijakan trail, bucket, dan bucket yang dapat digunakan Amazon S3 untuk mencatat peristiwa.
-
EventBridge acara
-
Peran IAM untuk memungkinkan EventBridge acara memulai pipeline Anda
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.
-
Panggil create-trail perintah dan sertakan
--s3-bucket-nameparameter--namedan.Mengapa saya membuat perubahan ini? Ini membuat CloudTrail jejak yang diperlukan untuk bucket sumber S3 Anda.
Perintah berikut menggunakan
--namedan--s3-bucket-nameuntuk membuat jejak bernamamy-traildan bucket bernamaamzn-s3-demo-source-bucket.aws cloudtrail create-trail --name my-trail --s3-bucket-name amzn-s3-demo-source-bucket -
Panggil start-logging perintah dan sertakan
--nameparameter.Mengapa saya membuat perubahan ini? Perintah ini memulai CloudTrail logging untuk bucket sumber Anda dan mengirim acara ke EventBridge.
Contoh:
Perintah berikut digunakan
--nameuntuk mulai mencatat pada jejak bernamamy-trail.aws cloudtrail start-logging --name my-trail -
Panggil put-event-selectors perintah dan sertakan
--event-selectorsparameter--trail-namedan. 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-namedan--event-selectorsuntuk menentukan peristiwa data untuk bucket sumber dan awalan bernamaamzn-s3-demo-source-bucket/myFolder.aws cloudtrail put-event-selectors --trail-namemy-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
-
Berikan izin EventBridge untuk digunakan CodePipeline untuk memanggil aturan. Untuk informasi selengkapnya, lihat Menggunakan kebijakan berbasis sumber daya untuk Amazon. EventBridge
-
Gunakan contoh berikut untuk membuat kebijakan kepercayaan untuk memungkinkan EventBridge untuk mengambil peran layanan. Sebutkan itu
trustpolicyforEB.json. -
Gunakan perintah berikut untuk membuat
Role-for-MyRuleperan 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 -
Buat kebijakan izin JSON, seperti yang ditunjukkan di sini untuk pipeline bernama
MyFirstPipeline. Beri nama kebijakan izinpermissionspolicyforEB.json. -
Gunakan perintah berikut untuk melampirkan kebijakan
CodePipeline-Permissions-Policy-for-EBizin baru keRole-for-MyRuleperan 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
-
-
Panggil put-rule perintah dan sertakan
--role-arnparameter--name--event-pattern,, dan.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" -
Untuk menambahkan CodePipeline sebagai target, panggil put-targets perintah dan sertakan
--targetsparameter--ruledan.Perintah berikut menentukan bahwa untuk aturan bernama
MyS3SourceRule, targetIdterdiri dari nomor satu, menunjukkan bahwa dalam daftar target untuk aturan, ini adalah target 1. Perintah ini juga menentukan contohARNuntuk 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 -
(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
actionNamecontoh ini, adalah nilai dinamis, didefinisikan pada pembuatan pipeline, bukan berasal dari peristiwa sumber.Source -
Dalam
revisionTypecontoh 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 Anda
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.
-
Jalan get-pipeline kan perintah untuk menyalin struktur pipeline ke file JSON. Misalnya, untuk pipeline bernama
MyFirstPipeline, jalankan perintah berikut:aws codepipeline get-pipeline --nameMyFirstPipeline>pipeline.jsonPerintah ini tidak mengembalikan apa pun, tetapi file yang Anda buat akan muncul di direktori tempat Anda menjalankan perintah.
-
Buka file JSON di editor teks biasa dan edit tahap sumber dengan mengubah
PollForSourceChangesparameter untuk bucket bernamaamzn-s3-demo-source-buckettofalse, seperti yang ditunjukkan dalam contoh ini.Mengapa saya membuat perubahan ini? Menyetel parameter ini untuk
falsemematikan pemeriksaan berkala sehingga Anda dapat menggunakan deteksi perubahan berbasis peristiwa saja."configuration": { "S3Bucket": "amzn-s3-demo-source-bucket","PollForSourceChanges": "false","S3ObjectKey": "index.zip" }, -
Jika Anda bekerja dengan struktur pipa yang diambil menggunakan get-pipeline perintah, Anda harus menghapus
metadatagaris 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.
-
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.jsonPerintah 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.
Migrasikan pipeline polling dengan sumber dan CloudTrail jejak S3 (CloudFormation templat)
Gunakan langkah-langkah ini untuk mengedit pipeline Anda dengan sumber Amazon S3 dari polling hingga deteksi perubahan berbasis peristiwa.
Untuk membuat pipeline berbasis peristiwa dengan Amazon S3, Anda mengedit PollForSourceChanges parameter pipeline Anda dan kemudian menambahkan sumber daya berikut ke template Anda:
-
EventBridge mengharuskan semua peristiwa Amazon S3 harus dicatat. Anda harus membuat kebijakan AWS CloudTrail jejak, bucket, dan bucket yang dapat digunakan Amazon S3 untuk mencatat peristiwa yang terjadi. Untuk informasi selengkapnya, lihat Pencatatan peristiwa data untuk jalur dan Acara pengelolaan logging untuk jalur.
-
EventBridge aturan dan peran IAM untuk memungkinkan acara ini memulai pipeline Anda.
Jika Anda menggunakan CloudFormation untuk membuat dan mengelola pipeline Anda, template Anda menyertakan konten seperti berikut ini.
catatan
Pro Configuration perti di tahap sumber disebutPollForSourceChanges. Jika template Anda tidak menyertakan properti itu, maka PollForSourceChanges diatur ke true secara default.
Untuk membuat EventBridge aturan dengan Amazon S3 sebagai sumber acara dan CodePipeline sebagai target dan menerapkan kebijakan izin
-
Di template, di bawah
Resources, gunakanAWS::IAM::RoleCloudFormation sumber daya untuk mengonfigurasi peran IAM yang memungkinkan acara Anda memulai pipeline Anda. Entri ini membuat peran yang menggunakan dua kebijakan:-
Kebijakan pertama memungkinkan peran untuk diasumsikan.
-
Kebijakan kedua memberikan izin untuk memulai pipeline.
Mengapa saya membuat perubahan ini? Menambahkan
AWS::IAM::Rolesumber daya CloudFormation memungkinkan untuk membuat izin untuk EventBridge. Sumber daya ini ditambahkan ke CloudFormation tumpukan Anda. -
-
Gunakan sumber
AWS::Events::RuleCloudFormation daya untuk menambahkan EventBridge aturan. Pola peristiwa ini membuat peristiwa yang memantauCopyObject,PutObjectdanCompleteMultipartUploaddi bucket sumber Amazon S3 Anda. Selain itu, sertakan target pipeline Anda. KetikaCopyObject,PutObject, atauCompleteMultipartUploadterjadi, aturan ini dipanggilStartPipelineExecutionpada pipeline target Anda.Mengapa saya membuat perubahan ini? Menambahkan
AWS::Events::Rulesumber daya CloudFormation memungkinkan untuk membuat acara. Sumber daya ini ditambahkan ke CloudFormation tumpukan Anda. -
Tambahkan cuplikan ini ke template pertama Anda untuk memungkinkan fungsionalitas cross-stack:
-
(Opsional) Untuk mengonfigurasi transformator input dengan penggantian sumber untuk ID gambar tertentu, gunakan cuplikan YAML berikut. Contoh berikut mengonfigurasi penggantian di mana:
-
Dalam
actionNamecontoh ini, adalah nilai dinamis, didefinisikan pada pembuatan pipeline, bukan berasal dari peristiwa sumber.Source -
Dalam
revisionTypecontoh 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:pipeline-ARNInputTransformer: InputPathsMap: revisionValue: "$.detail.object.version-id" InputTemplate: sourceRevisions: actionName:SourcerevisionType:S3_OBJECT_VERSION_IDrevisionValue: '<revisionValue>' -
-
Simpan template yang diperbarui ke komputer lokal Anda, dan buka CloudFormation konsol.
-
Pilih tumpukan Anda, lalu pilih Buat Set Perubahan untuk Tumpukan Saat Ini.
-
Unggah template yang diperbarui, lalu lihat perubahan yang tercantum di CloudFormation. Ini adalah perubahan yang akan dilakukan pada tumpukan. Anda harus melihat sumber daya baru Anda dalam daftar.
-
Pilih Eksekusi.
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.
-
Di template, ubah
PollForSourceChangeskefalse. Jika Anda tidak menyertakanPollForSourceChangesdalam definisi pipeline Anda, tambahkan dan setel kefalse.Mengapa saya membuat perubahan ini? Meng
PollForSourceChangesubahfalsemenjadi mematikan pemeriksaan berkala sehingga Anda dapat menggunakan deteksi perubahan berbasis peristiwa saja.
Untuk membuat template kedua untuk CloudTrail sumber daya pipeline Amazon S3 Anda
-
Dalam template terpisah, di bawah
Resources, gunakanAWS::S3::Bucket,AWS::S3::BucketPolicy, danAWS::CloudTrail::TrailCloudFormation sumber daya untuk memberikan definisi bucket dan jejak sederhana untuk CloudTrail.Mengapa saya membuat perubahan ini? Mengingat batas saat ini lima jalur per akun, CloudTrail jalur harus dibuat dan dikelola secara terpisah. (Lihat Batas di AWS CloudTrail.) Namun, Anda dapat menyertakan banyak bucket Amazon S3 pada satu jejak, sehingga Anda dapat membuat jejak satu kali dan kemudian menambahkan bucket Amazon S3 untuk pipeline lain seperlunya. Tempelkan yang berikut ini ke file template sampel kedua Anda.
contoh
Saat Anda menggunakan CloudFormation untuk membuat sumber daya ini, pipeline Anda dipicu saat file di repositori Anda dibuat atau diperbarui.
catatan
Jangan berhenti di sini. Meskipun pipeline Anda dibuat, Anda harus membuat CloudFormation template kedua untuk pipeline Amazon S3 Anda. Jika Anda tidak membuat template kedua, pipeline Anda tidak memiliki fungsi deteksi perubahan.
Migrasikan saluran polling untuk tindakan sumber GitHub (melalui aplikasi OAuth) ke koneksi
Anda dapat memigrasikan tindakan sumber GitHub (melalui aplikasi OAuth) untuk menggunakan koneksi untuk repositori eksternal Anda. Ini adalah metode deteksi perubahan yang disarankan untuk pipeline dengan tindakan sumber GitHub (melalui aplikasi OAuth).
Untuk pipeline dengan tindakan sumber GitHub (melalui aplikasi OAuth), kami sarankan memodifikasi pipeline untuk menggunakan tindakan GitHub (melalui GitHub Aplikasi) sehingga deteksi perubahan dilakukan secara otomatis. AWS CodeConnections Untuk informasi selengkapnya tentang bekerja dengan koneksi, lihatGitHub koneksi.
Buat koneksi ke GitHub (konsol)
Anda dapat menggunakan konsol untuk membuat koneksi ke GitHub.
Langkah 1: Ganti tindakan Anda GitHub (melalui aplikasi OAuth)
Gunakan halaman edit pipeline untuk mengganti tindakan Anda GitHub (melalui aplikasi OAuth) dengan tindakan GitHub (melalui GitHub Aplikasi).
Untuk mengganti tindakan Anda GitHub (melalui aplikasi OAuth)
-
Masuk ke CodePipeline konsol.
-
Pilih pipeline Anda, dan pilih Edit. Pilih Edit stage pada panggung sumber Anda. Sebuah pesan ditampilkan yang menyarankan Anda memperbarui tindakan Anda.
-
Di penyedia Action, pilih GitHub (melalui GitHub Aplikasi).
-
Lakukan salah satu tindakan berikut:
-
Di bawah Kon eksi, jika Anda belum membuat koneksi ke penyedia Anda, pilih Hubun gkan ke GitHub. Lanjutkan ke Langkah 2: Buat koneksi ke GitHub.
-
Di bawah Kon eksi, jika Anda telah membuat koneksi ke penyedia Anda, pilih koneksi. Lanjutkan ke Langkah 3: Simpan Aksi Sumber untuk Koneksi Anda.
-
Langkah 2: Buat koneksi ke GitHub
Setelah Anda memilih untuk membuat koneksi, GitHub halaman Connect to ditampilkan.
Untuk membuat koneksi ke GitHub
-
Di bawah pengaturan GitHub koneksi, nama koneksi Anda ditampilkan di Nama koneksi.
Di bawah GitHub Aplikasi, pilih instalasi aplikasi atau pilih Instal aplikasi baru untuk membuatnya.
catatan
Anda menginstal satu aplikasi untuk semua koneksi Anda ke penyedia tertentu. Jika Anda telah menginstal GitHub aplikasi, pilih dan lewati langkah ini.
-
Jika halaman otorisasi untuk GitHub ditampilkan, masuk dengan kredensional Anda dan kemudian pilih untuk melanjutkan.
-
Pada halaman instalasi aplikasi, sebuah pesan menunjukkan bahwa AWS CodeStar aplikasi sedang mencoba menyambung ke GitHub akun Anda.
catatan
Anda hanya menginstal aplikasi sekali untuk setiap GitHub akun. Jika sebelumnya Anda menginstal aplikasi, Anda dapat memilih Konfigurasi untuk melanjutkan ke halaman modifikasi untuk instalasi aplikasi Anda, atau Anda dapat menggunakan tombol kembali untuk kembali ke konsol.
-
Pada AWS CodeStar halaman Instal, pilih Instal.
-
Pada GitHub halaman Connect to, ID koneksi untuk instalasi baru Anda ditampilkan. Pilih Hubungkan.
Langkah 3: Simpan tindakan GitHub sumber Anda
Selesaikan pembaruan Anda di halaman Edit tindakan untuk menyimpan tindakan sumber baru Anda.
Untuk menyimpan tindakan GitHub sumber Anda
-
Di Repositori, masukkan nama repositori pihak ketiga Anda. Di Cab ang, masukkan cabang tempat Anda ingin pipeline mendeteksi perubahan sumber.
catatan
Di Repositori, ke
owner-name/repository-nametik seperti yang ditunjukkan dalam contoh ini:my-account/my-repository -
Dalam format artefak keluaran, pilih format untuk artefak Anda.
-
Untuk menyimpan artefak keluaran dari GitHub tindakan menggunakan metode default, pilih CodePipeline default. Tindakan mengakses file dari GitHub repositori dan menyimpan artefak dalam file ZIP di penyimpanan artefak pipeline.
-
Untuk menyimpan file JSON yang berisi referensi URL ke repositori sehingga tindakan hilir dapat melakukan perintah Git secara langsung, pilih Klon ing penuh. Opsi ini hanya dapat digunakan oleh tindakan CodeBuild hilir.
Jika Anda memilih opsi ini, Anda perlu memperbarui izin untuk peran layanan CodeBuild proyek Anda seperti yang ditunjukkan padaTambahkan CodeBuild GitClone izin untuk koneksi ke Bitbucket, GitHub, GitHub Enterprise Server, atau GitLab.com. Untuk tutorial yang menunjukkan cara menggunakan opsi klon penuh, lihatTutorial: Gunakan klon penuh dengan sumber GitHub pipeline.
-
-
Di artefak keluaran, Anda dapat mempertahankan nama artefak keluaran untuk tindakan ini, seperti
SourceArtifact. Pilih Selesai untuk menutup halaman tindakan Edit. -
Pilih Sel esai untuk menutup halaman pengeditan panggung. Pilih Simpan untuk menutup halaman pengeditan pipeline.
Buat koneksi ke GitHub (CLI)
Anda dapat menggunakan AWS Command Line Interface (AWS CLI) untuk membuat koneksi ke GitHub.
Untuk melakukannya, gunakan perintah create-connection.
penting
Koneksi yang dibuat melalui AWS CLI atau AWS CloudFormation berada dalam PENDING status secara default. Setelah Anda membuat koneksi dengan CLI atau CloudFormation, gunakan konsol untuk mengedit koneksi untuk membuat stat AVAILABLE usnya.
Untuk membuat koneksi ke GitHub
-
Buka terminal (Linux, macOS, atau Unix) atau command prompt (Windows). Gunakan AWS CLI untuk menjalankan create-connection perintah, menentukan
--provider-typedan--connection-nameuntuk koneksi Anda. Dalam contoh ini, nama penyedia pihak ketiga adalahGitHubdan nama koneksi yang ditentukan adalahMyConnection.aws codeconnections create-connection --provider-type GitHub --connection-name MyConnectionJika berhasil, perintah ini mengembalikan informasi ARN koneksi seperti berikut ini.
{ "ConnectionArn": "arn:aws:codeconnections:us-west-2:account_id:connection/aEXAMPLE-8aad-4d5d-8878-dfcab0bc441f" } -
Gunakan konsol untuk menyelesaikan koneksi.
Migrasikan pipeline polling untuk tindakan sumber GitHub (melalui aplikasi OAuth) ke webhook
Anda dapat memigrasikan pipeline Anda untuk menggunakan webhook untuk mendeteksi perubahan di repositori GitHub sumber Anda. Migrasi ke webhook ini hanya untuk tindakan GitHub (melalui aplikasi OAuth).
-
Konsol: Migrasikan saluran polling ke webhook (GitHub (melalui aplikasi OAuth) tindakan sumber) (konsol)
-
CLI: Migrasikan pipeline polling ke webhook (GitHub (melalui aplikasi OAuth) tindakan sumber) (CLI)
-
CloudFormation: Perbarui pipeline untuk peristiwa push (GitHub (melalui aplikasi OAuth) tindakan sumber) (CloudFormation templat)
penting
Saat membuat CodePipeline webhook, jangan gunakan kredenSIAL Anda sendiri atau gunakan kembali token rahasia yang sama di beberapa webhook. Untuk keamanan optimal, buat token rahasia unik untuk setiap webhook yang Anda buat. Token rahasia adalah string arbitrer yang Anda berikan, yang digunakan untuk GitHub menghitung dan menandatangani muatan webhook yang dikirim ke CodePipeline, untuk melindungi integritas dan keaslian muatan webhook. Menggunakan kredenSIAL Anda sendiri atau menggunakan kembali token yang sama di beberapa webhook dapat menyebabkan kerentanan keamanan.
Migrasikan saluran polling ke webhook (GitHub (melalui aplikasi OAuth) tindakan sumber) (konsol)
Untuk tindakan sumber GitHub (melalui aplikasi OAuth), Anda dapat menggunakan CodePipeline konsol untuk memperbarui pipeline Anda untuk menggunakan webhook untuk mendeteksi perubahan di repositori sumber Anda GitHub .
Ikuti langkah-langkah ini untuk mengedit pipeline yang menggunakan polling (pemeriksaan berkala) untuk digunakan sebagai EventBridge gantinya. Jika Anda ingin membuat pipeline, lihatBuat pipeline, tahapan, dan tindakan.
Saat Anda menggunakan konsol, PollForSourceChanges parameter untuk pipeline Anda diubah untuk Anda. GitHub Webhook dibuat dan didaftarkan untuk Anda.
Untuk mengedit tahap sumber pipeline
-
Masuk ke Konsol Manajemen AWS dan buka CodePipeline konsol di http://console.aws.amazon.com/codesuite/codepipeline/home
. Nama-nama semua pipeline yang terkait dengan AWS akun Anda ditampilkan.
-
Di Nama, pilih nama pipeline yang ingin Anda edit. Ini membuka tampilan rinci dari pipa, termasuk keadaan masing-masing tindakan di setiap tahap pipa.
-
Pada halaman rincian pipeline, pilih Edit.
-
Pada tahap Edit, pilih ikon edit pada tindakan sumber.
-
Per luas Opsi deteksi perubahan dan pilih Gunakan Amazon CloudWatch Events untuk memulai pipeline saya secara otomatis saat terjadi perubahan (disarankan).
Sebuah pesan ditampilkan untuk menyarankan bahwa CodePipeline membuat webhook GitHub untuk mendeteksi perubahan sumber: AWS CodePipeline akan membuat webhook untuk Anda. Anda dapat memilih keluar dalam opsi di bawah ini. Pilih Perbarui. Selain webhook, membuat CodePipeline yang berikut:
-
Rahasia, dibuat secara acak dan digunakan untuk mengotorisasi koneksi ke GitHub.
-
URL webhook, dibuat menggunakan titik akhir publik untuk Wilayah.
CodePipeline mendaftarkan webhook dengan GitHub. Ini berlangganan URL untuk menerima peristiwa repositori.
-
-
Setelah selesai mengedit pipeline, pilih S impan perubahan pipeline untuk kembali ke halaman ringkasan.
Sebuah pesan menampilkan nama webhook yang akan dibuat untuk pipeline Anda. Jangan pilih Save and continue (Simpan dan lanjutkan).
-
Untuk menguji tindakan Anda, lepaskan perubahan dengan menggunakan AWS CLI untuk melakukan perubahan ke sumber yang ditentukan dalam tahap sumber pipeline.
Migrasikan pipeline polling ke webhook (GitHub (melalui aplikasi OAuth) tindakan sumber) (CLI)
Ikuti langkah-langkah ini untuk mengedit pipeline yang menggunakan pemeriksaan berkala untuk menggunakan webhook sebagai gantinya. Jika Anda ingin membuat pipeline, lihatBuat pipeline, tahapan, dan tindakan.
Untuk membangun pipeline berbasis peristiwa, Anda mengedit PollForSourceChanges parameter pipeline Anda dan kemudian membuat sumber daya berikut secara manual:
-
GitHub parameter webhook dan otorisasi
Untuk membuat dan mendaftarkan webhook Anda
catatan
Saat Anda menggunakan CLI atau CloudFormation untuk membuat pipeline dan menambahkan webhook, Anda harus menonaktifkan pemeriksaan berkala. Untuk menonaktifkan pemeriksaan berkala, Anda harus menambahkan PollForSourceChanges parameter secara eksplisit dan mengaturnya ke false, seperti yang dijelaskan dalam prosedur akhir di bawah ini. Jika tidak, default untuk CLI atau CloudFormation pipeline adalah PollForSourceChanges default true dan tidak ditampilkan dalam output struktur pipa. Untuk informasi selengkapnya tentang PollForSourceChanges default, lihatPengaturan yang valid untuk PollForSourceChanges parameter.
-
Dalam editor teks, buat dan simpan file JSON untuk webhook yang ingin Anda buat. Gunakan file sampel ini untuk webhook bernama:
my-webhook{ "webhook": { "name": "my-webhook", "targetPipeline": "pipeline_name", "targetAction": "source_action_name", "filters": [{ "jsonPath": "$.ref", "matchEquals": "refs/heads/{Branch}" }], "authentication": "GITHUB_HMAC", "authenticationConfiguration": { "SecretToken": "secret" } } } -
Panggil put-webhook perintah dan sertakan
--regionparameter--cli-inputdan.Perintah contoh berikut membuat webhook dengan file
webhook_jsonJSON.aws codepipeline put-webhook --cli-input-json file://webhook_json.json --region "eu-central-1" -
Dalam output yang ditunjukkan dalam contoh ini, URL dan ARN dikembalikan untuk webhook bernama
my-webhook.{ "webhook": { "url": "https://webhooks.domain.com/trigger111111111EXAMPLE11111111111111111", "definition": { "authenticationConfiguration": { "SecretToken": "secret" }, "name": "my-webhook", "authentication": "GITHUB_HMAC", "targetPipeline": "pipeline_name", "targetAction": "Source", "filters": [ { "jsonPath": "$.ref", "matchEquals": "refs/heads/{Branch}" } ] }, "arn": "arn:aws:codepipeline:eu-central-1:ACCOUNT_ID:webhook:my-webhook" }, "tags": [{ "key": "Project", "value": "ProjectA" }] }Contoh ini menambahkan tagging ke webhook dengan menyertakan kunci
Projecttag danProjectAnilai pada webhook. Untuk informasi selengkapnya tentang menandai sumber daya di CodePipeline, lihatPenandaan pada sumber daya. -
Panggil register-webhook-with-third-party perintah dan sertakan
--webhook-nameparameter.Contoh perintah berikut mendaftarkan webhook bernama
my-webhook.aws codepipeline register-webhook-with-third-party --webhook-name my-webhook
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.
-
Jalan get-pipeline kan perintah untuk menyalin struktur pipeline ke file JSON. Misalnya, untuk pipeline bernama
MyFirstPipeline, Anda akan mengetikkan perintah berikut:aws codepipeline get-pipeline --nameMyFirstPipeline>pipeline.jsonPerintah ini tidak mengembalikan apa pun, tetapi file yang Anda buat akan muncul di direktori tempat Anda menjalankan perintah.
-
Buka file JSON di editor teks biasa dan edit tahap sumber dengan mengubah atau menambahkan parameter.
PollForSourceChangesDalam contoh ini, untuk repositori bernamaUserGitHubRepo, parameter disetel kefalse.Mengapa saya membuat perubahan ini? Mengubah parameter ini akan mematikan pemeriksaan berkala sehingga Anda dapat menggunakan deteksi perubahan berbasis peristiwa saja.
"configuration": { "Owner": "name", "Repo": "UserGitHubRepo","PollForSourceChanges": "false","Branch": "main", "OAuthToken": "****" }, -
Jika Anda bekerja dengan struktur pipeline yang diambil menggunakan get-pipeline perintah, Anda harus mengedit struktur dalam file JSON dengan menghapus
metadatagaris dari file. Jika tidak, update-pipeline perintah tidak dapat menggunakannya. Hapus"metadata"bagian dari struktur pipeline dalam file JSON, termasuk"updated"bidang:{ }dan"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.
-
Untuk menerapkan perubahan Anda, jalankan update-pipeline perintah, tentukan file JSON pipeline, mirip dengan yang berikut:
penting
Pastikan untuk menyertakan
file://sebelum nama file. Diperlukan dalam perintah ini.aws codepipeline update-pipeline --cli-input-json file://pipeline.jsonPerintah 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.
Perbarui pipeline untuk peristiwa push (GitHub (melalui aplikasi OAuth) tindakan sumber) (CloudFormation templat)
Ikuti langkah-langkah berikut untuk memperbarui pipeline Anda (dengan GitHub sumber) dari pemeriksaan berkala (polling) hingga deteksi perubahan berbasis peristiwa menggunakan webhook.
Untuk membangun pipeline berbasis peristiwa AWS CodeCommit, Anda mengedit PollForSourceChanges parameter pipeline Anda dan kemudian menambahkan sumber daya GitHub webhook ke template Anda.
Jika Anda menggunakan CloudFormation untuk membuat dan mengelola pipeline Anda, template Anda memiliki konten seperti berikut ini.
catatan
Perhatikan properti PollForSourceChanges konfigurasi di tahap sumber. Jika template Anda tidak menyertakan properti itu, maka PollForSourceChanges disetel ke true secara default.
Untuk menambahkan parameter dan membuat webhook di template Anda
Kami sangat menyarankan Anda menggunakan AWS Secrets Manager untuk menyimpan kredensibilitas Anda. Jika Anda menggunakan Secrets Manager, Anda harus sudah mengkonfigurasi dan menyimpan parameter rahasia Anda di Secrets Manager. Contoh ini menggunakan referensi dinamis ke Secrets Manager untuk GitHub kredenSIAL untuk webhook Anda. Untuk informasi selengkapnya, lihat Menggunakan Referensi Dinamis untuk Menentukan Nilai Templat.
penting
Saat meneruskan parameter rahasia, jangan masukkan nilainya langsung ke templat. Nilai tersebut diberikan sebagai teks biasa dan karena itu dapat dibaca. Untuk alasan keamanan, jangan gunakan plaintext di CloudFormation template Anda untuk menyimpan kredensibilitas Anda.
Saat Anda menggunakan CLI atau CloudFormation untuk membuat pipeline dan menambahkan webhook, Anda harus menonaktifkan pemeriksaan berkala.
catatan
Untuk menonaktifkan pemeriksaan berkala, Anda harus menambahkan PollForSourceChanges parameter secara eksplisit dan mengaturnya ke false, seperti yang dijelaskan dalam prosedur akhir di bawah ini. Jika tidak, default untuk CLI atau CloudFormation pipeline adalah PollForSourceChanges default true dan tidak ditampilkan dalam output struktur pipa. Untuk informasi selengkapnya tentang PollForSourceChanges default, lihatPengaturan yang valid untuk PollForSourceChanges parameter.
-
Di template, di bawah
Resources, tambahkan parameter Anda: -
Gunakan sumber
AWS::CodePipeline::WebhookCloudFormation daya untuk menambahkan webhook.catatan
Yang
TargetActionAnda tentukan harus sesuaiNamedengan properti tindakan sumber yang ditentukan dalam pipeline.Jika
RegisterWithThirdPartydisetel ketrue, pastikan pengguna yang terkait denganOAuthTokendapat mengatur cakupan yang diperlukan di GitHub. Token dan webhook memerlukan cakupan berikut GitHub :-
repo- digunakan untuk kontrol penuh untuk membaca dan menarik artefak dari repositori publik dan pribadi ke dalam pipa. -
admin:repo_hook- digunakan untuk kontrol penuh kait repositori.
Jika tidak, GitHub mengembalikan 404. Untuk informasi lebih lanjut tentang 404 yang dikembalikan, lihathttps://help.github.com/articles/about-webhooks
. -
-
Simpan template yang diperbarui ke komputer lokal Anda, lalu buka CloudFormation konsol.
-
Pilih tumpukan Anda, lalu pilih Buat Set Perubahan untuk Tumpukan Saat Ini.
-
Unggah template, lalu lihat perubahan yang tercantum di CloudFormation. Ini adalah perubahan yang harus dilakukan pada tumpukan. Anda harus melihat sumber daya baru Anda dalam daftar.
-
Pilih Eksekusi.
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.
-
Di template, ubah
PollForSourceChangeskefalse. Jika Anda tidak menyertakanPollForSourceChangesdalam definisi pipeline Anda, tambahkan dan setel ke false.Mengapa saya membuat perubahan ini? Mengubah parameter ini untuk
falsemematikan pemeriksaan berkala sehingga Anda dapat menggunakan deteksi perubahan berbasis peristiwa saja.
contoh
Saat Anda membuat sumber daya ini dengan CloudFormation, webhook yang ditentukan dibuat di GitHub repositori yang ditentukan. Pipeline Anda dipicu saat komit.