Go以AWS SDK aws-sdk-go-v2
來建立S3 bucket的access point。
範例環境:
- Go 1.19
事前要求
參考「AWS 建立IAM管理使用者及credentials」設定供應用程式存取AWS需要的IAM管理員credentials。
參考「Golang 建立AWS S3 bucket」建立S3 bucket。
下載AWS SDK Go V2 s3control modules
在專案根目錄執行以下命令下載需要的aws-sdk-go-v2 s3control modules。
建立S3 bucket access point
呼叫s3control.NewFromConfig
建立s3control.Client
來操作S3 access point。
呼叫s3contorl.Client.CreateAccessPoint
傳入s3control.CreateAccessPointInput
建立bucket的access point。
s3control.CreateAccessPointInput
填入以下屬性:
AccountId
- 擁有bucket的AWS帳戶號碼。Bucket
- 要建立access point的bucket名稱。Name
- access point名稱。PublicAccessBlockConfiguration
- access point的block public access設定。
main.go
package main
import (
"context"
"fmt"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/service/s3control"
"github.com/aws/aws-sdk-go-v2/service/s3control/types"
)
func main() {
ctx := context.TODO()
client := NewS3ControlClient(ctx)
accountId := "423456789012"
bucket := "aws-s3-bucket-202305021730" // bucket name
apName := "ap-1" // access point name
input := &s3control.CreateAccessPointInput{
AccountId: &accountId,
Bucket: &bucket,
Name: &apName,
PublicAccessBlockConfiguration: &types.PublicAccessBlockConfiguration{
BlockPublicAcls: false,
BlockPublicPolicy: false,
IgnorePublicAcls: false,
RestrictPublicBuckets: false,
},
}
output, err := client.CreateAccessPoint(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
}
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
在AWS console檢視建立的access point。
Access point的block public access設定。
沒有留言:
張貼留言