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, 元数据, 开发工具, 日志审计