網頁

2023/5/11

Golang 刪除AWS S3 bucket access point policy

Go以AWS SDK aws-sdk-go-v2來刪除S3 bucket access point的policy。


範例環境:

  • Go 1.19


事前要求

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

參考「Golang 設定AWS S3 bucket access point policy」設定S3 bucket access point的policy。


刪除S3 access point policy

呼叫s3contorl.Client.DeleteAccessPointPolicy傳入s3control.DeleteAccessPointPolicyInput設定access point的policy。

s3control.DeleteAccessPointPolicyInput填入以下屬性:

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

main.go

package main

import (
    "context"

    "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.DeleteAccessPointPolicyInput{
        AccountId: &accountId,
        Name:      &apName,
    }

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

}

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應用程式後在AWS console檢視access point policy已刪除。

3 則留言:

  1. 請問肉豬大有使用過AWS CDK嗎? 是否AWS SDK操作AWS API有什麼優點才不用CDK呢

    回覆刪除
  2. Hi樓上,AWS CDK我沒用過,查了一下知道其用來做AWS資源的部署用,而AWS SDK則用來整合應用程式和AWS服務,應用場景不太相同。換句話說,若要在應用程式中動態部署AWS資源及使用資源的各種功能,則此時會使用AWS SDK。

    回覆刪除
  3. 看來是我對他們的概念搞混了! 謝謝肉豬大的解答~

    回覆刪除