I’m not entirely sure when the change happens, but recently as I was upgrading
AWS CodeBuilds to use a newer version of Ubuntu, I ran into some problems with aws ecr get-login
.
Without making any code changes, my build started to fail with the following:
[Container] 2021/06/21 20:44:19 Running command $(aws ecr get-login --no-include-email --region us-east-1)
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:
aws help
aws <command> help
aws <command> <subcommand> help
aws: error: argument operation: Invalid choice, valid choices are:
batch-check-layer-availability | batch-delete-image
batch-get-image | complete-layer-upload
create-repository | delete-lifecycle-policy
delete-registry-policy | delete-repository
delete-repository-policy | describe-image-scan-findings
describe-images | describe-registry
describe-repositories | get-authorization-token
get-download-url-for-layer | get-lifecycle-policy
get-lifecycle-policy-preview | get-registry-policy
get-repository-policy | initiate-layer-upload
list-images | list-tags-for-resource
put-image | put-image-scanning-configuration
put-image-tag-mutability | put-lifecycle-policy
put-registry-policy | put-replication-configuration
set-repository-policy | start-image-scan
start-lifecycle-policy-preview | tag-resource
untag-resource | upload-layer-part
get-login-password | wait
help
ZshAt a glance I spotted the get-login-password
and jumped to the conclusion that they simply renamed the command. Easy fix!
Except that assumption was wrong, and my next build failed a bit differently:
[Container] 2021/06/21 21:16:25 Running command $(aws ecr get-login-password --no-include-email --region us-east-1)
Unknown options: --no-include-email
ZshAt this point it was time to do some digging to figure out what the new syntax
was supposed to be.
Turns out, the newer command didn’t need any of the arguments and could be
easily piped directly to the docker login
command as such:
[Container] 2021/06/21 21:21:46 Running command aws ecr get-login-password | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com
Login Succeeded
ZshAnd we were off to the races and my builds started to pass again!