はじめに
- 今回は
- Privateサブネット内にある
- EC2インスタンスから
- VPCエンドポイントを使って
- AWS CodeCommitにアクセスし
- リソースを
git clone
- してみます
構造図
- Publicサブネット × 1
- SSHアクセス用の踏み台インスタンス × 1
- Privateサブネット × 2
- VPC(CodeCommit)エンドポイントを置くサブネット × 1
- 〃 を置かないサブネット × 1
-
git clone
をテストする用インスタンス × 1 ずつ
-
つまづきそうなところ
- セキュリティグループの設定
- インバウンド、アウトバウンドの設定を理解していないと沼る危険性があります
- 筆者は時間を溶かしました...
- 本記事では設定の目的を簡潔に添えているため、理解されていない方は一読することを推奨します
- また、間違いがありましたらご指摘ください
- インバウンド、アウトバウンドの設定を理解していないと沼る危険性があります
- IAMユーザ認証の作成
-
git clone
する際には「ユーザ名」と「PW」を求められます - IAMでユーザの認証情報を作成する必要があります
- ドキュメント(ステップ3)を参考にご作成ください
-
手順
1. ネットワークを構築する
- VPC、Publicサブネット、Privateサブネットを作ります
- 作成手順は過去記事: 「Amazon VPCでシンプルなネットワークを構築する」を参照
- VPCの「DNSホスト名」「DNS 解決」はどちらも有効
2. EC2インスタンスを生成する
- 作成手順は過去記事: 「Amazon EC2を起動し、MacのターミナルからSSH接続してみる」を参照
- セキュリティグループ以外は特筆すべき設定はなし
セキュリティグループ
-
CodeCommit-step-sg(踏み台サーバ用)
-
CodeCommit-clong-sg(git cloneテストサーバ用)
3. VPCエンドポイントを作成する
-
サービスカテゴリ: AWSサービス
-
サービス名: com.amazonaws.ap-northeast-1.git-codecommit(
git
で検索すれば出る)
-
VPC: 10.1.0.0/16
-
サブネット: 10.1.2.0/24
-
Enable DNS name: 有効にする
セキュリティグループ
4. EC2インスタンスにgitをインストールする
-
Privateサブネットのインスタンスに入れていく
-
Amazon Linuxn 2にはExtras Library と呼ばれるパッケージ群が存在
- インターネットに繋がなくてもgit等をインストール可能
- 中身は
amazon-linux-extras
で確認可能(アウトバウンドにHTTPを追加する必要あり)
-
いざgitを入れていく
-
sudo yum update -y
- 成功
-
sugo yum install git -y
- 応答がない...
-
-
amazon-linux-extrasから
yum install
するためにはS3エンドポイントを設定する必要がある- パッケージはS3に保存されているため
S3エンドポイントを配置する
- サービスカテゴリ: AWSサービス
- サービス名: com.amazonaws.ap-northeast-1.s3
- ルートテーブルの設定: Privateサブネットのルートテーブル
リベンジ
-
sudo yum install git -y
- 無事にインストール完了
5. CodeCommitにリポジトリを作る
- リポジトリを作成
- リポジトリ名、説明: endpoint-test
- ファイルの作成
- ファイル名: endpoint-test.text
- 内容: endpoint-test
6. IAMで「AWS CodeCommit の HTTPS Git 認証情報」を生成
- IAM
- ユーザー
- リポジトリを作成したユーザを選択
- 「認証情報」タブ
- 「AWS CodeCommit の HTTPS Git 認証情報」で「認証情報を生成」
- これがgit cloneの際に要求される「Username」と「Password」になる
- 保存しておく(取り扱いには注意する)
7. git clone
(HTTPS)
- [CodeCommit]
- リポジトリ → URLのクローン(HTTPS)
- [ローカルのターミナル]
- Privateサブネットのインスタンスにsshアクセス
- 踏み台サーバを経由
- [PrivateサブネットのEC2サーバ内]
-
git clone <CodeCommitリポジトリのHTTPS URL>
- Username, Password: 認証情報を参照して入力
- codecommit-test1、codecommit-test2のどちらも
git clone
可能
-
- 完了
おわりに
- Privateサブネット内のEC2インスタンスからVPCエンドポイントを利用して
git clone
することができました - 理解が浅く不安な点もあるので、ご指摘等ございましたらどしどしコメントください
参考資料
- Git 認証情報を使用した HTTPS ユーザーのセットアップ
- インターフェイス VPC エンドポイント (AWS PrivateLink)
- Codecommit の VPC エンドポイント対応を確認する