【ITニュース解説】Deploy an App Across Accounts

2025年09月05日に「Dev.to」が公開したITニュース「Deploy an App Across Accounts」について初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

ITニュース概要

Dockerイメージを作成し、AWSのECRに保存して別アカウントと共有するプロジェクトだ。AWS CLIで認証し、DockerイメージをECRにプッシュした。異なるリージョンやアカウント間でプライベートリポジトリを共有するには、ECRポリシーの更新や別リージョンでのリポジトリ作成が必要だった。これでコンテナイメージの安全な管理・共有方法を学んだ。

出典: Deploy an App Across Accounts | Dev.to公開日:

ITニュース解説

システムエンジニアを目指す初心者が、アプリケーションを異なるAWSアカウント間で安全に共有し、利用できるようにするための具体的な手順と、その中で直面する問題の解決方法について解説する。このプロジェクトは、Dockerという技術を使ってアプリケーションをコンテナ化し、Amazon ECR(Elastic Container Registry)というサービスに保存することで実現される。ECRは、AWSが提供するコンテナイメージの保管場所であり、これを活用することで、自分だけでなく、他のアカウントを持つ仲間も同じアプリケーションを簡単に利用できるようになる。

まず、アプリケーションをコンテナ化するためにDockerイメージを作成する。Dockerイメージは、アプリケーションとその実行に必要なすべてのもの(コード、ランタイム、システムツール、ライブラリなど)を一つのまとまりにしたもので、どこでも同じように動作する。このイメージを作るために、Dockerfileという設定ファイルと、実際にウェブページとして表示されるindex.htmlファイルを用意する。Dockerfileには、どのような手順でイメージを構築するか、どのファイルをアプリケーションとして使うかといった指示が書かれている。これにより、作成したウェブコンテンツがDockerコンテナ内で正しく提供されるようになる。

次に、作成したDockerイメージを安全に保存し、管理するためにAmazon ECRリポジトリを設定する。ECRはAWSのサービスで、Dockerイメージをクラウド上で保管し、必要に応じて取り出せるようにする。自分のパソコンから作成したイメージをECRにアップロードすることで、他の人とも簡単に共有できるようになる。

AWSのサービスをコマンドラインから操作するために、AWS CLI(Command Line Interface)を設定する。AWS CLIは、ターミナル上でAWSのさまざまなサービスを管理するためのツールだ。ブラウザでのログイン情報とは別に、CLIがAWSにアクセスするためには専用の認証情報が必要になる。そこで、IAM(Identity and Access Management)というAWSのサービスを使って、新しいユーザーを作成し、「AmazonEC2ContainerRegistryFullAccess」という権限を付与する。このユーザーに対してアクセスキーIDとシークレットアクセスキーという認証情報を発行し、それをAWS CLIに設定する。具体的には、aws configureコマンドを実行し、これらの認証情報とECRリポジトリが作成されているAWSリージョンコードを入力することで、CLIがAWSに対して認証される。

これらの準備が整ったら、作成したDockerイメージを自分のパソコンからECRリポジトリにアップロードする。このアップロードの作業を「プッシュ」と呼ぶ。プッシュを行うためには、まず自分のDockerクライアントがECRに対して認証される必要がある。これには、AWS CLIを使って一時的な認証パスワードを取得し、そのパスワードを使ってDockerにログインするコマンドを実行する。認証が成功したら、docker pushコマンドを使って、ローカルにあるDockerイメージをECRにアップロードする。この際、イメージには「latest」のようなタグを付けることが多い。このタグは、イメージのバージョンを示すもので、「latest」と付けることで、そのイメージが最新バージョンであることを示す。

このプロジェクトを進める中で、いくつかの問題に直面した。一つは、ECRの認証がリージョン(AWSのデータセンターがある地域)に固有であるという点だ。例えば、自分がアフリカのケープタウンリージョン(af-south-1)でECRリポジトリを作成し、仲間が北米のバージニア北部リージョン(us-east-1)にいた場合、仲間は自分のECRリポジトリに認証できない。これを解決するには、仲間が利用するリージョン(us-east-1)にも、同じECRリポジトリを作成する必要があった。これにより、それぞれのリージョンでイメージをプッシュ・プルできるようになる。

もう一つの大きな問題は、異なるAWSアカウント間でイメージを共有する際の権限の問題だった。初めて仲間のイメージをプルしようとした際、アクセスが拒否される「403 Forbidden」エラーが発生した。これは、ECRリポジトリがデフォルトではプライベートであり、他のアカウントからのアクセスが許可されていないためだ。この問題を解決するためには、お互いのECRリポジトリのポリシーを更新する必要があった。具体的には、リポジトリポリシーに相手のIAMユーザーのARN(Amazon Resource Name)を追加し、イメージをプルする権限を明示的に与える設定を行う。これにより、プライベートなリポジトリであっても、許可されたアカウント間での安全なクロスアカウントアクセスが可能となり、お互いのイメージをプルして利用できるようになった。

このように、Docker、ECR、AWS CLI、IAMといったAWSのサービスを組み合わせることで、アプリケーションをコンテナ化し、複数のAWSアカウント間で安全かつ効率的に共有・デプロイする一連のプロセスを学ぶことができる。特に、リージョン固有の認証問題やクロスアカウントでの権限管理は、クラウド環境で開発を進める上で非常に重要なポイントであり、その解決策を理解することはシステムエンジニアとしてのスキルアップに繋がる。

関連コンテンツ

【ITニュース解説】Deploy an App Across Accounts | いっしー@Webエンジニア