AWS
LocalStack

http_proxyの設定があるとlocalstackの起動でエラーになる

More than 1 year has passed since last update.

localstack を起動するときに、環境変数 http_proxy (または HTTP_PROXY) が設定されている環境では、以下のように elasticsearch の起動チェックで、何度か WARNING:infra.py:Service "elasticsearch" not yet available, retrying... の警告が出た後、エラーで終了することがある。

WARNING:infra.py:Service "elasticsearch" not yet available, retrying...
ERROR:localstack.services.es.es_starter:Elasticsearch health check failed (retrying...): (以降略)

また、Docker on Mac でもデフォルトがsytsem proxyを参照するようになっているため、OSのネットワーク設定でプロキシが有効になっている場合でも、同様の問題が発生する。

WARNING:infra.pyc:Service "kinesis" not yet available, retrying...
ERROR:infra.pyc:Error checking state of local environment (after some retries): Traceback (most recent call last):
File "/opt/code/localstack/localstack/services/infra.py", line 285, in check_infra
raise e
TypeError: 'NoneType' object has no attribute '__getitem__'
Traceback (most recent call last):
File "bin/localstack", line 79, in <module>
infra.start_infra()
File "/opt/code/localstack/localstack/services/infra.py", line 359, in start_infra
raise e
TypeError: 'NoneType' object has no attribute '__getitem__'

これは、起動チェックでモックサーバに接続しに行くところがプロキシサーバ経由となり、モックサーバに接続できないことが原因である。
このような場合、プロキシサーバを使用しないように環境変数の設定を解除すればエラーは解消するはずである。あるいは、環境変数 no_proxy
no_proxy=<コンテナのhostname>,localhost,127.0.0.1,[::1]
のようにセットすれば、ヘルスチェックがプロキシをバイパスするようになる。

この問題は、#239で解決済みであり、リポジトリから最新版を落としてくるか、PR#244のパッチを適用することで解消する。