Todos os produtos
Search
Central de documentação

Object Storage Service:Ativar o pagamento pelo solicitante com o OSS SDK for Go 2.0

Última atualização: Jul 03, 2026

Quando o pagamento pelo solicitante está ativado em um bucket, quem faz a solicitação arca com as taxas de requisição e tráfego, enquanto o proprietário do bucket paga apenas pelos custos de armazenamento. Esse recurso é ideal para compartilhar dados sem gerar despesas adicionais com requisições e tráfego.

Observações de uso

  • Os códigos de exemplo deste tópico utilizam o ID da região cn-hangzhou, referente à região China (Hangzhou), e o endpoint público. Para acessar o OSS a partir de outros serviços da Alibaba Cloud na mesma região, utilize o endpoint interno. Para mais informações sobre regiões e endpoints do OSS, consulte Regiões e endpoints.

  • Neste tópico, as credenciais de acesso são obtidas por meio de variáveis de ambiente. Para mais detalhes, consulte Configurar credenciais de acesso.

  • Para ativar o pagamento pelo solicitante, é necessária a permissão oss:PutBucketRequestPayment. Para consultar as configurações dessa funcionalidade, é necessária a permissão oss:GetBucketRequestPayment. Para mais informações, consulte Exemplos comuns de políticas do RAM.

Método

Ativar o pagamento pelo solicitante em um bucket

func (c *Client) PutBucketRequestPayment(ctx context.Context, request *PutBucketRequestPaymentRequest, optFns ...func(*Options)) (*PutBucketRequestPaymentResult, error)

Consultar as configurações de pagamento pelo solicitante de um bucket

func (c *Client) GetBucketRequestPayment(ctx context.Context, request *GetBucketRequestPaymentRequest, optFns ...func(*Options)) (*GetBucketRequestPaymentResult, error)

Parâmetros da requisição

Parâmetro

Tipo

Descrição

ctx

context.Context

Contexto da requisição. Use este parâmetro para definir a duração total da operação.

request

*PutBucketRequestPaymentRequest

Parâmetros da requisição. Para mais detalhes, consulte PutBucketRequestPaymentRequest.

*GetBucketRequestPaymentRequest

Parâmetros da requisição. Para mais detalhes, consulte GetBucketRequestPaymentRequest.

optFns

...func(*Options)

Opcional. Parâmetros no nível da operação. Para mais informações, consulte Options.

Parâmetros de resposta

Parâmetro de resposta

Tipo

Descrição

result

*PutBucketRequestPaymentResult

Resposta da operação. Válido quando err é nil. Para mais detalhes, consulte PutBucketRequestPaymentResult.

*GetBucketRequestPaymentResult

Resposta da operação. Válido quando err é nil. Para mais detalhes, consulte GetBucketRequestPaymentResult.

err

error

Mensagem de erro. Um valor diferente de nil indica falha na requisição.

Exemplos

Ativar o pagamento pelo solicitante

O código abaixo demonstra como ativar o pagamento pelo solicitante:

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

// Specify the global variables.
var (
	region     string // The region in which the bucket is located.
	bucketName string // The name of the bucket.
)

// Specify the init function used to initialize command line parameters.
func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}

func main() {
	// Parse the command line arguments.
	flag.Parse()

	// Check whether the bucket name is specified.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}

	// Check whether the region is specified.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// Load the default configurations and specify the credential provider and region.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Create an OSSClient instance.
	client := oss.NewClient(cfg)

	// Create a request to specify the payer of the request.
	putRequest := &oss.PutBucketRequestPaymentRequest{
		Bucket: oss.Ptr(bucketName), // The name of the bucket.
		PaymentConfiguration: &oss.RequestPaymentConfiguration{
			Payer: oss.Requester, // Set the payer of the request to the requester.
		},
	}

	// Send the request to specify the payer of the request.
	putResult, err := client.PutBucketRequestPayment(context.TODO(), putRequest)
	if err != nil {
		log.Fatalf("failed to put bucket request payment %v", err)
	}

	// Display the result.
	log.Printf("put bucket request payment result:%#v\n", putResult)
}

Consultar as configurações de pagamento pelo solicitante de um bucket

O código abaixo demonstra como consultar as configurações de pagamento pelo solicitante de um bucket:

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

// Specify the global variables.
var (
	region     string // The region in which the bucket is located.
	bucketName string // The name of the bucket.
)

// Specify the init function used to initialize command line parameters.
func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}

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

	// Check whether the bucket name is empty.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}

	// Check whether the region is empty.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// Load the default configurations and specify the credential provider and region.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Create an OSS client.
	client := oss.NewClient(cfg)

	// Create a request to query the pay-by-requester configurations of the bucket.
	getRequest := &oss.GetBucketRequestPaymentRequest{
		Bucket: oss.Ptr(bucketName), // The name of the bucket.
	}

	// Execute the request to query the pay-by-requester configurations of the bucket and process the result.
	getResult, err := client.GetBucketRequestPayment(context.TODO(), getRequest)
	if err != nil {
		log.Fatalf("failed to get bucket request payment %v", err)
	}

	// Display the result of the request.
	log.Printf("get bucket request payment result:%#v\n", getResult)
}

Referências

  • Para obter o código de exemplo completo sobre como ativar o pagamento pelo solicitante, acesse o GitHub.

  • Para consultar a referência da API sobre como ativar o pagamento pelo solicitante, veja PutBucketRequestPayment.

  • Para obter o código de exemplo completo sobre como consultar as configurações de pagamento pelo solicitante de um bucket, acesse o GitHub.

  • Para consultar a referência da API sobre como verificar as configurações de pagamento pelo solicitante, veja GetBucketRequestPayment.