Todos los productos
Search
Centro de documentos

Object Storage Service:Gestione la ACL de un bucket con OSS SDK para PHP 2.0

Última actualización: Sep 03, 2026

Un bucket es un contenedor que almacena objetos en Object Storage Service (OSS). Todos los objetos se guardan en buckets. Este tema describe cómo configurar y consultar la lista de control de acceso (ACL) de un bucket.

Notas de uso

  • El código de ejemplo de este tema usa el ID de región cn-hangzhou, correspondiente a la región China (Hangzhou). De forma predeterminada, se usa el endpoint público para acceder a los recursos de un bucket. Si desea acceder a los recursos del bucket mediante otros servicios de Alibaba Cloud en la misma región donde se encuentra, utilice un endpoint interno. Para obtener más información sobre las regiones y endpoints de OSS, consulte Regions and endpoints.

  • Para configurar la ACL de un bucket, debe contar con el permiso oss:PutBucketAcl. Para consultarla, requiere el permiso oss:GetBucketAcl. Para obtener más información, consulte Grant a custom policy.

ACL de bucket

La siguiente tabla describe las ACL de bucket.

ACL

Descripción

Método

Private

Solo el propietario del bucket y los usuarios autorizados tienen permisos de lectura y escritura sobre los objetos del bucket. Los demás usuarios no pueden acceder a dichos objetos.

oss.BucketACLPrivate

Public-read

Solo el propietario del bucket y los usuarios autorizados tienen permisos de lectura y escritura sobre los objetos del bucket. Los demás usuarios solo tienen permisos de lectura. Tenga precaución al establecer la ACL del bucket con este valor.

oss.BucketACLPublicRead

Public-read-write

Todos los usuarios tienen permisos de lectura y escritura sobre los objetos del bucket. Tenga precaución al establecer la ACL del bucket con este valor.

oss.BucketACLPublicReadWrite

Ejemplos

  1. El siguiente código de ejemplo muestra cómo configurar la ACL de un bucket:

    <?php
    
    // Introduce autoload files to load dependent libraries.
    require_once __DIR__ . '/../vendor/autoload.php';
    
    use AlibabaCloud\Oss\V2 as Oss;
    
    // Specify descriptions for command line parameters.
    $optsdesc = [
        "region" => ['help' => The region in which the bucket is located.', 'required' => True], // (Required) Specify the region in which the bucket is located.
        "endpoint" => ['help' => The domain names that other services can use to access OSS', 'required' => False], // (Optional) Specify the endpoint that can be used by other services to access OSS.
        "bucket" => ['help' => The name of the bucket, 'required' => True], // (Required) Specify the name of the bucket.
    ];
    
    // Generate a long options list to parse the command line parameters.
    $longopts = \array_map(function ($key) {
        return "$key:"; // Add a colon (:) to the end of each parameter to indicate that a value is required.
    }, array_keys($optsdesc));
    
    // Parse the command line parameters.
    $options = getopt("", $longopts); 
    
    // Check whether the required parameters are configured.
    foreach ($optsdesc as $key => $value) {
        if ($value['required'] === True && empty($options[$key])) {
            $help = $value['help'];
            echo "Error: the following arguments are required: --$key, $help"; // Specify that the required parameters are not configured.
            exit(1); 
        }
    }
    
    // Obtain the values of the command line parameters.
    $region = $options["region"]; // The region in which the bucket is located.
    $bucket = $options["bucket"]; // The name of the bucket.
    
    // Use environment variables to load the AccessKey ID and AccessKey secret.
    $credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
    
    // Use the default configurations of the SDK.
    $cfg = Oss\Config::loadDefault();
    
    // Specify the credential provider.
    $cfg->setCredentialsProvider($credentialsProvider);
    
    // Specify the region.
    $cfg->setRegion($region);
    
    // Specify the endpoint if an endpoint is provided.
    if (isset($options["endpoint"])) {
        $cfg->setEndpoint($options["endpoint"]);
    }
    
    // Create an OSSClient instance.
    $client = new Oss\Client($cfg);
    
    // Create a PutBucketAclRequest object and set the bucket ACL to private.
    $request = new Oss\Models\PutBucketAclRequest(
          bucket: $bucket, 
          acl: Oss\Models\BucketACLType::PRIVATE);
    
    // Use the putBucketAcl method to specify the bucket ACL.
    $result = $client->putBucketAcl($request);
    
    // Display the result.
    printf(
        'status code:' . $result->statusCode . PHP_EOL . // The returned HTTP status code.
        'request id:' . $result->requestId // The request ID of the request, which is the unique identifier of the request.
    );
    
  1. El siguiente código de ejemplo muestra cómo consultar la ACL de un bucket:

    <?php
    
    // Introduce autoload files to load dependent libraries.
    require_once __DIR__ . '/../vendor/autoload.php';
    
    use AlibabaCloud\Oss\V2 as Oss;
    
    // Specify descriptions for command line parameters.
    $optsdesc = [
        "region" => ['help' => The region in which the bucket is located.', 'required' => True], // (Required) Specify the region in which the bucket is located.
        "endpoint" => ['help' => The domain names that other services can use to access OSS', 'required' => False], // (Optional) Specify the endpoint that can be used by other services to access OSS.
        "bucket" => ['help' => The name of the bucket, 'required' => True], // (Required) Specify the name of the bucket.
    ];
    
    // Generate a long options list to parse the command line parameters.
    $longopts = \array_map(function ($key) {
        return "$key:"; // Add a colon (:) to the end of each parameter to indicate that a value is required.
    }, array_keys($optsdesc));
    
    // Parse the command line parameters.
    $options = getopt("", $longopts); 
    
    // Check whether the required parameters are configured.
    foreach ($optsdesc as $key => $value) {
        if ($value['required'] === True && empty($options[$key])) {
            $help = $value['help'];
            echo "Error: the following arguments are required: --$key, $help"; // Display the required but missing parameters.
            exit(1); 
        }
    }
    
    // Obtain the values of the command line parameters.
    $region = $options["region"]; // The region in which the bucket is located.
    $bucket = $options["bucket"]; // The name of the bucket.
    
    // Use environment variables to load the AccessKey ID and AccessKey secret.
    $credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
    
    // Use the default configurations of the SDK.
    $cfg = Oss\Config::loadDefault();
    
    // Specify the credential provider.
    $cfg->setCredentialsProvider($credentialsProvider);
    
    // Specify the region.
    $cfg->setRegion($region);
    
    // Specify the endpoint if an endpoint is provided.
    if (isset($options["endpoint"])) {
        $cfg->setEndpoint($options["endpoint"]);
    }
    
    // Create an OSSClient instance.
    $client = new Oss\Client($cfg);
    
    // Create a GetBucketAclRequest object to query the bucket ACL.
    $request = new Oss\Models\GetBucketAclRequest(bucket: $bucket);
    
    // Use the getBucketAcl method to query the bucket ACL.
    $result = $client->getBucketAcl($request);
    
    // Display the result.
    printf(
        'status code:' . $result->statusCode . PHP_EOL . // The returned HTTP status code.
        'request id:' . $result->requestId . PHP_EOL . // The unique identifier of the request.
        'bucket acl:' . $result->accessControlList->grant // The ACL of the bucket.
    );
    

Referencias

  • Para consultar el código de ejemplo completo sobre cómo configurar la ACL de un bucket, visite GitHub.

  • Para obtener más información sobre la operación de API que permite configurar la ACL de un bucket, consulte PutBucketAcl.

  • Para consultar el código de ejemplo completo sobre cómo consultar la ACL de un bucket, visite GitHub.

  • Para obtener más información sobre la operación de API que permite consultar la ACL de un bucket, consulte GetBucketAcl.