Tüm Ürünler
Search
Belge Merkezi

Object Storage Service:SDK quick start

Son Güncelleme:Oct 12, 2026

Java, Python, Go, PHP, C# ve Node.js için OSS SDK'ları uygulamalarınızı paketlere bağlar; nesne yükleme, indirme ve silme işlemlerini destekler. Bir SDK'yı yapılandırmak ve OSS erişimini doğrulamak için bu hızlı başlangıç kılavuzunu kullanın.

Ön koşullar

  1. OSS etkinleştirilmiş ve bir paket oluşturulmuş olmalıdır. Daha fazla bilgi için bkz. Konsol Hızlı Başlangıç.

  2. Bir AccessKey çifti mevcut olmalıdır. AccessKey çiftiniz yoksa bkz. AccessKey çifti oluşturma.

    Önemli

    Alibaba Cloud hesabınızın AccessKey çiftinin ifşa edilme riskini azaltmak için bir RAM kullanıcısının AccessKey çiftini kullanın. En az ayrıcalık ilkesini izleyin ve RAM kullanıcısına test paketi üzerinde oss:PutObject, oss:GetObject ve oss:DeleteObject izinlerini verin.

Erişim kimlik bilgilerini yapılandırma

SDK, AccessKey çiftini ortam değişkenlerinden okur. AccessKey çiftini kodunuzda sabit olarak kodlamayın.

macOS veya 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"

Örnek parametreleri hazırlama

Kodu çalıştırmadan önce aşağıdaki parametreleri gerçek değerlerinizle değiştirin.


Parametre


Örnek değer


Açıklama

region <region-id> Paketin bölge kimliği.
bucket example-bucket Mevcut paketin adı.
key example.txt Örnek nesnenin tam adı. Kod, çıkıştan önce bu nesneyi siler.

Java, Python, Go, PHP ve C# V2 SDK'ları bölge kimliğine göre varsayılan genel uç noktayı kullanır. Bu nedenle, bu örnekte açıkça bir uç nokta yapılandırmanız gerekmez. Node.js SDK'sı için bölge kimliğinin önüne oss- ekleyin. Dahili bir uç nokta, hızlandırma uç noktası veya özel bir etki alanı adı kullanmak için bkz. Uç Noktalar ve Paket Etki Alanları Aracılığıyla OSS'e Erişim.

Önemli

Uyumluluğu ve güvenliği artırmak amacıyla yapılan ilke değişikliği nedeniyle 20 Mart 2025'ten itibaren yeni OSS kullanıcılarının Çin anakarasındaki bölgelerde bulunan OSS paketlerinde veri API işlemleri gerçekleştirmek için mutlaka özel bir etki alanı adı (CNAME) kullanması gerekir. Bu işlemler için varsayılan genel uç noktalar kısıtlanmıştır. Etkilenen işlemlerin tam listesi için resmi duyuruya bakın. Verilerinize HTTPS üzerinden erişiyorsanız özel etki alanınıza geçerli bir SSL Sertifikası bağlamanız gerekir. Konsol HTTPS'yi zorunlu kıldığından bu durum OSS Konsolu erişimi için zorunludur.

SDK örnekleri

Programlama dilinizi seçin. Her sekme, SDK kurulum komutunu ve istemci başlatma, yükleme, indirme doğrulama, silme ve kaynak temizleme işlemleri için eksiksiz kodu sağlar.

Java SDK V2

Maven projenizin pom.xml dosyasına aşağıdaki bağımlılığı ekleyin. Örnek, 0.5.1 sürümünü kullanır.

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>alibabacloud-oss-v2</artifactId>
    <version>0.5.1</version>
</dependency>

Örnek kod:

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");
    }
}

Daha fazla yapılandırma ve örnek için bkz. OSS Java SDK V2.

Python SDK V2

SDK'yı yükleyin. Örnek, 1.3.2 sürümünü kullanır.

python3 -m pip install alibabacloud-oss-v2

Örnek kod:

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()

Daha fazla yapılandırma ve örnek için bkz. OSS Python SDK V2.

Go SDK V2

En son SDK sürümünü yükleyin. Örnek, v1.5.3 sürümünü kullanır.

go get github.com/aliyun/alibabacloud-oss-go-sdk-v2@latest

Örnek kod:

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")
}

Daha fazla yapılandırma ve örnek için bkz. OSS Go SDK V2.

PHP SDK V2

SDK'yı yüklemek için Composer kullanın. Örnek, 0.4.0 sürümünü kullanır.

composer require alibabacloud/oss-v2

Örnek kod:

<?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;

Daha fazla yapılandırma ve örnek için bkz. OSS PHP SDK V2.

C# SDK V2

SDK'yı yükleyin. Örnek, 0.2.0 sürümünü kullanır.

dotnet add package AlibabaCloud.OSS.V2

Örnek kod:

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");

Daha fazla yapılandırma ve örnek için bkz. OSS C# SDK V2.

Node.js SDK

SDK'yı yükleyin. Örnek, 6.23.0 sürümünü kullanır.

npm install ali-oss

Örnek kod:

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;
});

Daha fazla yapılandırma ve örnek için bkz. OSS Node.js SDK.

Sonucu görüntüleme

Başarılı bir çalıştırma aşağıdaki çıktıyı döndürür. Yüklemeden sonra bir hata oluşursa örnek, devam eden depolama kullanımını önlemek için yüklenen nesneyi silmeye yine de çalışır.

Object uploaded
Downloaded content: Hello OSS
Object deleted
Quick start completed

Diğer SDK'lar