**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)