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
}
測試
執行Go應用程式印出以下。
arn:aws:s3:ap-northeast-1:423456789012:accesspoint/ap-1
ap-1-fpebhno1smg31ehcy4heps8dkz664apn1a-s3alias
423456789012
Internet
<nil>
沒有留言:
張貼留言