Les SDK OSS pour Java, Python, Go, PHP, C# et Node.js permettent de connecter vos applications aux buckets et prennent en charge le chargement, le téléchargement et la suppression d'objets. Suivez ce guide de démarrage rapide pour configurer un SDK et vérifier l'accès à OSS.
Prérequis
OSS est activé et un bucket a été créé. Pour plus d'informations, consultez la rubrique Démarrage rapide via la console.
-
Une paire AccessKey est disponible. Si vous ne disposez pas de paire AccessKey, consultez la rubrique Créer une paire AccessKey.
ImportantAfin de réduire les risques liés à l'exposition de la paire AccessKey de votre compte Alibaba Cloud, utilisez la paire AccessKey d'un utilisateur RAM. Appliquez le principe du moindre privilège et accordez à l'utilisateur RAM les autorisations
oss:PutObject,oss:GetObjectetoss:DeleteObjectsur le bucket de test.
Configurer les identifiants d'accès
Le SDK lit la paire AccessKey à partir des variables d'environnement. Ne codez pas en dur une paire AccessKey dans votre code.
macOS ou Linux
export OSS_ACCESS_KEY_ID="yourAccessKeyId"
export OSS_ACCESS_KEY_SECRET="yourAccessKeySecret"
Windows PowerShell
$env:OSS_ACCESS_KEY_ID="yourAccessKeyId"
$env:OSS_ACCESS_KEY_SECRET="yourAccessKeySecret"
Préparer les paramètres de l'exemple
Avant d'exécuter le code, remplacez les paramètres suivants par vos valeurs réelles.
|
Paramètre |
Valeur d'exemple |
Description |
region |
<region-id> |
ID de la région du bucket. |
bucket |
example-bucket |
Nom du bucket existant. |
key |
example.txt |
Nom complet de l'objet d'exemple. Le code supprime cet objet avant de se terminer. |
Les SDK V2 pour Java, Python, Go, PHP et C# utilisent l'endpoint public par défaut basé sur l'ID de la région. Par conséquent, il n'est pas nécessaire de configurer explicitement un endpoint dans cet exemple. Pour le SDK Node.js, préfixez l'ID de la région avec oss-. Pour utiliser un endpoint interne, un endpoint d'accélération ou un nom de domaine personnalisé, consultez la rubrique Accéder à OSS via les endpoints et les domaines de bucket.
En raison d'un changement de politique visant à améliorer la conformité et la sécurité, à compter du 20 mars 2025, les nouveaux utilisateurs d'OSS **doivent utiliser un nom de domaine personnalisé (CNAME) pour effectuer des opérations d'API de données sur les buckets OSS situés dans les régions de Chine continentale. Les endpoints publics par défaut sont restreints pour ces opérations. Consultez l'annonce officielle pour obtenir la liste complète des opérations concernées. Si vous accédez à vos données via HTTPS, vous devez associer un certificat SSL valide à votre nom de domaine personnalisé. Cette mesure est obligatoire pour l'accès via la console OSS, car celle-ci impose l'utilisation du protocole HTTPS.
Exemples de SDK
Sélectionnez votre langage de programmation. Chaque onglet fournit la commande d'installation du SDK ainsi que le code complet pour l'initialisation du client, le chargement, la vérification du téléchargement, la suppression et le nettoyage des ressources.
Java SDK V2
Ajoutez la dépendance suivante au fichier pom.xml de votre projet Maven. L'exemple utilise la version 0.5.1.
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>alibabacloud-oss-v2</artifactId>
<version>0.5.1</version>
</dependency>
Exemple de code :
package com.example.oss;
import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider;
import com.aliyun.sdk.service.oss2.models.DeleteObjectRequest;
import com.aliyun.sdk.service.oss2.models.GetObjectRequest;
import com.aliyun.sdk.service.oss2.models.GetObjectResult;
import com.aliyun.sdk.service.oss2.models.PutObjectRequest;
import com.aliyun.sdk.service.oss2.transport.BinaryData;
import com.aliyun.sdk.service.oss2.utils.IOUtils;
import java.nio.charset.StandardCharsets;
public class QuickStart {
public static void main(String[] args) throws Exception {
String region = "<region-id>";
String bucket = "example-bucket";
String key = "example.txt";
String content = "Hello OSS";
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(new EnvironmentVariableCredentialsProvider())
.region(region)
.build()) {
boolean uploaded = false;
try {
client.putObject(PutObjectRequest.newBuilder()
.bucket(bucket)
.key(key)
.body(BinaryData.fromString(content))
.build());
uploaded = true;
System.out.println("Object uploaded");
String downloaded;
try (GetObjectResult result = client.getObject(GetObjectRequest.newBuilder()
.bucket(bucket)
.key(key)
.build())) {
downloaded = new String(IOUtils.toByteArray(result.body()), StandardCharsets.UTF_8);
}
if (!content.equals(downloaded)) {
throw new IllegalStateException("Downloaded content does not match uploaded content");
}
System.out.println("Downloaded content: " + downloaded);
} finally {
if (uploaded) {
client.deleteObject(DeleteObjectRequest.newBuilder()
.bucket(bucket)
.key(key)
.build());
System.out.println("Object deleted");
}
}
}
System.out.println("Quick start completed");
}
}
Pour plus de configurations et d'exemples, consultez la rubrique OSS Java SDK V2.
Python SDK V2
Installez le SDK. L'exemple utilise la version 1.3.2.
python3 -m pip install alibabacloud-oss-v2
Exemple de code :
import alibabacloud_oss_v2 as oss
def main():
region = "<region-id>"
bucket = "example-bucket"
key = "example.txt"
content = "Hello OSS"
config = oss.config.load_default()
config.credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
config.region = region
client = oss.Client(config)
uploaded = False
try:
client.put_object(oss.PutObjectRequest(
bucket=bucket,
key=key,
body=content.encode("utf-8"),
))
uploaded = True
print("Object uploaded")
result = client.get_object(oss.GetObjectRequest(bucket=bucket, key=key))
with result.body as body_stream:
downloaded = body_stream.read().decode("utf-8")
if downloaded != content:
raise RuntimeError("Downloaded content does not match uploaded content")
print(f"Downloaded content: {downloaded}")
finally:
if uploaded:
client.delete_object(oss.DeleteObjectRequest(bucket=bucket, key=key))
print("Object deleted")
print("Quick start completed")
if __name__ == "__main__":
main()
Pour plus de configurations et d'exemples, consultez la rubrique OSS Python SDK V2.
Go SDK V2
Installez la dernière version du SDK. L'exemple utilise la version v1.5.3.
go get github.com/aliyun/alibabacloud-oss-go-sdk-v2@latest
Exemple de code :
package main
import (
"context"
"fmt"
"io"
"log"
"strings"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func run() (err error) {
region := "<region-id>"
bucket := "example-bucket"
key := "example.txt"
content := "Hello OSS"
ctx := context.Background()
config := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(config)
uploaded := false
defer func() {
if !uploaded {
return
}
_, deleteErr := client.DeleteObject(ctx, &oss.DeleteObjectRequest{
Bucket: oss.Ptr(bucket),
Key: oss.Ptr(key),
})
if deleteErr != nil {
if err == nil {
err = fmt.Errorf("delete object: %w", deleteErr)
}
return
}
fmt.Println("Object deleted")
}()
_, err = client.PutObject(ctx, &oss.PutObjectRequest{
Bucket: oss.Ptr(bucket),
Key: oss.Ptr(key),
Body: strings.NewReader(content),
})
if err != nil {
return fmt.Errorf("upload object: %w", err)
}
uploaded = true
fmt.Println("Object uploaded")
result, err := client.GetObject(ctx, &oss.GetObjectRequest{
Bucket: oss.Ptr(bucket),
Key: oss.Ptr(key),
})
if err != nil {
return fmt.Errorf("download object: %w", err)
}
defer result.Body.Close()
data, err := io.ReadAll(result.Body)
if err != nil {
return fmt.Errorf("read downloaded object: %w", err)
}
downloaded := string(data)
if downloaded != content {
return fmt.Errorf("downloaded content does not match uploaded content")
}
fmt.Printf("Downloaded content: %s\n", downloaded)
return nil
}
func main() {
if err := run(); err != nil {
log.Fatal(err)
}
fmt.Println("Quick start completed")
}
Pour plus de configurations et d'exemples, consultez la rubrique OSS Go SDK V2.
PHP SDK V2
Utilisez Composer pour installer le SDK. L'exemple utilise la version 0.4.0.
composer require alibabacloud/oss-v2
Exemple de code :
<?php
require_once __DIR__ . '/vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
$region = '<region-id>';
$bucket = 'example-bucket';
$key = 'example.txt';
$content = 'Hello OSS';
$config = Oss\Config::loadDefault();
$config->setCredentialsProvider(new Oss\Credentials\EnvironmentVariableCredentialsProvider());
$config->setRegion($region);
$client = new Oss\Client($config);
$uploaded = false;
try {
$putRequest = new Oss\Models\PutObjectRequest($bucket, $key);
$putRequest->body = Oss\Utils::streamFor($content);
$client->putObject($putRequest);
$uploaded = true;
echo 'Object uploaded' . PHP_EOL;
$result = $client->getObject(new Oss\Models\GetObjectRequest($bucket, $key));
$downloaded = $result->body->getContents();
if ($downloaded !== $content) {
throw new RuntimeException('Downloaded content does not match uploaded content');
}
echo 'Downloaded content: ' . $downloaded . PHP_EOL;
} finally {
if ($uploaded) {
$client->deleteObject(new Oss\Models\DeleteObjectRequest($bucket, $key));
echo 'Object deleted' . PHP_EOL;
}
}
echo 'Quick start completed' . PHP_EOL;
Pour plus de configurations et d'exemples, consultez la rubrique OSS PHP SDK V2.
C# SDK V2
Installez le SDK. L'exemple utilise la version 0.2.0.
dotnet add package AlibabaCloud.OSS.V2
Exemple de code :
using System.Text;
using OSS = AlibabaCloud.OSS.V2;
var region = "<region-id>";
var bucket = "example-bucket";
var key = "example.txt";
var content = "Hello OSS";
var config = OSS.Configuration.LoadDefault();
config.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
config.Region = region;
using var client = new OSS.Client(config);
var uploaded = false;
try
{
await client.PutObjectAsync(new OSS.Models.PutObjectRequest
{
Bucket = bucket,
Key = key,
Body = new MemoryStream(Encoding.UTF8.GetBytes(content))
});
uploaded = true;
Console.WriteLine("Object uploaded");
var result = await client.GetObjectAsync(new OSS.Models.GetObjectRequest
{
Bucket = bucket,
Key = key
});
using var body = result.Body ?? throw new InvalidOperationException("The response body is empty");
using var reader = new StreamReader(body, Encoding.UTF8);
var downloaded = await reader.ReadToEndAsync();
if (downloaded != content)
{
throw new InvalidOperationException("Downloaded content does not match uploaded content");
}
Console.WriteLine($"Downloaded content: {downloaded}");
}
finally
{
if (uploaded)
{
await client.DeleteObjectAsync(new OSS.Models.DeleteObjectRequest
{
Bucket = bucket,
Key = key
});
Console.WriteLine("Object deleted");
}
}
Console.WriteLine("Quick start completed");
Pour plus de configurations et d'exemples, consultez la rubrique OSS C# SDK V2.
Node.js SDK
Installez le SDK. L'exemple utilise la version 6.23.0.
npm install ali-oss
Exemple de code :
const OSS = require('ali-oss');
const region = 'oss-<region-id>';
const bucket = 'example-bucket';
const key = 'example.txt';
const content = 'Hello OSS';
const client = new OSS({
region,
bucket,
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
});
async function main() {
let uploaded = false;
try {
await client.put(key, Buffer.from(content, 'utf8'));
uploaded = true;
console.log('Object uploaded');
const result = await client.get(key);
const downloaded = result.content.toString('utf8');
if (downloaded !== content) {
throw new Error('Downloaded content does not match uploaded content');
}
console.log(`Downloaded content: ${downloaded}`);
} finally {
if (uploaded) {
await client.delete(key);
console.log('Object deleted');
}
}
console.log('Quick start completed');
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});
Pour plus de configurations et d'exemples, consultez la rubrique OSS Node.js SDK.
Afficher le résultat
Une exécution réussie renvoie la sortie suivante. Si une erreur survient après le chargement, l'exemple tente toujours de supprimer l'objet chargé afin d'éviter une utilisation continue du stockage.
Object uploaded
Downloaded content: Hello OSS
Object deleted
Quick start completed