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

问题描述 投票:0回答:1

我在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 - Core Runtime)具有Amazon.Util.EC2InstanceMetadata类,它具有InstanceId属性,允许对我需要的信息进行干净的访问。

谢谢你指出我正确的方向rodrigo-m

amazon-web-services amazon-ec2 asp.net-core
1个回答
2
投票

ASP.NET的EC2Metadata帮助程序类在2013年的AWS Developer Blog中宣布。本文描述了该实用程序类如何提供对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

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

© www.soinside.com 2019 - 2024. All rights reserved.