はじめに
2020年12月にできたパブリックリポジトリへプッシュする方法です。
ECRのプライベートリポジトリへはイメージをプッシュしたことありましたが、
いくつかつまずいたのでこのポイントを載せます!
・AWS-CLIのバージョン
・IAM設定
AWSCLIのバージョンアップ
バージョン確認。
$ aws --version
aws-cli/2.0.8 Python/*****
私の場合はバージョンが古く後ほど指定するコマンドが認識されませんでしたので、
先にバージョンアップします。
公式ドキュメントの方法でバージョンアップ。
macOS での AWS CLI バージョン 2 のインストール
$ curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
$ sudo installer -pkg AWSCLIV2.pkg -target /
念のため確認。
$ aws --version
aws-cli/2.2.31 Python/3.8.8 Darwin/19.6.0 exe/x86_64 prompt/off
ECRのパブリックリポジトリ作成
AWSコンソール画面からリポジトリを作成します。
サービスでElastic Container Registryを選択。
下のようにpublicタブを選択しリポジトリを作成ボタンを押して作成する。

作成後リポジトリごとのURIはタグ付けやプッシュする際に使用する。
プッシュ方法
まずはリポジトリに対して認証させます。
下の図のようにプッシュコマンドの表示ボタンを押すとその方法がでます。

ユーザーごとに専用のコマンドが表示されるのでそれをコピペして実行します。
$ aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/(それぞれのエイリアス)
Login Succeeded
ログイン成功したらDocker Hubやプライベートリポジトリと同じようにimageにタグ付けします。方法もそこに記載されています。
$ docker tag blog_app:latest public.ecr.aws/(それぞれのエイリアス)/blog_app:latest
blog_app:latest
のイメージ名は読み替えてください。
タグ名変更したらプッシュします。
$ docker push public.ecr.aws/(それぞれのエイリアス)/blog_app:latest
このとき私はエラーとなりました(ToT)
An error occurred (AccessDeniedException) when calling the GetAuthorizationToken operation: User: arn:aws:iam::(アカウントID):user/(ユーザー名) is not authorized to perform: ecr-public:GetAuthorizationToken on resource: *
あなたはecr-public
へ権限ありませんよとなってますが、AmazonEC2ContainerRegistryFullAccessはアタッチ済みでした。
IAM設定
IAMの既存のポリシーをよく調べてみたらAmazonElasticContainerRegistryPublicFullAccessというポリシーがありました(**)
私の検索方法が悪くなかなかこのポリシーを見つけることができませんでした。。。

赤線のやつです!
これで再度push
コマンドすれば無事アップロードされます!
私もECRは約半年以上振りに触ってつまずきました。
調べたら2020年末に追加された機能で その間にCLIもIAMもアップデートされてたんでしょうね(^ー^;