はじめに
インターネットゲートウェイを使えない環境で、
踏み台EC2から別アカウントのECRへ接続したいという問い合わせがありました。
本記事では、VPCエンドポイント(Interface型)を利用して接続を実現した構成を紹介します。
構成概要
- ECR:アカウントA
- 踏み台EC2:アカウントB
- 制約:インターネットゲートウェイ利用不可
問い合わせ時の構成
問題点
アカウントAのVPCにあるECRエンドポイントを、
アカウントBから直接利用しようとしても通信できない。
解決方法
アカウントB(踏み台側)にも、ECRのInterfaceエンドポイントを新規作成します。
| サービス名 | 種類 | 用途 |
|---|---|---|
| com.amazonaws.ap-northeast-1.ecr.api | Interface | 認証・API通信 |
| com.amazonaws.ap-northeast-1.ecr.dkr | Interface | Docker通信 |
これにより、アカウントBのVPC内からPrivateLink経由でECRへアクセス可能になります。
ECRリポジトリ側の設定
アカウントAのECRに、アカウントBのアクセスを許可するポリシーを追加します。
- Principal にアカウントBのIDを指定
-
ecr:GetAuthorizationTokenやecr:BatchGetImageなど必要なアクションを許可
接続確認
VPCエンドポイント経由でECR API・DKRにアクセス可能になり、
踏み台EC2から認証・プル・プッシュがすべて成功。
まとめ
| 項目 | 内容 |
|---|---|
| IGW不要 | PrivateLinkで閉域接続 |
| 別アカウントECR | IAMポリシーで許可すればOK |
| 必要なエンドポイント |
ecr.api と ecr.dkr
|
| ポイント | アクセス元VPC側にもエンドポイントを設置すること |
