我在AWS负载均衡设置中托管了一个ASP.Net Core应用程序,其中包含x个实例。
我要在网页底部显示实际为请求提供服务的EC2实例。
是否有Nuget包或方便的API解决方案来实现这个目标?
自2009年以来有一个关于Stackoverflow的问题:Find out the instance id from within an ec2 machine使用wget调用http://169.254.169.254/latest/meta-data/instance-id来获取实例ID
我希望有一个Nuget包或类似API的解决方案来实现这一目标。
更新 - 解决方案
AWSSDK.Core(适用于.NET的Amazon Web Services SDK - 核心运行时)具有Amazon.Util.EC2InstanceMetadata
类,其具有InstanceId属性,允许对我需要的信息进行简洁访问。
感谢您指出我正确的方向rodrigo-m。
答案 0 :(得分:2)
2013年AWS Developer Blog宣布了ASP.NET的EC2Metadata
助手类。本文介绍了此实用程序类如何提供对EC2实例元数据的轻松访问:
几个月前,我们为SDK添加了一个辅助工具 EC2Metadata。这是一个可以方便地访问EC2的类 实例元数据。实用程序将大多数实例数据表面为静态 字符串和一些复杂数据作为.NET结构。例如, 以下代码示例说明了如何检索当前的EC2 实例的Id和网络接口......
本文还提供了使用它的示例:
string instanceId = EC2Metadata.GetData("/instance-id");
Console.WriteLine("Current instance: {0}", instanceId);
使用此类,请考虑使用以下方法在ASP.NET Core应用程序中检索和存储EC2实例ID:
使用AWS SDK for .NET Version 3 API,拨打EC2 Instance Metadata class。 EC2Metadata
类公开InstanceId
属性,该属性返回当前实例的实例ID。
将实例元数据存储在应用程序的应用程序范围内,以便可以在应用程序启动时初始化 ,然后根据需要引用它以显示给客户端,或者应用日志。见Introduction to session and application state in ASP.NET Core。
使用应用程序范围,您只需在应用程序初始化时检索此数据一次。此应用程序范围数据将在应用程序的生命周期内持续存在。