如何在ASP.NET Core中访问EC2实例ID?

时间:2017-12-23 15:52:18

标签: amazon-web-services amazon-ec2 asp.net-core

我在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

1 个答案:

答案 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:

  1. 使用AWS SDK for .NET Version 3 API,拨打EC2 Instance Metadata classEC2Metadata类公开InstanceId属性,该属性返回当前实例的实例ID。

  2. 将实例元数据存储在应用程序的应用程序范围内,以便可以在应用程序启动时初始化 ,然后根据需要引用它以显示给客户端,或者应用日志。见Introduction to session and application state in ASP.NET Core

  3. 使用应用程序范围,您只需在应用程序初始化时检索此数据一次。此应用程序范围数据将在应用程序的生命周期内持续存在。