BrunoScheufler/aws-ecs-metadata-go

GitHub: BrunoScheufler/aws-ecs-metadata-go

一个轻量级 Go 库,封装了 AWS Fargate 环境下 ECS Task Metadata Endpoint 的调用,自动适配 v3/v4 元数据版本并返回结构化结果。

Stars: 9 | Forks: 7

# AWS ECS Metadata Go 一个轻量级的封装库,用于从任何运行在由 AWS Fargate 提供的容器中的 Go 服务获取 Elastic Container Service (ECS) Task 元数据。 根据 Fargate 平台版本,你将可以访问不同版本的 Task Metadata Endpoint。如果你运行的是 1.4.0 版本, 你将能够访问[版本 4](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-metadata-endpoint-v4.html),Fargate 1.3.0 及更高版本支持该端点的[版本 3](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-metadata-endpoint-v3.html)。 ## 安装 ``` go get github.com/brunoscheufler/aws-ecs-metadata-go ``` ## 用法 该库允许你根据 Fargate 提供的环境变量,检索你的环境中可用的最新元数据格式。这意味着,使用 `GetTaskMetadata` 你将 收到一个空接口,该接口映射到 Task Metadata 结构的版本 3 或版本 4。 ``` package main import ( "context" metadata "github.com/brunoscheufler/aws-ecs-metadata-go" "log" "net/http" ) func main() { // Fetch ECS Task metadata from environment meta, err := metadata.Get(context.Background(), &http.Client{}) if err != nil { panic(err) } // Based on the Fargate platform version, we'll have access // to v3 or v4 of the ECS Metadata format switch m := meta.(type) { case *metadata.TaskMetadataV3: log.Printf("%s %s:%s", m.Cluster, m.Family, m.Revision) case *metadata.TaskMetadataV4: log.Printf("%s(%s) %s:%s", m.Cluster, m.AvailabilityZone, m.Family, m.Revision) } } ```
标签:AWS, DPI, ECS, EVTX分析, Go, Ruby工具, SOC Prime, Terraform, 元数据, 开发工具, 日志审计