AdSense

網頁

2023/7/14

Golang 取得AWS Account ID

Go以AWS提供的SDK aws-sdk-go-v2來取得Account ID。



事前要求

參考「AWS 建立IAM管理使用者及credentials」設定供應用程式存取AWS需要的credentials。


下載AWS SDK Go V2 modules

在專案根目錄執行以下命令下載需要的aws-sdk-go-v2modules。



取得Account ID

在Go程式中呼叫config.LoadDefaultConfig傳入region參數(e.g. "ap-northeast-1")建立aws.Conifg物件,AWS SDK預設會讀取$HOME/.aws/credentials的access keys來通過權限驗證,然後依此參數呼叫sts.NewFromConfig建立sts.Client

呼叫sts.Client.GetCallerIdentity傳入參數sts.GetCallerIdentityInput來取得使用credential的使用者資料。

回傳的sts.GetCallerIdentityOutput.Account即為Account ID。

main.go

package main

import (
    "context"
    "fmt"

    "github.com/aws/aws-sdk-go-v2/config"
    "github.com/aws/aws-sdk-go-v2/service/sts"
)

func main() {
    ctx := context.TODO()
    client := NewStsClient(ctx)

    input := &sts.GetCallerIdentityInput{}
    output, err := client.GetCallerIdentity(ctx, input)
    if err != nil {
        panic(err)
    }

    fmt.Println(*output.Account) // 123456789012
}

func NewStsClient(ctx context.Context) *sts.Client {
    cfg, err := config.LoadDefaultConfig(
        ctx,
        config.WithRegion("ap-northeast-1"),
    )
    if err != nil {
        panic(err)
    }

    return sts.NewFromConfig(cfg) // Create an Amazon STS service client
}

github


測試

執行Go應用程式輸出以下結果。

123456789012


沒有留言:

AdSense