**Core idea:** An EventBridge event from an ECR image push can **start** a CodePipeline execution, but EventBridge is **not** the pipeline’s Source action. The Source remains `Provider: ECR`; EventBridge only calls `StartPipelineExecution`. ## Two jobs, two components | Job | Component | What it does | |-----|-----------|--------------| | **Start the execution** | EventBridge rule on ECR `PUSH` / `SUCCESS` | Target = pipeline ARN → `codepipeline:StartPipelineExecution` | | **Be the Source** | Action `Category: Source`, `Provider: ECR` | Resolves the image; emits `imageDetail.json` (and variables) | EventBridge is **change detection / trigger**. ECR Source is **artifact producer**. Confusing them leads to looking for a non-existent “EventBridge source” provider. ## Valid Source providers (not EventBridge) CodePipeline Source providers include Amazon S3, Amazon ECR, CodeCommit, and CodeStar connections (GitHub, GitLab, Bitbucket, …). **EventBridge is not on that list.** ## Correct flow (ECR push) ``` ECR image push → EventBridge event (detail-type: ECR Image Action) → Rule matches repo + tag → StartPipelineExecution → Pipeline runs → Source stage: ECR action → imageDetail.json → later stages (Build, Deploy, Lambda invoke, …) ``` - **Cause of start** = EventBridge event from the push - **Source action in the definition** = still ECR - A pipeline cannot use “EventBridge alone” as its source; it still needs a real Source action (and ≥2 stages) ## What EventBridge does not replace - Does not supply `imageDetail.json` by itself - Does not replace `Provider: ECR` in the stage JSON - Does not appear as `actionTypeId.Provider` for Source ## Optional: EventBridge still shapes the *revision* The rule can use an **input transformer** to pass a source revision override (e.g. `IMAGE_DIGEST` from `$.detail.image-digest`). That pins which image the ECR Source action resolves. Trigger is still EventBridge; Source is still ECR. Details: [[CodePipeline ECR Image Tag Trigger]]. ## Same split for other sources | Source action | Typical starter | |---------------|-----------------| | ECR | EventBridge on image push | | CodeCommit | EventBridge on repo change | | S3 | EventBridge (± CloudTrail) on object change | | GitHub/GitLab (connection) | Connection-managed detection (you usually do not wire EB yourself) | ## One-liner EventBridge is the doorbell; ECR Source is the package on the porch. ## Sources - [Valid action providers](https://docs.aws.amazon.com/codepipeline/latest/userguide/actions-valid-providers.html) - [Source actions and change detection methods](https://docs.aws.amazon.com/codepipeline/latest/userguide/change-detection-methods.html) - [ECR source actions and EventBridge](https://docs.aws.amazon.com/codepipeline/latest/userguide/create-cwe-ecr-source.html) - [ECR source action reference](https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference-ECR.html)