Todos os produtos
Search
Central de documentação

Object Storage Service:Bloquear acesso público a recursos do OSS no nível de ponto de acesso com o OSS SDK for Go 2.0

Última atualização: Jul 03, 2026

Este tópico descreve como gerenciar configurações de bloqueio de acesso público no nível de ponto de acesso com o OSS SDK for Go V2.

Observações

  • Os códigos de exemplo deste tópico usam o ID da região cn-hangzhou, referente à região China (Hangzhou). Por padrão, o acesso aos recursos em um bucket ocorre pelo endpoint público. Para acessar esses recursos por meio de outros serviços da Alibaba Cloud na mesma região do bucket, use um endpoint interno. Para mais informações sobre as regiões e endpoints compatíveis com o Object Storage Service (OSS), consulte Regiões e endpoints do OSS.

  • Neste tópico, as credenciais de acesso são obtidas de variáveis de ambiente. Para saber mais sobre como configurar credenciais de acesso, consulte Configurar credenciais de acesso (Go SDK V1).

Código de exemplo

Ative o bloqueio de acesso público para um ponto de acesso

O código abaixo exemplifica como ativar o bloqueio de acesso público para um ponto de acesso.

package main

import (
	"context" 
	"flag"    
	"log"    

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"           // Import the OSS SDK package.
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" // Import the package for processing authentication information.
)

var (
	region     string // Define a variable to store the region information obtained from the command line.
	bucketName string // Define a variable to store the bucket name obtained from the command line.
)
 
func init() {
	// Set the command line parameter to specify the region. This parameter is left empty by default.
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	// Set the command line parameter to specify the name of the bucket. This parameter is left empty by default.
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}

func main() {
	flag.Parse() // Parse command line parameters.

	// Define the access point name, which is hardcoded as "access point name" in this example. In actual scenarios, this value should be set according to the actual business requirements or passed through command line parameters.
	var accessPointName = "access point name"

	// Check if the name of the bucket is specified. If not, the program prints an error message indicating that this parameter is required and terminates.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required") // Log the error message and terminate the program.
	}

	// Check if the region information is provided. If not, the program prints an error message indicating that this parameter is required and terminates.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required") // Log the error message and terminate the program.
	}

	// Create a configuration object, load the credential provider from environment variables and specify the region.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg) // Create a new OSS client instance using the configurations.

	// Create a PutAccessPointPublicAccessBlock request to configure block public access settings for a specific access point.
	request := &oss.PutAccessPointPublicAccessBlockRequest{
		Bucket:          oss.Ptr(bucketName), // Specify the name of the bucket.
		AccessPointName: oss.Ptr(accessPointName), // Specify the name of the access point.
		PublicAccessBlockConfiguration: &oss.PublicAccessBlockConfiguration{
			oss.Ptr(true), // Enable block public access.
		},
	}
	putResult, err := client.PutAccessPointPublicAccessBlock(context.TODO(), request) // Send the request to configure block public access settings for the access point.
	if err != nil {
		log.Fatalf("failed to put access point public access block %v", err) // If an error occurs, record the error message and exit.
	}

	log.Printf("put access point public access block result:%#v\n", putResult) // Display the result.
}

Consulte as configurações de bloqueio de acesso público para um ponto de acesso

O exemplo a seguir demonstra como consultar as configurações de bloqueio de acesso público de um ponto de acesso.

package main

import (
	"context" 
	"flag"   
	"log"   

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"           // Import the OSS SDK package.
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" // Import the package for processing authentication information.
)

var (
	region     string // Define a variable to store the region information obtained from the command line.
	bucketName string // Define a variable to store the bucket name obtained from the command line.
)

func init() {
	// Set command line parameters to specify the region. This parameter is left empty by default.
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	// Set command line parameters to specify the bucket name. This parameter is left empty by default.
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}

func main() {
	flag.Parse() // Parse command line parameters.

	// Define the access point name, which is hardcoded as "access point name" in this example. In actual scenarios, this value should be set according to the actual business requirements or by other means.
	var accessPointName = "access point name"

	// Check if the name of the bucket is specified. If not, the program prints an error message indicating that this parameter is required and terminates.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required") // Log the error message and terminate the program.
	}

	// Check if the region information is specified. If not, the program prints an error message indicating that this parameter is required and terminates.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required") // Log the error message and terminate the program.
	}

	// Create a configuration object, load the credential provider from environment variables and specify the region.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg) // Create a new OSS client instance using the configurations.

	// Create a GetAccessPointPublicAccessBlock request to query public access blocking configurations for the specific access point.
	request := &oss.GetAccessPointPublicAccessBlockRequest{
		Bucket:          oss.Ptr(bucketName), // Specify the name of the bucket.
		AccessPointName: oss.Ptr(accessPointName), // Specify the name of the access point.
	}
	getResult, err := client.GetAccessPointPublicAccessBlock(context.TODO(), request) // Make the query request.
	if err != nil {
		log.Fatalf("failed to get access point public access block %v", err) // If an error occurs, record the error message and terminate the program.
	}

	log.Printf("get access point public access block result:%#v\n", getResult) // Display the result.
}

Exclua as configurações de bloqueio de acesso público para um ponto de acesso

Este trecho ilustra como excluir as configurações de bloqueio de acesso público de um ponto de acesso.

package main

import (
	"context" // Used to manage contexts with features such as deadlines and cancellation signals.
	"flag"    // Used to parse command line parameters.
	"log"     // Used to print log information.

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"           // Import the OSS SDK package.
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" // Import the package for processing authentication information.
)

var (
	region     string // Define a variable to store the region information obtained from the command line.
	bucketName string // Define a variable to store the bucket name obtained from the command line.
)

// The init function is executed before the main function to initialize the program.
func init() {
	// Set command line parameters to specify the region. This parameter is left empty by default.
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	// Set command line parameters to specify the name of the bucket. This parameter is left empty by default.
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}

// The main function serves as the entry point of the program.
func main() {
	flag.Parse() // Parse command line parameters.

	// Define the access point name, which is hardcoded as "access point name" in this example. In actual scenarios, this value should be set according to the actual business requirements or by other means.
	var accessPointName = "access point name"

	// Check if the name of the bucket is specified. If not, the program prints an error message indicating that this parameter is required and terminates.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required") // Log the error message and terminate the program.
	}

	// Check if the region information is specified. If not, the program outputs default parameters and terminates.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required") // Log the error message and terminate the program.
	}

	// Create a configuration object, load the credential provider from environment variables and specify the region.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg) // Create a new OSS client instance using the configurations.

	// Create a DeleteAccessPointPublicAccessBlock request to delete the public access blocking configurations for the specific access point.
	request := &oss.DeleteAccessPointPublicAccessBlockRequest{
		Bucket:          oss.Ptr(bucketName), // Specify the name of the bucket.
		AccessPointName: oss.Ptr(accessPointName), // Specify the name of the access point.
	}
	deleteResult, err := client.DeleteAccessPointPublicAccessBlock(context.TODO(), request) // Send the request to delete the public access blocking configurations.
	if err != nil {
		log.Fatalf("failed to delete access point public access block %v", err) // If an error occurs, record the error message and terminate the program.
	}

	log.Printf("delete access point public access block result:%#v\n", deleteResult) // Display the result.
}

Referências

  • Para obter o código de exemplo completo sobre o gerenciamento de configurações de bloqueio de acesso público em pontos de acesso, consulte o Exemplo no GitHub.

  • Para obter detalhes sobre a operação de API usada para ativar o bloqueio de acesso público em um ponto de acesso, consulte PutAccessPointPublicAccessBlock.

  • Para consultar as configurações de bloqueio de acesso público via API, consulte a documentação da operação GetAccessPointPublicAccessBlock.

  • Para excluir configurações de bloqueio de acesso público via API, consulte DeleteAccessPointPublicAccessBlock.