Tag: ECR

ECRのパブリックレポジトリをCLIから作成する

2021/09/10 時点だと --region us-east-1 が必要だった。でないと Could not connect to the endpoint URL: "https://api.ecr-public.ap-northeast-1.amazonaws.com/" というエラーがでる。AWS 管理コンソール上は東京リージョンで存在を確認できる。 作成 AWS 管理コンソールでの作り方は パブリックリポジトリの作成 aws ecr-public create-repository --repository-name hogehoge --region us-east-1 削除 aws ecr-public delete-repository --repository-name hogehoge --region us-east-1 push までの流れ push する前にログインする( public とはいえ push にはログインが必要 ビルドする タグづけをする push aws ecr-public get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin public.ecr.aws/hoge docker build -t test-20210910-1 . docker tag test-20210910-1:latest public.ecr.aws/hoge/test-20210910-1:latest docker push public. Read more...

コンテナの再起動

ECSのある環境を再起動したい いろいろな理由で再起動したいことはあります。例えば SecretsManagerの変更したので再起動して反映したい docker-php環境を更新したので、再起動して最新のdockerイメージで起動し直したい 起動時のログを追いかけたいとき などですね。 手順 1. タスク定義のリビジョンを上げる AWS管理画面にログイン 左上のサービス一覧から[ ECS ]を検索してクリック 左側メニューから[ タスク定義 ]を選択 目的の環境のタスク定義をクリック(env25など) 一番新しいリビジョン( 数字の大きいもの )をクリック [ 新しいリビジョンを作成 ]->[ 作成 ] ( この作成は失敗することがあります ) 2. クラスター内の各サービスが参照するタスク定義のリビジョンを上げる ECS管理画面の左側のメニューから[ クラスター ]を選択 [ dev-20181030-1 ] サービス名のカラムから再起動したいサービス名をクリック(env25など) 右上の方の[ 更新 ]をクリック [ リビジョン ]のプルダウンメニューをクリック 少しスライドして[ latest ]と書いてあるタスク定義を選択(1で作成したリビジョン番号を選択) [ 次のステップ ]->[ 次のステップ ]…->[ サービスの更新 ] 以上でECSコンテナの再起動が行われます ※ 再起動ですが、結構時間かかります… 細かく『いまどういう状態なのか?』を確認する場合ですが、 この再起動はブルーグリーン方式で、ダウンタイムが無いように再起動するようにしています。 どのような順番で行われるかというと、 ECSの該当サービスで追加のタスク( タスクの中には nginx, php-fpm, volumeなどのコンテナが含まれます )が追加されます。 タスクはロードバランサーの中のターゲットグループの中に追加されます( EC2 -> ロードバランサー -> ターゲットグループで該当のサービス名が書いてあるターゲットグループを探す ) dockerコンテナはターゲットグループに追加され、ヘルスチェックに成功すると新しいコンテナをheltyにし、アクセスを受け付け始め 、 古いコンテナをdrainingします 上記の流れで『今、デプロイがどのような状態なのか? Read more...