如果我在AWS ECS(EC2容器服務)中運行基於Docker的容器,是否可以從應用程序內部識別我的容器是否在AWS ECS上運行?這是必需的,因爲我的Docker容器可以在任何平臺上運行,但是當它在AWS ECS上運行時,我需要執行一些額外的操作。如何識別我的容器是否在AWS ECS上運行?
3
A
回答
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://169.254.169.254/latest/meta-data/
注意,你無需支付用於檢索實例元數據和用戶數據的HTTP請求。
您可以使用諸如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
如果確定這將顯示200。
見「Linux script with curl to check webservice is up」
2
大量的試驗和錯誤之後,我發現了以下最有幫助的:
調用http://169.254.169.254/latest/meta-data/
如果您得到200 OK,那麼你可以假設你是AWS EC2/ECS內運行。
但是,如果您沒有獲得200 OK,那麼您沒有在AWS EC2/ECS中運行。
相關問題
- 1. 如何爲在AWS ECS中運行的Docker容器配置「ulimits」?
- 2. 如何在不退出的情況下在AWS ECS上運行節點容器
- 3. AWS ECS未鏈接我的容器
- 4. 如何在ECS上爲運行UDP服務的容器設置別名?
- 5. AWS ECS容器實例
- 6. AWS ECS - 如何從ECS容器登錄到cloudwatch?
- 7. 如何使用AWS CodePipeline更新ECS上的容器服務
- 8. 如何識別TestNG測試是否在Jenkins上運行?
- 9. 如何唯一標識我的函數正在運行的AWS Lambda容器?
- 10. 如何從EC2主機上的AWS ECS容器內訪問其他AWS服務?
- 11. AWS ECS:不健康的容器
- 12. AWS ECS - 部署容器的方法
- 13. 如何從AWS ECS
- 14. 在Amazon ECS上運行批量作業
- 15. AWS ECS基本容器相當於kubernetes
- 16. 如何在AWS ECS中重新啓動容器?
- 17. 如何識別WPF控件是否爲容器控件?
- 18. 在Docker容器中公開JMX端口容器在ECS集羣上運行
- 19. 在Boto3上使用AWS ECS
- 20. 如何獲取AWS ECS泊塢化器容器中的AWS憑證?
- 21. 使用AWS ECS運行Docker映像
- 22. AWS ECS運行需要多核心
- 23. 使用EFS的AWS ECS上的MongoDB Docker容器
- 24. 如何識別我的網站上是否存在JavaScript衝突?
- 25. 如何識別應用程序是否在後臺運行
- 26. 如何識別代碼是否在web服務中運行?
- 27. SolrCloud在AWS ECS
- 28. 無法連接到AWS ECS上的MySQL容器
- 29. 如何識別Rational Functional Tester是否從命令行運行?
- 30. AWS CodePipeline可以識別我的新GitHub提交 - 但是如何?
如果我在正常的EC2實例上運行,該怎麼辦? –
Amazon ECS代理仍應可訪問。 – VonC
在正常的EC2實例中,curl http:// localhost:51678/v1/metadata - 不起作用。所以我找到了另一種識別相同的方法,就是使用:curl http://169.254.169.254/latest/meta-data/ - 如果你得到200 OK,那麼你在EC2/ECS上運行。 –