Cette rubrique explique comment répertorier les buckets répondant à des conditions spécifiques dans toutes les régions de votre compte.
Remarques sur l'utilisation
L'exemple de code de cette rubrique utilise l'ID de région Chine (Hangzhou)
cn-hangzhou. Par défaut, un endpoint public est utilisé. Pour accéder à OSS depuis d'autres produits Alibaba Cloud au sein de la même région, utilisez un endpoint interne. Pour plus d'informations sur les régions et les endpoints pris en charge par OSS, consultez la section Régions et endpoints.La liste des buckets nécessite l'autorisation
oss:ListBuckets. Pour plus d'informations, consultez la section Accorder des stratégies d'accès personnalisées aux utilisateurs RAM.-
Lorsque vous utilisez un SDK pour répertorier les buckets, vous pouvez spécifier un ID de groupe de ressources afin de filtrer les buckets appartenant à un groupe de ressources spécifique.
Par défaut, lorsque vous utilisez un SDK pour répertorier les buckets, le paramètre d'ID de groupe de ressources n'est pas inclus dans la requête et la réponse au format XML ne contient aucune information relative aux groupes de ressources.
Si vous spécifiez le paramètre d'ID de groupe de ressources dans la requête, OSS renvoie tous les buckets appartenant à ce groupe de ressources.
Si vous ne spécifiez pas le paramètre d'ID de groupe de ressources dans la requête, OSS renvoie tous les buckets dont le demandeur est propriétaire.
Répertorier les buckets d'un compte dans toutes les régions
<?php
require_once __DIR__ . '/../vendor/autoload.php'; // Import the autoloader file to load dependency libraries.
use AlibabaCloud\Oss\V2 as Oss;
// Define the command line argument descriptions.
$optsdesc = [
"region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // The region must be specified. Example: oss-cn-hangzhou.
"endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // The endpoint parameter is optional. The endpoint that other services can use to access OSS.
];
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// Parse the command line arguments.
$options = getopt("", $longopts);
// Check whether all required parameters have been 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"; // A message is displayed, indicating that a required parameter is missing.
exit(1);
}
}
// Retrieve the values of the command line arguments.
$region = $options["region"]; // The region where the bucket is located.
// Load credentials (AccessKeyId and AccessKeySecret) from environment variables.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider(); // Load credentials from environment variables.
// Use the default configurations of the SDK.
$cfg = Oss\Config::loadDefault(); // Load the default configurations of the SDK.
$cfg->setCredentialsProvider($credentialsProvider); // Set the credential provider.
$cfg->setRegion($region); // Set the region.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Set the endpoint if one is provided.
}
// Create an OSSClient instance.
$client = new Oss\Client($cfg);
// Create a paginator for the ListBuckets operation.
$paginator = new Oss\Paginator\ListBucketsPaginator($client); // Create a paginator to list buckets.
$iter = $paginator->iterPage(new Oss\Models\ListBucketsRequest()); // Retrieve the pagination iterator.
// Traverse the paginated results.
foreach ($iter as $page) { // Traverse the list of buckets on each page.
foreach ($page->buckets ?? [] as $bucket) { // Traverse each bucket on the current page.
print ("Bucket: $bucket->name, $bucket->location\n"); // Print the bucket name and its region.
}
}
Répertorier tous les buckets d'un groupe de ressources spécifié
Par défaut, lorsque vous utilisez un SDK pour répertorier les buckets, le paramètre d'ID de groupe de ressources n'est pas inclus dans la requête et la réponse au format XML ne contient aucune information relative aux groupes de ressources.
Si une requête spécifie le paramètre d'ID de groupe de ressources, OSS renvoie tous les buckets de ce groupe de ressources.
Si vous ne spécifiez pas le paramètre d'ID de groupe de ressources dans la requête, OSS renvoie tous les buckets dont le demandeur est propriétaire.
<?php
require_once __DIR__ . '/../vendor/autoload.php'; // Import the autoloader file to load dependency libraries.
use AlibabaCloud\Oss\V2 as Oss;
// Define the command line argument descriptions.
$optsdesc = [
"region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // The region must be specified. Example: oss-cn-hangzhou.
"endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // The endpoint parameter is optional. The endpoint that other services can use to access OSS.
];
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// Parse the command line arguments.
$options = getopt("", $longopts);
// Check whether all required parameters have been 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"; // A message is displayed, indicating that a required parameter is missing.
exit(1);
}
}
// Retrieve the values of the command line arguments.
$region = $options["region"]; // The region where the bucket is located.
// Load credentials (AccessKeyId and AccessKeySecret) from environment variables.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider(); // Load credentials from environment variables.
// Use the default configurations of the SDK.
$cfg = Oss\Config::loadDefault(); // Load the default configurations of the SDK.
$cfg->setCredentialsProvider($credentialsProvider); // Set the credential provider.
$cfg->setRegion($region); // Set the region.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Set the endpoint if one is provided.
}
// Create an OSSClient instance.
$client = new Oss\Client($cfg);
// Create a paginator for the ListBuckets operation.
$paginator = new Oss\Paginator\ListBucketsPaginator($client); // Create a paginator to list buckets.
$iter = $paginator->iterPage(new Oss\Models\ListBucketsRequest(
resourceGroupId: "rg-aekzfalvmw2sxby", // List buckets in the specified resource group.
));
// Traverse the paginated results.
foreach ($iter as $page) { // Traverse the list of buckets on each page.
foreach ($page->buckets ?? [] as $bucket) { // Traverse each bucket on the current page.
print ("Bucket: $bucket->name, $bucket->location\n"); // Print the bucket name and its region.
}
}
Références
Pour obtenir l'exemple de code complet utilisé pour répertorier les buckets, consultez l'exemple GitHub.
Pour plus d'informations sur l'opération API utilisée pour répertorier les buckets, consultez la section ListBuckets (GetService).