網頁

2023/5/11

Golang 取得AWS S3 bucket access point

Go以AWS SDK aws-sdk-go-v2來取得S3 bucket的access point。


範例環境:

  • Go 1.19


事前要求

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

參考「Golang 建立AWS S3 bucket access point」建立S3 bucket access point。


取得S3 bucket access point

呼叫s3contorl.Client.GetAccessPoint傳入s3control.GetAccessPointInput取得bucket的access point。

s3control.GetAccessPointInput填入以下屬性:

  • AccountId - 擁有bucket的AWS帳戶號碼。
  • Name - access point名稱。

main.go

package main

import (
    "context"
    "fmt"

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

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

    client := NewS3ControlClient(ctx)

    accountId := "423456789012"
    apName := "ap-1" // access point name

    input := &s3control.GetAccessPointInput{
        AccountId: &accountId,
        Name:      &apName,
    }

    output, err := client.GetAccessPoint(ctx, input)
    if err != nil {
        panic(err)
    }

    fmt.Println(*output.AccessPointArn)    // arn:aws:s3:ap-northeast-1:423456789012:accesspoint/ap-1
    fmt.Println(*output.Alias)             // ap-1-fpebhno1smg31ehcy4heps8dkz664apn1a-s3alias
    fmt.Println(*output.BucketAccountId)   // 423456789012
    fmt.Println(*&output.NetworkOrigin)    // Internet
    fmt.Println(*&output.VpcConfiguration) // nil

}

func NewS3ControlClient(ctx context.Context) *s3control.Client {
    cfg, err := config.LoadDefaultConfig(
        ctx,
        config.WithRegion("ap-northeast-1"),
    )
    if err != nil {
        panic(err)
    }
    return s3control.NewFromConfig(cfg) // Create an Amazon S3 Control client
}

github



測試

執行Go應用程式印出以下。

arn:aws:s3:ap-northeast-1:423456789012:accesspoint/ap-1
ap-1-fpebhno1smg31ehcy4heps8dkz664apn1a-s3alias
423456789012
Internet
<nil>

沒有留言:

張貼留言