Un bucket est un conteneur utilisé pour stocker des objets dans Object Storage Service (OSS). Tous les objets sont stockés dans des buckets. Cette rubrique explique comment configurer et interroger la liste de contrôle d'accès (ACL) d'un bucket.
Remarques sur l'utilisation
L'exemple de code de cette rubrique utilise l'ID de région
cn-hangzhoude la région Chine (Hangzhou). Par défaut, le point de terminaison public permet d'accéder aux ressources d'un bucket. Pour accéder aux ressources du bucket depuis d'autres services Alibaba Cloud situés dans la même région, utilisez un point de terminaison interne. Pour plus d'informations sur les régions et les points de terminaison OSS, consultez la page Régions et points de terminaison.Pour configurer l'ACL d'un bucket, vous devez disposer de l'autorisation
oss:PutBucketAcl. Pour interroger l'ACL d'un bucket, vous devez disposer de l'autorisationoss:GetBucketAcl. Pour en savoir plus, reportez-vous à la section Accorder une stratégie personnalisée.
ACL des buckets
Le tableau suivant décrit les différents types d'ACL de bucket.
|
ACL |
Description |
Méthode |
|
Private |
Seul le propriétaire du bucket et les utilisateurs autorisés disposent des autorisations de lecture et d'écriture sur les objets du bucket. Les autres utilisateurs ne peuvent pas accéder aux objets du bucket. |
oss.BucketACLPrivate |
|
Public-read |
Seul le propriétaire du bucket et les utilisateurs autorisés disposent des autorisations de lecture et d'écriture sur les objets du bucket. Les autres utilisateurs n'ont que des autorisations de lecture sur les objets du bucket. Soyez prudent lorsque vous définissez l'ACL du bucket sur cette valeur. |
oss.BucketACLPublicRead |
|
Public-read-write |
Tous les utilisateurs disposent des autorisations de lecture et d'écriture sur les objets du bucket. Soyez prudent lorsque vous définissez l'ACL du bucket sur cette valeur. |
oss.BucketACLPublicReadWrite |
Exemples
1. L'exemple de code suivant montre comment configurer l'ACL d'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.
);
2. L'exemple de code suivant montre comment interroger l'ACL d'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.
);
Références
Pour consulter l'exemple de code complet permettant de configurer l'ACL d'un bucket, rendez-vous sur GitHub.
Pour plus d'informations sur l'opération API permettant de configurer l'ACL d'un bucket, consultez la page PutBucketAcl.
Pour consulter l'exemple de code complet permettant d'interroger l'ACL d'un bucket, rendez-vous sur GitHub.
Pour plus d'informations sur l'opération API permettant d'interroger l'ACL d'un bucket, consultez la page GetBucketAcl.