環境
Docker 19.03.8
macOS 10.15.4
IAMユーザーの作成
IAMユーザーを作成し、その後にアクセスキーを設定します。
$ aws configure
AWS Access Key ID [****************]: (credencialsのAccess key ID)
AWS Secret Access Key [****************]: (credencialsのSecret access key)
Default region name [ap-northeast-1]: ap-northeast-1
Default output format [json]: json
そして$ aws configure list
を実行します。
$ aws configure list
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key (credencialsのAccess key ID) env
secret_key (credencialsのSecret access key) env
region ap-northeast-1 config-file ~/.aws/config
※しかしこのときにセキュリティ的に伏せていますが$ aws configure
と$ aws configure list
のアクセスキー及び、シークレットアクセスキーが一致していない前提です
認証トークンを取得し、レジストリに対して Docker クライアントを認証しようとするものの...
$ aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin (アカウントID).dkr.ecr.ap-northeast-1.amazonaws.com
An error occurred (UnrecognizedClientException) when calling the GetAuthorizationToken operation: The security token included in the request is invalid.
このエラーの内容は認証情報周りの設定に問題があることが原因だと言うことがわかりました。アクセスキーとシークレットアクセスキーがenvになっているのでおそらくどこかで環境変数にアクセスキーとシークレットアクセスキーを設定していると考えました。
.bash_profileを確認する
.bash_profileの中を確認してみます。
$ open -a TextEdit ~/.bash_profile
$ aws configure list
で確認されたアクセスキーとシークレットアクセスキーの末尾と一致するアクセスキーとシークレットアクセスキーが表示されましたので削除します。
ターミナルを閉じて再度開いてから$ aws configure list
を実行すると**.bash_profileのアクセスキーとシークレットアクセスキーが優先され、IAMユーザー認証情報が実行できなかった場合に**これでエラーが解消されます。
それ以外のアクセスキーとシークレットアクセスキーが優先されていた場合は...
下記のコマンドを実行し一度リセットします。
$ mv ~/.aws/credentials /tmp/credentials.bak
$ mv ~/.aws/config /tmp/config.bak
# credentialとconfigを削除するコマンド
そして一度ターミナルを閉じてから再度開いて$ aws configure
を実行して再設定する方法もあります。
以上が【ECSリポジトリにローカルのDockerをプッシュできないときの対処方法】になります^_^