利用する際のオートスケールについて書きました。システムによっては、オートスケールしても所定の位置にある画像ファイルを参照したいなどの要件があるかと思います。ついて書きたいと思います。共有ストレージ共有ストレージの種類ECSで利用可能な共有ストレージは、下記になります。非永続データボリュームタスクが終了すると消滅する、揮発性のボリューム。Fargateは非永続ボリュームしか使用できない。レイヤストレージタスク毎に10GB割り当てられ、そこからイメージの容量を差し引いた容量(イメージが4GBなら6GB)を書き込み領域として使用可能。コンテナ間で互いに独立しているため、一切の共有はできない。ボリュームストレージタスク毎に4GB割り当てられ、タスク定義内でDockerボリュームとして利用可能。コンテナ間で共有可能だが、コンテナインスタンス間では共有できないので、2台以上のFagateで共有することはできない。永続データボリュームタスクが終了しても消滅しないボリューム。マネージドボリューム。タスク定義のvolumesにdockerVolumeConfigurationの設定を記載して、コンテナにマウントして使用(公式サイト)。コンテナインスタンス間での共有はできない。バインドマウントホストマシン上のファイルやディレクトリをコンテナにマウントする。タスク定義のvolumesにhostの設定を記載して、コンテナにマウントして使用(公式サイト)。前述の通り、コンテナ間でのストレージ共有はECSの基本的な機能で賄うことができますが、コンテナインスタンスを跨いだストレージ共有は基本的な機能のみでは難しいです。そこで、下記のような方法をとります。使用して、コンテナインスタンス起動時に、共有ストレージを所定の位置にマウントするように設定するタスク定義のバインドマウントを使用して、2で共有ストレージをマウントしたパスを、さらにコンテナにマウントする文章に起こすと複雑ですが、こちらの方法が正攻法です。2019年12月12日現在、EC2起動タイプにしかできない方法になります。アプリケーション側でS3等をストレージとして参照するように設定する共有ストレージとして、S3等のマウントする必要のないストレージサービスを用意するアプリケーション側で用意したS3等の外部ストレージを仮想的にストレージ領域として使用するアプリケーションをECS専用に改修する必要がありますが、EC2起動タイプ、Fargate起動タイプ問わずに利用が可能です。そのため、Fargateを使用する場合は現状こちらの選択肢しか無いかと思います。まとめ今回はECSをオートスケールした際に発生する、共有ストレージの問題について少し詳しくまとめてみました。EC2起動タイプでは、アプリケーション側で一切意識することなく通常のストレージのように共有ストレージを利用する方法が存在しますが、2019年12月12日現在、Fargate起動タイプには存在しません。将来的にはFargateもEFSに対応して、今よりももっと利便性が上がると信じています。k-masatany。