AWS ECSをプロキシ経由でネットワーク接続する

AWS

cover image from Unsplash

Photo by Wolfgang Hasselmann on Unsplash

本記事について

ECSからプロキシ経由でインターネットに接続する方法について、下記のAWS公式ガイドを元に大まかな流れと注意点をまとめる。 VPCエンドポイントやNATゲートウェイは使用しない。

作業の流れ

ECSにはAmazon ECS コンテナインスタンスを使用する。コンテナインスタンスとはつまるところ、EC2のことであると私は認識している。 EC2インスタンスにプロキシ設定を追加し、ECS上でコンテナを実行する際にEC2を使用するという流れになる。

  1. ECSクラスターの作成 特別な設定は不要。
    この時作成したクラスター名は次のEC2インスタンスのユーザーデータ設定に使用する。

  2. EC2インスタンスの立ち上げ 起動時のユーザーデータ設定にECSで利用するための設定とプロキシ設定を加える。 あるいはインスタンス起動後に手動で設定してもよい。

    Amazon ECS Linux コンテナインスタンスの起動 - Amazon Elastic Container Service

  3. ECSでコンテナインスタンスが利用可能であることを確認する クラスターのコンテナインスタンスタブで登録されていることを確認する。 Image from Gyazoコンテナインスタンスの登録を確認できる画面例。

  4. ECSでサービスorタスク起動 コンピューティングオプションで起動タイプを選択、起動タイプはEC2を選択する。 Image from Gyazoサービス新規作成時の画面。

注意点

import boto3
import botocore
 
session = boto3.Session()
s3 = session.client(
    "s3",
    config=botocore.client.Config(
        proxies={
            "http": "http://proxy.example.com:3128",
            "https": "http://proxy.example.com:3128",
        }
    ),
)