2nd memo 2023-08-23¶
ECR¶
[初心者向けシリーズ] Dockerイメージを作成しAmazon ECRにプッシュする方法を確認してみた
第9回【いろいろなサービス使ってみよう編その6】
↑の内容の一部古くなっていた部分の変更版
# jqのインストール(未インストールの場合) sudo yum install jq -y # shell変数の設定 AWS_REGION="us-east-1" ACCOUNT_ID=`aws sts get-caller-identity | jq -r .Account` REPOSITORY_NAME=repo-study-nginx TAG_NAME=${ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/${REPOSITORY_NAME}:latest # ECRのリポジトリ作成 aws ecr create-repository --repository-name ${REPOSITORY_NAME} --region ${AWS_REGION} # dockerイメージをビルド docker build -t $TAG_NAME . # ECRのget-login実行(pushの向き先をECRに向けるため) aws ecr get-login-password --region ${AWS_REGION} | docker login --username AWS --password-stdin ${ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com # ECRにpush docker push $TAG_NAME # 確認 aws ecr list-images --repository-name ${REPOSITORY_NAME} --region ${AWS_REGION}
ECSサービスでの確認(パブリックサブネットに配置してグローバルIPで直接アクセス)¶
- ECSクラスタの作成(study-cluster)
- ECSタスク定義の作成(タスク定義名:study-webserver-taskdef、AWS Fargate、メモリ0.5GB、0.25vCPU、コンテナ名:study-webserver-container、ポートマッピング:80)
- タスクロール、タスク実行ロールはデフォルトの新しく作成する設定で(→ あとで権限足す)
- イメージURIに、ECRのイメージのURIを設定
- 自動で作成させたIAMロール「ecsTaskExecutionRole」に「CloudWatchLogsFullAccess」のポリシーを足す(足さないとサービスの起動時に権限エラーになる)
- ECSサービスの作成
- 起動タイプ: FARGATE、アプリケーションタイプ:サービス、タスク定義に↑で作成したものを選択、(ネットワーキングなどはデフォルト※デフォルトVPCのパブリックサブネットを指定)
- 起動されたタスクの設定から割り振られたグローバルIPを調べて、ブラウザからアクセス
※ 注意:ECSをプライベートサブネットに配置する場合はECSとECRなどが通信できるようにVPCエンドポイントを作成する必要あり
ECSに必要なVPCエンドポイントまとめ(2022年版)