AWSハンズオンでハマったポイント〜「モダンウェブアプリケーションを構築する」
最近案件でAWSを触る機会が増えているのだけど、先方のエンジニアについていけないことがあるので、久しぶりにAWSのハンズオンをやってみたら、かなりハマったのでNoteに挙げておきます。しんどかった。。。
とりあえずDynamoDBとかLambdaを触りたいと思って、以下のハンズオンを発見したのでとりあえずやってみた。
そして、ハマったのはDockerのプッシュの部分。
ハンズオンの指示通りにECRのレポジトリを作って、Dockerのイメージプッシュの準備をして、ログインして実際にプッシュしようと以下のコマンドを実行
docker push REPLACE_ME_WITH_DOCKER_IMAGE_TAG
すると、以下のエラーが出た
d098cf8b4aaa: Preparing
43f5ee255792: Preparing
eff3ad6d29ab: Preparing
4150ea7fca2b: Preparing
b09d20d617a7: Preparing
4942a1abcbfa: Preparing
no basic auth credentials
認証できていなっぽいので、最後の行のエラーを検索、以下のページが出てきた
みてみると、ログインしようと"$(aws ecr get-login --no-include-email)"コマンドを直前に実行してたけど、このコマンドは推奨されないとのこと。まぁハンズオンって古くなるとそういうこともあるよねーと思い、記事の通り以下を実行
aws ecr get-login-password | docker login --username AWS --password-stdin MY-REGISTRY-URL
すると、今度もエラー(以下)
Error response from daemon: login attempt to https://<AWSのアカウント名>.dkr.ecr.us-east-1.amazonaws.com/v2/ failed with status: 400 Bad Request
やっぱり認証?ということで再びググるも有効なページがヒットしない。。ということでここからドツボ。標準出力で出てくるパスワードを直接コマンド内に嵌め込んだり、URIを変えてみたり、最終的に環境再構築してもう一度最初からやってみたりしたけど、一向に解決せず。
当方ド文系からのSIer入社なので、やろうとして挫折すること多々あり、「今度もそのパターンかぁ。。。」と思いながら、一旦リフレッシュ(という名の家事)
何かヒントがないかとAWSコンソールを見ていると以下の項目をAWSコンソールのECR-リポジトリのページで「プッシュコマンドの表示」という項目を発見
気になって開いてみたら使えそうな情報が!
今までのページでDockerイメージの構築に言及していたものはなかったなーということでコマンドを順次実行したら、、
やったー!
でもなんでだろう??Dockerのイメージをビルドするところはハンズオンでもフォローされいて、以下のコマンドを既に実行済みなのですが。。
docker build . -t REPLACE_ME_AWS_ACCOUNT_ID.dkr.ecr.REPLACE_ME_REGION.amazonaws.com/mythicalmysfits/service:latest
URIの指定?認証との前後関係??そもそもDockerがよくわからない???
とはいえ、この部分はあんまりハンズオンの本質には関わらないので、スルーしておいてまた然るべき時に復習します。
同じくここでハマった人に届きますように!!
この記事が気に入ったらサポートをしてみませんか?