2017-05-26 13 views
3

AWS ECS(EC2 Container Service)でドッカーベースのコンテナを実行している場合、AWS ECS上でコンテナが動作しているかどうかをアプリケーション内から識別できる方法はありますか?これは必須です。私のドッカーコンテナはどのプラットフォームでも実行できますが、AWS ECS上で実行されている場合は、余分な操作を実行する必要があります。コンテナがAWS ECS上で実行されているかどうかを確認するにはどうすればよいですか?

答えて

2

はたぶん、あなたは使用することができAmazon ECS Container Agent Introspection

アマゾンECSコンテナエージェントは、エージェントが実行されているコンテナインスタンスと、そのインスタンス上で実行されている関連するタスクの詳細を収集するためのAPIを提供し

コンテナインスタンス内のcurlコマンドを使用して、Amazon ECSコンテナエージェント(ポート51678)に問い合わせ、コンテナインスタンスのメタデータまたはタスク情報を返すことができます。あなたのコンテナ内から

例えば

、:

[ec2-user ~]$ curl http://localhost:51678/v1/metadata 

出力:

{ 
    "Cluster": "default", 
    "ContainerInstanceArn": "<container_instance_ARN>", 
    "Version": "Amazon ECS Agent - v1.14.1 (467c3d7)" 
} 

別の基準は、OP in the commentsによって言及として、Instance MetaData and User Data

です

インスタンス・メタデータは、実行中のインスタンスの構成または管理に使用できるインスタンスに関するデータです。インスタンスメタデータはカテゴリに分類されます。

は、実行中のインスタンス内から、インスタンスのメタデータのすべてのカテゴリを表示するには、次のURIを使用する:あなたは、インスタンスのメタデータとユーザデータを取得するために使用されるHTTP要求のために課金されていない
http://169.254.169.254/latest/meta-data/ 

cURLなどのツールを使用することも、インスタンスがサポートしている場合はGETコマンドを使用することもできます。例えば:

[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/ 

だから、成功curlは十分です:

curl -sL -w "%{http_code}\\n" "http://169.254.169.254/latest/meta-data/" -o /dev/null 

OKならば200が表示されること。
を参照してください「Linux script with curl to check webservice is up

+0

通常のEC2インスタンスで実行している場合はどうなりますか? –

+1

Amazon ECSエージェントは引き続きアクセス可能です。 – VonC

+0

通常のEC2インスタンスでは、curl http:// localhost:51678/v1/metadata - は機能しません。だから私は同じものを識別する別の方法を見つけました:カールhttp://169.254.169.254/latest/meta-data/ - あなたは200 OKを取得した場合、あなたはEC2/ECSで実行されています。 –

2

試行錯誤の多くの後、私は以下のが最も役に立った:
起動http://169.254.169.254/latest/meta-data/
あなたは200 OKが出た場合、その後、あなたはAWS EC2/ECS内で実行されていると仮定することができます。
200 OKを取得しないと、AWS EC2/ECSで動作していません。

関連する問題