如果我在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 CodePipeline更新ECS上的容器服务
- 6. 如何唯一标识我的函数正在运行的AWS Lambda容器?
- 7. 如何从EC2主机上的AWS ECS容器内访问其他AWS服务?
- 8. AWS ECS - 部署容器的方法
- 9. 如何从AWS ECS
- 10. 在Amazon ECS上运行批量作业
- 11. 在Docker容器中公开JMX端口容器在ECS集群上运行
- 12. 如何在AWS ECS中重新启动容器?
- 13. AWS ECS基本容器相当于kubernetes
- 14. 在Boto3上使用AWS ECS
- 15. 如何获取AWS ECS泊坞化器容器中的AWS凭证?
- 16. 如何识别代码是否在web服务中运行?
- 17. 如何识别应用程序是否在后台运行
- 18. 如何识别我的网站上是否存在JavaScript冲突?
- 19. 使用AWS ECS运行Docker映像
- 20. 如何识别Rational Functional Tester是否从命令行运行?
- 21. 无法连接到AWS ECS上的MySQL容器
- 22. SolrCloud在AWS ECS
- 23. 如何检测我是否在AWS Lambda环境中运行?
- 24. 如何检查我是否在iPhone6s Plus模拟器上运行
- 25. 如何运行AWS ECS任务覆盖环境变量
- 26. 使用AWS ECS容器进行成本计算
- 27. 如何在Amazon中安装Amazon ECS容器代理? (ECS-INIT)
- 28. 如何在我的AWS上的静态网站上运行socket.io
- 29. 我做了一个dockerfile,我打算在AWS ECS上运行它,但是因为它需要-t
- 30. iphone识别容器
如果我在正常的EC2实例上运行,该怎么办? –
Amazon ECS代理仍应可访问。 – VonC
在正常的EC2实例中,curl http:// localhost:51678/v1/metadata - 不起作用。所以我找到了另一种识别相同的方法,就是使用:curl http://169.254.169.254/latest/meta-data/ - 如果你得到200 OK,那么你在EC2/ECS上运行。 –