<p>Getting this message:</p>
<pre><code>Failed to pull image....Error response from daemon: pull access denied for {private_repo}, the repository does not exist or may require 'docker login'
</code></pre>
<p>After deploying new helm chart using AWS ECR BUT</p>
<ol>
<li>Full private repo path is correct and image exists in ECR, in ReplicationController: private_repo/serviceXYZ:latest-develop</li>
<li>Other pods using the SAME repo but different paths ARE working, ex: private_repo/serviceABC (their latest local images are several months old and we did deploy them recently which tells me we don't pull them locally but straight from ECR)</li>
<li><code>~/.docker/config.json</code> shows that it's logged in</li>
<li>There is NO secret in other services (no <strong>imagePullSecrets</strong>) which are pulled successfully</li>
</ol>
<p>Any thoughts appreciated.</p>

Anton Kim
<p>You need to authenticate to ECR to pull image. If you haven't done so, follow <a href="https://docs.aws.amazon.com/AmazonECR/latest/userguide/Registries.html#registry_auth" rel="nofollow noreferrer">instructions here</a>. Basically you get an authorization token from AWS to pass it to <code>docker login</code>. The account required by ECR is IAM-based and different from your local Docker account.</p>
<p>If you have already done that, the token may have expired. Log in again then.</p>
<p>The reason you don't have to do this for other pods is likely those images have been built or pulled to local so Docker doesn't have to download it (with the <code>imagePullPolicy</code> of the pod set to <code>IfNotPresent</code> as default).</p>
