Todos los productos
Search
Centro de documentos

Object Storage Service:OSS SDK for Java 2.0 (preview)

Última actualización: Sep 03, 2026

Integre Alibaba Cloud Object Storage Service (OSS) en sus aplicaciones Java para cargar, descargar y gestionar archivos en la nube.

Github | API de OSS SDK para Java | mvnrepository | deepwiki

Integración rápida

Complete los siguientes pasos para comenzar a utilizar el SDK.

image

Requisitos previos

Java 8 o posterior.

Ejecute el comando java -version para comprobar su versión de Java. Si Java no está instalado o si la versión es anterior a Java 8, descargue e instale Java .

Instalar el SDK

Agregue la dependencia del SDK mediante Maven o compílelo desde el código fuente.

Maven

Agregue la siguiente dependencia al archivo pom.xml. Reemplace <version> con la versión más reciente disponible en el Repositorio de Maven.

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>alibabacloud-oss-v2</artifactId>
    <version><!-- Specify the latest version number--></version>
</dependency>

Código fuente

Clone el repositorio desde Github y compílelo con Maven.

mvn clean install -DskipTests -Dgpg.skip=true

Configurar las credenciales de acceso

Establezca las variables de entorno con el par de AccessKey de un usuario de RAM.

En la consola de RAM , cree un usuario de RAM con acceso de tipo Permanent AccessKey Pair . Guarde el par de AccessKey y otorgue el permiso AliyunOSSFullAccess al usuario.

Linux

  1. Ejecute los siguientes comandos en la interfaz de línea de comandos para agregar la configuración de las variables de entorno al archivo ~/.bashrc .

    echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc
    echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc
    1. Ejecute el siguiente comando para aplicar los cambios.

      source ~/.bashrc
    2. Ejecute los siguientes comandos para comprobar que las variables de entorno están configuradas correctamente.

      echo $OSS_ACCESS_KEY_ID
      echo $OSS_ACCESS_KEY_SECRET

macOS

  1. Ejecute el siguiente comando en la terminal para verificar el tipo de shell predeterminado.

    echo $SHELL
    1. Siga los pasos correspondientes a su tipo de shell predeterminado.

      Zsh

      1. Ejecute los siguientes comandos para agregar la configuración de las variables de entorno al archivo ~/.zshrc.

        echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc
        echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc
      2. Ejecute el siguiente comando para aplicar los cambios.

        source ~/.zshrc
      3. Ejecute los siguientes comandos para comprobar que las variables de entorno están configuradas correctamente.

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

      Bash

      1. Ejecute los siguientes comandos para agregar la configuración de las variables de entorno al archivo ~/.bash_profile.

        echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile
        echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profile
      2. Ejecute el siguiente comando para aplicar los cambios.

        source ~/.bash_profile
      3. Ejecute los siguientes comandos para comprobar que las variables de entorno están configuradas correctamente.

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

Windows

CMD

  1. Ejecute los siguientes comandos en el Símbolo del sistema.

    setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID"
    setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"
    1. Ejecute los siguientes comandos para comprobar que las variables de entorno están configuradas correctamente.

      echo %OSS_ACCESS_KEY_ID%
      echo %OSS_ACCESS_KEY_SECRET%

PowerShell

  1. Ejecute los siguientes comandos en PowerShell.

    [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
    [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
    1. Ejecute los siguientes comandos para comprobar que las variables de entorno están configuradas correctamente.

      [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
      [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)

Inicializar el cliente

Inicialice el OSSClient especificando un region.

  • OSSClient implementa AutoCloseable. Con try-with-resources, los recursos se liberan automáticamente sin necesidad de invocar close().

  • La creación y destrucción de OSSClient consume muchos recursos. Utilice el patrón singleton para reutilizar una única instancia e invoque close() explícitamente antes de que finalice la aplicación.

    Patrón singleton

    public class OssClientSingleton {
        private OssClientSingleton() {}
    
        private static class Holder {
            private static final OSSClient INSTANCE = OSSClient.newBuilder()
                .credentialsProvider(new EnvironmentVariableCredentialsProvider())
                .region("cn-hangzhou")
                .build();
        }
    
        public static OSSClient getInstance() {
            return Holder.INSTANCE;
        }
    
        // Close the OSSClient instance. This must be explicitly called.
        public static void shutdown() {
            try {
                getInstance().close();
            } catch (Exception e) {
                // Handle the close exception.
            }
        }
    }
    

OSSClient síncrono

Utilice el cliente síncrono cuando necesite esperar a que cada operación finalice antes de continuar.

import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.OSSClientBuilder;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider;
import com.aliyun.sdk.service.oss2.exceptions.ServiceException;
import com.aliyun.sdk.service.oss2.models.*;
import com.aliyun.sdk.service.oss2.paginator.ListBucketsIterable;

public class Example {
    public static void main(String[] args) {
        String region = "cn-hangzhou";

        CredentialsProvider provider = new EnvironmentVariableCredentialsProvider();
        OSSClientBuilder clientBuilder = OSSClient.newBuilder()
                .credentialsProvider(provider)
                .region(region);

        try (OSSClient client = clientBuilder.build()) {

            ListBucketsIterable paginator = client.listBucketsPaginator(
                    ListBucketsRequest.newBuilder()
                            .build());

            for (ListBucketsResult result : paginator) {
                for (BucketSummary info : result.buckets()) {
                    System.out.printf("bucket: name:%s, region:%s, storageClass:%s\n", info.name(), info.region(), info.storageClass());
                }
            }

        } catch (Exception e) {
//            ServiceException se = ServiceException.asCause(e);
//            if (se != null) {
//                System.out.printf("ServiceException: requestId:%s, errorCode:%s\n", se.requestId(), se.errorCode());
//            }
            System.out.printf("error:\n%s", e);
        }
    }
}

OSSClient asíncrono

Utilice el cliente asíncrono para ejecutar varias operaciones de OSS de forma concurrente sin bloqueos.

import com.aliyun.sdk.service.oss2.OSSAsyncClient;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider;
import com.aliyun.sdk.service.oss2.exceptions.ServiceException;
import com.aliyun.sdk.service.oss2.models.*;

import java.util.concurrent.CompletableFuture;

public class ExampleAsync {
    public static void main(String[] args) {
        String region = "cn-hangzhou";
        CredentialsProvider provider = new EnvironmentVariableCredentialsProvider();

        try (OSSAsyncClient client = OSSAsyncClient.newBuilder()
                .region(region)
                .credentialsProvider(provider)
                .build()) {

            CompletableFuture<ListBucketsResult> future = client.listBucketsAsync(
                    ListBucketsRequest.newBuilder().build()
            );

            future.thenAccept(result -> {
                        for (BucketSummary info : result.buckets()) {
                            System.out.printf("bucket: name:%s, region:%s, storageClass:%s\n",
                                    info.name(), info.region(), info.storageClass());
                        }
                    })
                    .exceptionally(e -> {
//                ServiceException se = ServiceException.asCause(e);
//                if (se != null) {
//                    System.out.printf("Async ServiceException: requestId:%s, errorCode:%s\n",
//                            se.requestId(), se.errorCode());
//                }
                        System.out.printf("async error:\n%s\n", e);
                        return null;
                    });

            future.join();

        } catch (Exception e) {
            System.out.printf("main error:\n%s\n", e);
        }
    }
}

Salida de ejemplo que lista todos los buckets de su cuenta:

bucket: name: examplebucket01, region: cn-hangzhou, storageClass: Standard
bucket: name: examplebucket02, region: cn-hangzhou, storageClass: Standard

Configuraciones del cliente

Configuraciones de cliente compatibles

Nombre del parámetro

Descripción

region

(Obligatorio) La región a la que se envían las solicitudes.

credentialsProvider

Establece la credencial de acceso (obligatorio).

endpoint

El endpoint de acceso.

httpClient

El cliente HTTP.

retryMaxAttempts

El número máximo de intentos de reintento para una solicitud HTTP. El valor predeterminado es 3.

retryer

La implementación de reintentos para una solicitud HTTP.

connectTimeout

El tiempo de espera para establecer una conexión. El valor predeterminado es 5 segundos.

readWriteTimeout

El tiempo de espera para leer y escribir datos. El valor predeterminado es 20 segundos.

insecureSkipVerify

Omite la verificación del certificado SSL. De forma predeterminada, los certificados SSL se verifican.

enabledRedirect

Habilita la redirección HTTP. De forma predeterminada, esta función está deshabilitada.

signatureVersion

La versión de la firma. El valor predeterminado es v4.

disableSsl

De forma predeterminada, las solicitudes se envían mediante HTTPS.

usePathStyle

Las solicitudes con estilo de ruta, también conocidas como estilo de solicitud de dominio de segundo nivel, se utilizan de forma predeterminada con el nombre de dominio alojado en el bucket.

useCName

Utiliza un nombre de dominio personalizado para el acceso. De forma predeterminada, este valor es false.

useDualStackEndpoint

Utiliza un endpoint de pila doble para el acceso. De forma predeterminada, este valor es false.

useAccelerateEndpoint

Utiliza un endpoint de aceleración de transferencia para el acceso. De forma predeterminada, este valor es false.

useInternalEndpoint

Utiliza un endpoint interno de la misma región para el acceso. De forma predeterminada, este valor es false.

additionalHeaders

Encabezados de solicitud adicionales para firmar. Esto es válido para firmas V4.

userAgent

Información adicional de User-Agent.

Uso de un nombre de dominio personalizado

El uso del nombre de dominio predeterminado de OSS puede provocar que los archivos sean inaccesibles o que no se puedan previsualizar. Bind a custom domain name para habilitar la vista previa en el navegador y la aceleración de CDN.

import com.aliyun.sdk.service.oss2.*;
import com.aliyun.sdk.service.oss2.credentials.*;

public class Example {
    public static void main(String[] args) {
        // Load credential information from environment variables for identity verification.
        CredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider();

        // Specify the region where the bucket is located. For example, for China (Hangzhou), set the region to cn-hangzhou.
        String region = "cn-hangzhou";

        // Specify your custom domain name. For example, www.example-***.com.
        String endpoint = "https://www.example-***.com";

        // Create an OSS client with the configured information.
        try (OSSClient client = OSSClient.newBuilder()
                .credentialsProvider(credentialsProvider)
                .region(region)
                .endpoint(endpoint)
                // Note: Set useCName to true to enable the CNAME option. Otherwise, you cannot use a custom domain name.
                .useCName(true)
                .build()) {

            // Use the created client for subsequent operations...

        } catch (Exception e) {
            System.err.println("Error occurred: " + e.getMessage());
        }
    }
}

Control de tiempos de espera

import com.aliyun.sdk.service.oss2.*;
import com.aliyun.sdk.service.oss2.credentials.*;
import java.time.Duration;

public class Example {
    public static void main(String[] args) {
        // Load credential information from environment variables for identity verification.
        CredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider();

        // Specify the region where the bucket is located. For example, for China (Hangzhou), set the region to cn-hangzhou.
        String region = "cn-hangzhou";

        // Create an OSS client with the configured information.
        try (OSSClient client = OSSClient.newBuilder()
                .credentialsProvider(credentialsProvider)
                .region(region)
                // Set the timeout for establishing a connection. The default value is 5 seconds.
                .connectTimeout(Duration.ofSeconds(30))
                // Set the timeout for reading and writing data. The default value is 20 seconds.
                .readWriteTimeout(Duration.ofSeconds(30))
                .build()) {

            // Use the created client for subsequent operations...

        } catch (Exception e) {
            System.err.println("Error occurred: " + e.getMessage());
        }
    }
}

Directiva de reintentos

import com.aliyun.sdk.service.oss2.*;
import com.aliyun.sdk.service.oss2.credentials.*;
import com.aliyun.sdk.service.oss2.retry.*;
import java.time.Duration;

public class Example {
    public static void main(String[] args) {
        /*
         * SDK retry policy configuration description:
         *
         * Default retry policy:
         * When no retry policy is configured, the SDK uses StandardRetryer as the default client implementation.
         * Its default configuration is as follows:
         * - maxAttempts: Sets the maximum number of attempts. The default is 3.
         * - maxBackoff: Sets the maximum backoff time in seconds. The default is 20 seconds.
         * - baseDelay: Sets the base delay time in seconds. The default is 0.2 seconds.
         * - backoffDelayer: Sets the backoff algorithm. The default is the FullJitter backoff algorithm.
         *   Formula: [0.0, 1.0) * min(2^attempts * baseDelay, maxBackoff)
         * - errorRetryables: Retryable error types, including HTTP status codes, service error codes, and client errors.
         *
         * When a retryable error occurs, the provided configuration is used to delay and then retry the request.
         * The overall latency of the request increases with the number of retries. If the default configuration
         * does not meet your scenario requirements, you can configure retry parameters or modify the retry implementation.
         */

        // Load credential information from environment variables for identity verification.
        CredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider();

        // Specify the region where the bucket is located. For example, for China (Hangzhou), set the region to cn-hangzhou.
        String region = "cn-hangzhou";

        // Retry policy configuration example:

        // 1. Customize the maximum number of retries (default is 3, here set to 5).
        Retryer customRetryer = StandardRetryer.newBuilder()
                .maxAttempts(5)
                .build();

        // 2. Customize the backoff delay time.
        // Adjust the baseDelay to 0.5 seconds (default 0.2 seconds) and maxBackoff to 25 seconds (default 20 seconds).
        // Retryer customRetryer = StandardRetryer.newBuilder()
        //         .backoffDelayer(new FullJitterBackoff(Duration.ofMillis(500), Duration.ofSeconds(25)))
        //         .build();

        // 3. Customize the backoff algorithm.
        // Use a fixed-delay backoff algorithm instead of the default FullJitter algorithm, with a 2-second delay each time.
        // Retryer customRetryer = StandardRetryer.newBuilder()
        //         .backoffDelayer(new FixedDelayBackoff(Duration.ofSeconds(2)))
        //         .build();

        // 4. Disable the retry policy.
        // To disable all retry attempts, use the NopRetryer implementation.
        // Retryer customRetryer = new NopRetryer();

        // Create an OSS client with the configured information.
        try (OSSClient client = OSSClient.newBuilder()
                .credentialsProvider(credentialsProvider)
                .region(region)
                .retryer(customRetryer)
                .build()) {

            // Use the created client for subsequent operations...

        } catch (Exception e) {
            System.err.println("Error occurred: " + e.getMessage());
        }
    }
}

Protocolo HTTP/HTTPS

Utilice disableSsl(true) para deshabilitar el protocolo HTTPS.

import com.aliyun.sdk.service.oss2.*;
import com.aliyun.sdk.service.oss2.credentials.*;

public class Example {
    public static void main(String[] args) {
        // Load credential information from environment variables for identity verification.
        CredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider();

        // Specify the region where the bucket is located. For example, for China (Hangzhou), set the region to cn-hangzhou.
        String region = "cn-hangzhou";

        // Create an OSS client with the configured information.
        try (OSSClient client = OSSClient.newBuilder()
                .credentialsProvider(credentialsProvider)
                .region(region)
                // Set to not use HTTPS requests.
                .disableSsl(true)
                .build()) {

            // Use the created client for subsequent operations...

        } catch (Exception e) {
            System.err.println("Error occurred: " + e.getMessage());
        }
    }
}

Uso de un endpoint interno

Utilice un endpoint interno para acceder a OSS dentro de la misma región; esto reduce los costos de tráfico y mejora la velocidad.

import com.aliyun.sdk.service.oss2.*;
import com.aliyun.sdk.service.oss2.credentials.*;

public class Example {
    public static void main(String[] args) {
        // Load credential information from environment variables for identity verification.
        CredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider();

        // Method 1: Specify the region and set useInternalEndpoint to true.
        // Specify the region where the bucket is located. For example, for China (Hangzhou), set the region to cn-hangzhou.
        String region = "cn-hangzhou";

        // // Method 2: Directly specify the region and endpoint.
        // // Specify the region where the bucket is located. For example, for China (Hangzhou), set the region to cn-hangzhou.
        // String region = "cn-hangzhou";
        // // Specify the internal endpoint for the bucket's region. For China (Hangzhou), the endpoint is 'oss-cn-hangzhou-internal.aliyuncs.com'.
        // String endpoint = "oss-cn-hangzhou-internal.aliyuncs.com";

        // Create an OSS client with the configured information.
        try (OSSClient client = OSSClient.newBuilder()
                .credentialsProvider(credentialsProvider)
                .region(region)
                .useInternalEndpoint(true)
                // .endpoint(endpoint) // If using Method 2, uncomment this line and comment out the previous one.
                .build()) {

            // Use the created client for subsequent operations...

        } catch (Exception e) {
            System.err.println("Error occurred: " + e.getMessage());
        }
    }
}

Uso de un endpoint de aceleración de transferencia

import com.aliyun.sdk.service.oss2.*;
import com.aliyun.sdk.service.oss2.credentials.*;

public class Example {
    public static void main(String[] args) {
        // Load credential information from environment variables for identity verification.
        CredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider();

        // Method 1: Specify the region and set useAccelerateEndpoint to true.
        // Specify the region where the bucket is located. For example, for China (Hangzhou), set the region to cn-hangzhou.
        String region = "cn-hangzhou";

        // // Method 2: Directly specify the region and transfer acceleration endpoint.
        // // Specify the region where the bucket is located. For example, for China (Hangzhou), set the region to cn-hangzhou.
        // String region = "cn-hangzhou";
        // // Specify the transfer acceleration endpoint for the bucket's region, for example, 'https://oss-accelerate.aliyuncs.com'.
        // String endpoint = "https://oss-accelerate.aliyuncs.com";

        // Create an OSS client with the configured information.
        try (OSSClient client = OSSClient.newBuilder()
                .credentialsProvider(credentialsProvider)
                .region(region)
                .useAccelerateEndpoint(true)
                // .endpoint(endpoint) // If using Method 2, uncomment this line and comment out the previous one.
                .build()) {

            // Use the created client for subsequent operations...

        } catch (Exception e) {
            System.err.println("Error occurred: " + e.getMessage());
        }
    }
}

Uso de un dominio privado

import com.aliyun.sdk.service.oss2.*;
import com.aliyun.sdk.service.oss2.credentials.*;

public class Example {
    public static void main(String[] args) {
        // Load credential information from environment variables for identity verification.
        CredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider();

        // Specify the region where the bucket is located. For example, for China (Hangzhou), set the region to cn-hangzhou.
        String region = "cn-hangzhou";

        // Specify your private domain. For example: https://service.corp.example.com
        String endpoint = "https://service.corp.example.com";

        // Create an OSS client with the configured information.
        try (OSSClient client = OSSClient.newBuilder()
                .credentialsProvider(credentialsProvider)
                .region(region)
                .endpoint(endpoint)
                .build()) {

            // Use the created client for subsequent operations...

        } catch (Exception e) {
            System.err.println("Error occurred: " + e.getMessage());
        }
    }
}

Uso de un nombre de dominio de Gov Cloud

Configure un OSSClient mediante un nombre de dominio de Alibaba Gov Cloud.

import com.aliyun.sdk.service.oss2.*;
import com.aliyun.sdk.service.oss2.credentials.*;

public class Example {
    public static void main(String[] args) {
        // Load credential information from environment variables for identity verification.
        CredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider();

        // Specify the region and endpoint.
        // Specify the region where the bucket is located. For China (Beijing) Gov Cloud 1, set the region to cn-north-2-gov-1.
        String region = "cn-north-2-gov-1";
        // Specify the internal endpoint for the bucket's region. For China (Beijing) Gov Cloud 1, the endpoint is 'https://oss-cn-north-2-gov-1-internal.aliyuncs.com'.
        // To specify the HTTP protocol, set the domain to 'http://oss-cn-north-2-gov-1-internal.aliyuncs.com'.
        String endpoint = "https://oss-cn-north-2-gov-1-internal.aliyuncs.com";

        // Create an OSS client with the configured information.
        try (OSSClient client = OSSClient.newBuilder()
                .credentialsProvider(credentialsProvider)
                .region(region)
                .endpoint(endpoint)
                .build()) {

            // Use the created client for subsequent operations...

        } catch (Exception e) {
            System.err.println("Error occurred: " + e.getMessage());
        }
    }
}

Uso de un HTTPClient personalizado

Utilice un cliente HTTP personalizado cuando los parámetros de configuración estándar sean insuficientes.

import com.aliyun.sdk.service.oss2.*;
import com.aliyun.sdk.service.oss2.credentials.*;
import com.aliyun.sdk.service.oss2.transport.HttpClient;
import com.aliyun.sdk.service.oss2.transport.HttpClientOptions;
import com.aliyun.sdk.service.oss2.transport.apache5client.Apache5HttpClientBuilder;
import java.time.Duration;

public class Example {
    public static void main(String[] args) {
        // Load credential information from environment variables for identity verification.
        CredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider();

        // Specify the region where the bucket is located. For example, for China (Hangzhou), set the region to cn-hangzhou.
        String region = "cn-hangzhou";

        // Set the parameters for the HTTP client.
        HttpClientOptions httpClientOptions = HttpClientOptions.custom()
                // Connection timeout. The default value is 5 seconds.
                .connectTimeout(Duration.ofSeconds(30))
                // Timeout for reading and writing data. The default value is 20 seconds.
                .readWriteTimeout(Duration.ofSeconds(30))
                // Maximum number of connections. The default value is 1024.
                .maxConnections(2048)
                // Specifies whether to skip certificate verification. By default, this is false.
                .insecureSkipVerify(false)
                // Specifies whether to enable HTTP redirection. By default, this is disabled.
                .redirectsEnabled(false)
                // Set the proxy server.
                // .proxyHost("http://user:passswd@proxy.example-***.com")
                .build();

        // Create an HTTP client and pass in the HTTP client parameters.
        HttpClient httpClient = Apache5HttpClientBuilder.create()
                .options(httpClientOptions)
                .build();

        // Create an OSS client with the configured information.
        try (OSSClient client = OSSClient.newBuilder()
                .credentialsProvider(credentialsProvider)
                .region(region)
                .httpClient(httpClient)
                .build()) {

            // Use the created client for subsequent operations...

        } catch (Exception e) {
            System.err.println("Error occurred: " + e.getMessage());
        }
    }
}

Configuración de credenciales de acceso

El SDK admite varios tipos de credenciales. Elija el método que mejor se adapte a sus necesidades de autenticación.

Cómo elegir las credenciales de acceso

Método de inicialización del proveedor de credenciales

Escenario

Compatibilidad con Java SDK 2.0

Credenciales subyacentes

Validez de las credenciales

Método de rotación o renovación de credenciales

Use the AccessKey pair of a RAM user

Aplicaciones en un entorno seguro que requieren acceso a largo plazo sin rotación frecuente de credenciales.

Compatibilidad integrada

AccessKey

A largo plazo

Rotación manual

Use an STS token

Aplicaciones en un entorno no confiable donde usted controla el periodo de validez y los permisos de acceso.

Compatibilidad integrada

Token de Security Token Service

Temporal

Renovación manual

Use RAM role ARN credentials

Acceso entre cuentas a OSS que requiere credenciales temporales obtenidas al asumir un rol de RAM.

Compatibilidad extendida

Token de Security Token Service

Temporal

Renovación automática

Use ECS RAM role credentials

Aplicaciones en instancias ECS, instancias ECI o Container Service for Kubernetes.

Compatibilidad extendida

Token de Security Token Service

Temporal

Renovación automática

Use OIDC role ARN credentials

RRSA en Container Service for Kubernetes para aislamiento de permisos a nivel de pod.

Compatibilidad extendida

Token de Security Token Service

Temporal

Renovación automática

Use custom access credentials

Obtención personalizada de credenciales cuando los métodos anteriores son insuficientes.

Compatibilidad integrada

Personalizada

Personalizada

Personalizada

Anonymous access

Acceso a recursos de OSS con lectura pública sin credenciales.

Compatibilidad integrada

Ninguna

Ninguna

Ninguna

Las funciones de credenciales marcadas como Compatibilidad extendida deben implementarse mediante el método de credenciales de acceso personalizadas y la biblioteca de gestión de credenciales de Alibaba Cloud. El SDK ofrece compatibilidad integrada para los métodos básicos de configuración de credenciales. Puede implementar las funciones extendidas si integra la biblioteca credentials-java.

Uso del par de AccessKey de un usuario de RAM

Inicialice el proveedor de credenciales con el par de AccessKey (AccessKey ID y AccessKey secret) de una cuenta de Alibaba Cloud o de un usuario de RAM. Este método es adecuado para aplicaciones en entornos seguros que necesitan acceso a OSS a largo plazo. Requiere mantenimiento manual de claves, lo cual incrementa el riesgo de seguridad.

Importante
  • Una cuenta de Alibaba Cloud tiene permisos completos sobre sus recursos. La filtración de su par de AccessKey representa un riesgo de seguridad significativo. Utilice un usuario de RAM con los permisos mínimos necesarios.

  • Para crear un par de AccessKey para un usuario de RAM, consulte Create an AccessKey pair. El AccessKey ID y el secreto solo se muestran en el momento de la creación. Guárdelos de inmediato. Si los pierde, cree un nuevo par.

Configuración de variables de entorno

Linux/macOS

  1. Establezca las variables de entorno con el par de AccessKey del usuario de RAM.

    export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'
    export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'
  2. Ejecute los siguientes comandos para comprobar que las variables de entorno están configuradas.

    echo $OSS_ACCESS_KEY_ID
    echo $OSS_ACCESS_KEY_SECRET

Windows

CMD

setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID"
setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"

PowerShell

[Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
[Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)

Ejemplo de código

import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider;

public class OSSExample {
    public static void main(String[] args) {
        // Load credential information from environment variables for identity verification.
        CredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider();
        
        // Create an OSS client.
        try (OSSClient client = OSSClient.newBuilder()
                .credentialsProvider(credentialsProvider)
                .region("cn-hangzhou") // Specify the region where the bucket is located.
                .build()) {
            
            // Use the created client for subsequent operations...
            
        } catch (Exception e) {
            System.err.println("Operation failed: " + e.getMessage());
        }
    }
}

Configuración estática de credenciales

Codifique las credenciales de acceso directamente al establecer el par de AccessKey de forma explícita.

Aviso

No inserte credenciales de acceso en sus aplicaciones de producción. Este método es solo para fines de prueba.

import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.StaticCredentialsProvider;

public class OSSExample {
    public static void main(String[] args) {
        // Create a static credential provider and explicitly set the AccessKey pair.
        // Replace with your RAM user's AccessKey ID and AccessKey secret.
        CredentialsProvider credentialsProvider = new StaticCredentialsProvider(
                "YOUR_ACCESS_KEY_ID",
                "YOUR_ACCESS_KEY_SECRET"
        );
        
        // Create an OSS client.
        try (OSSClient client = OSSClient.newBuilder()
                .credentialsProvider(credentialsProvider)
                .region("cn-hangzhou") // Specify the region where the bucket is located.
                .build()) {
            
            // Use the created client for subsequent operations...
            
        } catch (Exception e) {
            System.err.println("Operation failed: " + e.getMessage());
        }
    }
}

Uso de un token de STS

Utilice credenciales temporales de Security Token Service (STS) —un AccessKey ID, un AccessKey secret y un token de seguridad— para acceder a OSS con límite de tiempo. Debe renovar manualmente el token antes de que caduque.

Configuración de variables de entorno

Importante
  • Este método utiliza credenciales de identidad temporales (AccessKey ID, AccessKey secret y un token de Security Token Service [STS]) que obtiene de STS, no el par de AccessKey de un usuario de RAM.

  • El AccessKey ID que obtiene de STS comienza con "STS"; por ejemplo, "STS.L4aBSCSJVMuKg5U1****".

Linux/macOS

export OSS_ACCESS_KEY_ID=<STS_ACCESS_KEY_ID>
export OSS_ACCESS_KEY_SECRET=<STS_ACCESS_KEY_SECRET>
export OSS_SESSION_TOKEN=<STS_SECURITY_TOKEN>

Windows

set OSS_ACCESS_KEY_ID=<STS_ACCESS_KEY_ID>
set OSS_ACCESS_KEY_SECRET=<STS_ACCESS_KEY_SECRET>
set OSS_SESSION_TOKEN=<STS_SECURITY_TOKEN>

Ejemplo de código

import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider;

public class OSSExample {
    public static void main(String[] args) {
        // Load the authentication information required to access OSS from environment variables for identity verification.
        CredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider();
        
        // Create an OSS client.
        try (OSSClient client = OSSClient.newBuilder()
                .credentialsProvider(credentialsProvider)
                .region("cn-hangzhou") // Specify the region where the bucket is located.
                .build()) {
            
            // Use the created client for subsequent operations...
            
        } catch (Exception e) {
            System.err.println("Operation failed: " + e.getMessage());
        }
    }
}

Configuración estática de credenciales

Codifique las credenciales temporales directamente al establecer el par de AccessKey y el token de seguridad de forma explícita.

Aviso

No inserte credenciales de acceso en sus aplicaciones de producción. Este método es solo para fines de prueba.

import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.StaticCredentialsProvider;

public class OSSExample {
    public static void main(String[] args) {
        // Specify the obtained temporary AccessKey ID and AccessKey secret.
        // Note that the AccessKey ID obtained from STS starts with "STS".
        String stsAccessKeyId = "STS.****************";
        String stsAccessKeySecret = "yourAccessKeySecret";
        String stsSecurityToken = "yourSecurityToken";
        
        // Create a static credential provider and explicitly set the temporary AccessKey pair and STS security token.
        CredentialsProvider credentialsProvider = new StaticCredentialsProvider(
                stsAccessKeyId,
                stsAccessKeySecret,
                stsSecurityToken
        );
        
        // Create an OSS client.
        try (OSSClient client = OSSClient.newBuilder()
                .credentialsProvider(credentialsProvider)
                .region("cn-hangzhou") // Specify the region where the bucket is located.
                .build()) {
            
            // Use the created client for subsequent operations...
            
        } catch (Exception e) {
            System.err.println("Operation failed: " + e.getMessage());
        }
    }
}

Uso de credenciales ARN de rol de RAM

Para el acceso entre cuentas, utilice el ARN de un rol de RAM para inicializar un proveedor de credenciales. El SDK llama automáticamente a AssumeRole para obtener y renovar tokens de STS. Puede establecer el parámetro policy para restringir aún más los permisos.

Importante
  • Una cuenta de Alibaba Cloud tiene permisos completos sobre sus recursos. La filtración de su par de AccessKey representa un riesgo de seguridad significativo. Utilice un usuario de RAM con los permisos mínimos necesarios.

  • Para crear un par de AccessKey para un usuario de RAM, consulte Create an AccessKey pair. El AccessKey ID y el secreto solo se muestran en el momento de la creación. Guárdelos de inmediato. Si los pierde, cree un nuevo par.

  • Para obtener un ARN de rol de RAM, consulte Create a RAM role.

Adición de una dependencia

Agregue la dependencia de gestión de credenciales de Alibaba Cloud a su archivo pom.xml.

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>credentials-java</artifactId>
    <version>0.3.4</version>
</dependency>

Configuración de un par de AccessKey y un ARN de rol de RAM como credenciales de acceso

import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.credentials.Credentials;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProviderSupplier;
// Note: The following imports are from the external dependency credentials-java
import com.aliyun.credentials.Client;
import com.aliyun.credentials.models.Config;

public class OSSExample {
    public static void main(String[] args) {
        // Configure RAM role ARN credentials.
        Config credentialConfig = new Config()
                .setType("ram_role_arn")
                // Obtain the RAM user's AccessKey pair (AccessKey ID and AccessKey secret) from environment variables.
                .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
                // The ARN of the RAM role to assume. Example value: acs:ram::123456789012****:role/adminrole
                // You can set the RoleArn via the ALIBABA_CLOUD_ROLE_ARN environment variable.
                .setRoleArn("acs:ram::123456789012****:role/adminrole")
                // The role session name. You can set the RoleSessionName via the ALIBABA_CLOUD_ROLE_SESSION_NAME environment variable.
                .setRoleSessionName("your-session-name")
                // Set a more restrictive permission policy. This is optional. Example value: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}
                .setPolicy("{\"Statement\": [{\"Action\": [\"*\"],\"Effect\": \"Allow\",\"Resource\": [\"*\"]}],\"Version\":\"1\"}")
                // Set the role session validity period in seconds. The default is 3600 seconds (1 hour). This is optional.
                .setRoleSessionExpiration(3600);

        Client credentialClient = new Client(credentialConfig);

        // Create a credential provider for dynamic credential loading.
        CredentialsProvider credentialsProvider = new CredentialsProviderSupplier(() -> {
            try {
                com.aliyun.credentials.models.CredentialModel cred = credentialClient.getCredential();
                return new Credentials(
                    cred.getAccessKeyId(),
                    cred.getAccessKeySecret(),
                    cred.getSecurityToken()
                );
            } catch (Exception e) {
                throw new RuntimeException("Failed to obtain credentials", e);
            }
        });

        // Create an OSS client instance.
        try (OSSClient client = OSSClient.newBuilder()
                .credentialsProvider(credentialsProvider)
                .region("cn-hangzhou") // Specify the region where the bucket is located, for example, China (Hangzhou).
                .build()) {
            
            // Use the client for subsequent operations...
            
        } catch (Exception e) {
            System.err.println("Operation failed: " + e.getMessage());
        }
    }
}

Uso de credenciales de rol de RAM de ECS

Para aplicaciones en instancias ECS, instancias ECI o nodos worker de Container Service for Kubernetes, utilice un rol de RAM de ECS. El SDK recupera y renueva automáticamente los tokens temporales de STS, por lo que no se requiere gestión manual de claves. Para configurar el rol, consulte Create a RAM role.

Adición de una dependencia

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>credentials-java</artifactId>
    <version>0.3.4</version>
</dependency>

Configuración de un rol de RAM de ECS como credencial de acceso

import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.credentials.Credentials;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProviderSupplier;
// Note: The following imports are from the external dependency credentials-java
import com.aliyun.credentials.Client;
import com.aliyun.credentials.models.Config;

public class OSSExample {
    public static void main(String[] args) {
        // Configure ECS RAM role credentials.
        Config credentialConfig = new Config()
                .setType("ecs_ram_role")      // Access credential type. Fixed as ecs_ram_role.
                .setRoleName("EcsRoleExample"); // The name of the RAM role granted to the ECS instance. Optional parameter. If not set, it will be automatically retrieved. We strongly recommend setting it to reduce requests.

        Client credentialClient = new Client(credentialConfig);

        // Create a credential provider for dynamic credential loading.
        CredentialsProvider credentialsProvider = new CredentialsProviderSupplier(() -> {
            try {
                com.aliyun.credentials.models.CredentialModel cred = credentialClient.getCredential();
                return new Credentials(
                    cred.getAccessKeyId(),
                    cred.getAccessKeySecret(),
                    cred.getSecurityToken()
                );
            } catch (Exception e) {
                throw new RuntimeException("Failed to obtain credentials", e);
            }
        });

        // Create an OSS client instance.
        try (OSSClient client = OSSClient.newBuilder()
                .credentialsProvider(credentialsProvider)
                .region("cn-hangzhou") // Specify the region where the bucket is located, for example, China (Hangzhou).
                .build()) {
            
            // Use the client for subsequent operations...
            
        } catch (Exception e) {
            System.err.println("Operation failed: " + e.getMessage());
        }
    }
}

Uso de credenciales ARN de rol OIDC

En Container Service for Kubernetes, utilice RAM Roles for Service Accounts (RRSA) para el control de permisos a nivel de pod. El SDK usa un token OIDC montado en el pod para asumir un rol de RAM y obtener automáticamente tokens temporales de STS. Use RRSA to grant RAM permissions to a ServiceAccount.

Adición de una dependencia

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>credentials-java</artifactId>
    <version>0.3.4</version>
</dependency>

Configuración de un ARN de rol OIDC como credencial de acceso

import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.credentials.Credentials;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProviderSupplier;
// Note: The following imports are from the external dependency credentials-java
import com.aliyun.credentials.Client;
import com.aliyun.credentials.models.Config;

public class OSSExample {
    public static void main(String[] args) {
        // Configure OIDC role ARN credentials.
        Config credentialConfig = new Config()
                // Specify the credential type. Fixed as oidc_role_arn.
                .setType("oidc_role_arn")
                // The RAM role ARN. You can set the RoleArn via the ALIBABA_CLOUD_ROLE_ARN environment variable.
                .setRoleArn(System.getenv("ALIBABA_CLOUD_ROLE_ARN"))
                // The OIDC provider ARN. You can set the OidcProviderArn via the ALIBABA_CLOUD_OIDC_PROVIDER_ARN environment variable.
                .setOidcProviderArn(System.getenv("ALIBABA_CLOUD_OIDC_PROVIDER_ARN"))
                // The OIDC token file path. You can set the OidcTokenFilePath via the ALIBABA_CLOUD_OIDC_TOKEN_FILE environment variable.
                .setOidcTokenFilePath(System.getenv("ALIBABA_CLOUD_OIDC_TOKEN_FILE"))
                // The role session name. You can set the RoleSessionName via the ALIBABA_CLOUD_ROLE_SESSION_NAME environment variable.
                .setRoleSessionName("your-session-name")
                // Set a more restrictive permission policy. This is optional. Example value: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}
                .setPolicy("{\"Statement\": [{\"Action\": [\"*\"],\"Effect\": \"Allow\",\"Resource\": [\"*\"]}],\"Version\":\"1\"}")
                // Set the role session validity period in seconds. The default is 3600 seconds (1 hour). This is optional.
                .setRoleSessionExpiration(3600);

        Client credentialClient = new Client(credentialConfig);

        // Create a credential provider for dynamic credential loading.
        CredentialsProvider credentialsProvider = new CredentialsProviderSupplier(() -> {
            try {
                com.aliyun.credentials.models.CredentialModel cred = credentialClient.getCredential();
                return new Credentials(
                    cred.getAccessKeyId(),
                    cred.getAccessKeySecret(),
                    cred.getSecurityToken()
                );
            } catch (Exception e) {
                throw new RuntimeException("Failed to obtain credentials", e);
            }
        });

        // Create an OSS client instance.
        try (OSSClient client = OSSClient.newBuilder()
                .credentialsProvider(credentialsProvider)
                .region("cn-hangzhou") // Specify the region where the bucket is located, for example, China (Hangzhou).
                .build()) {
            
            // Use the client for subsequent operations...
            
        } catch (Exception e) {
            System.err.println("Operation failed: " + e.getMessage());
        }
    }
}

Uso de credenciales de acceso personalizadas

Si los métodos de credenciales integrados son insuficientes, implemente un proveedor de credenciales personalizado.

Implementación mediante la interfaz Supplier

import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.credentials.Credentials;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProviderSupplier;

public class OSSExample {
    public static void main(String[] args) {
        // Create a custom credential provider.
        CredentialsProvider credentialsProvider = new CredentialsProviderSupplier(() -> {
            // TODO: Implement your custom credential retrieval logic.
            
            // Return long-term credentials.
            return new Credentials("access_key_id", "access_key_secret");
            
            // Return an STS token (if needed).
            // return new Credentials("sts_access_key_id", "sts_access_key_secret", "security_token");
        });
        
        // Create an OSS client.
        try (OSSClient client = OSSClient.newBuilder()
                .credentialsProvider(credentialsProvider)
                .region("cn-hangzhou") // Specify the region where the bucket is located.
                .build()) {
            
            // Use the created client for subsequent operations...
            
        } catch (Exception e) {
            System.err.println("Operation failed: " + e.getMessage());
        }
    }
}

Implementación de la interfaz CredentialsProvider

import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.credentials.Credentials;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;

public class CustomCredentialsProvider implements CredentialsProvider {
    
    @Override
    public Credentials getCredentials() {
        // TODO: Implement your custom credential retrieval logic.
        
        // Return long-term credentials.
        return new Credentials("access_key_id", "access_key_secret");
        
        // Return an STS token (if needed).
        // For temporary credentials, you need to refresh them based on their expiration time.
        // return new Credentials("sts_access_key_id", "sts_access_key_secret", "security_token");
    }
}

public class OSSExample {
    public static void main(String[] args) {
        // Create a custom credential provider.
        CredentialsProvider credentialsProvider = new CustomCredentialsProvider();
        
        // Create an OSS client.
        try (OSSClient client = OSSClient.newBuilder()
                .credentialsProvider(credentialsProvider)
                .region("cn-hangzhou") // Specify the region where the bucket is located.
                .build()) {
            
            // Use the created client for subsequent operations...
            
        } catch (Exception e) {
            System.err.println("Operation failed: " + e.getMessage());
        }
    }
}

Acceso anónimo

Acceda a recursos de OSS con lectura pública sin proporcionar credenciales.

import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.AnonymousCredentialsProvider;

public class OSSExample {
    public static void main(String[] args) {
        // Create an anonymous credential provider.
        CredentialsProvider credentialsProvider = new AnonymousCredentialsProvider();
        
        // Create an OSS client.
        try (OSSClient client = OSSClient.newBuilder()
                .credentialsProvider(credentialsProvider)
                .region("cn-hangzhou") // Specify the region where the bucket is located.
                .build()) {
            
            // Use the created client for subsequent operations...
            // Note: Anonymous access can only be used for resources with public-read permissions.
            
        } catch (Exception e) {
            System.err.println("Operation failed: " + e.getMessage());
        }
    }
}

Código de ejemplo

Clasificación de funciones

Descripción del ejemplo

Versión síncrona

Versión asíncrona

Bucket

Crear un bucket

PutBucket.java

PutBucketAsync.java

Listar buckets

ListBuckets.java

ListBucketsAsync.java

Obtener información del bucket

GetBucketInfo.java

GetBucketInfoAsync.java

Obtener la región del bucket

GetBucketLocation.java

GetBucketLocationAsync.java

Obtener estadísticas de almacenamiento del bucket

GetBucketStat.java

GetBucketStatAsync.java

Eliminar un bucket

DeleteBucket.java

DeleteBucketAsync.java

Carga de archivos

Carga simple

PutObject.java

PutObjectAsync.java

Carga por anexión

AppendObject.java

AppendObjectAsync.java

Carga multiparte

MultipartUpload.java

MultipartUploadAsync.java

Listar tareas de carga multiparte

ListMultipartUploads.java

ListMultipartUploadsAsync.java

Listar partes cargadas

ListParts.java

ListPartsAsync.java

Cancelar una carga multiparte

AbortMultipartUpload.java

AbortMultipartUploadAsync.java

Descarga de archivos

Descarga simple

GetObject.java

GetObjectAsync.java

Gestión de archivos

Copiar un archivo

CopyObject.java

CopyObjectAsync.java

Comprobar si existe un archivo

HeadObject.java

HeadObjectAsync.java

Listar archivos

ListObjects.java

ListObjectsAsync.java

Listar archivos V2

ListObjectsV2.java

ListObjectsV2Async.java

Eliminar un archivo

DeleteObject.java

DeleteObjectAsync.java

Eliminar varios archivos

DeleteMultipleObjects.java

DeleteMultipleObjectsAsync.java

Obtener metadatos del archivo

GetObjectMeta.java

GetObjectMetaAsync.java

Objeto archivado

Restaurar un archivo

RestoreObject.java

RestoreObjectAsync.java

Limpiar un archivo restaurado

CleanRestoredObject.java

CleanRestoredObjectAsync.java

Enlace simbólico

Crear un enlace simbólico

PutSymlink.java

PutSymlinkAsync.java

Obtener un enlace simbólico

GetSymlink.java

GetSymlinkAsync.java

Etiquetado de objetos

Establecer etiquetas de objeto

PutObjectTagging.java

PutObjectTaggingAsync.java

Obtener etiquetas de objeto

GetObjectTagging.java

GetObjectTaggingAsync.java

Eliminar etiquetas de objeto

DeleteObjectTagging.java

DeleteObjectTaggingAsync.java

Control de acceso

Establecer ACL del bucket

PutBucketAcl.java

PutBucketAclAsync.java

Obtener ACL del bucket

GetBucketAcl.java

GetBucketAclAsync.java

Establecer ACL del objeto

PutObjectAcl.java

PutObjectAclAsync.java

Obtener ACL del objeto

GetObjectAcl.java

GetObjectAclAsync.java

Versionado

Configurar el versionado

PutBucketVersioning.java

PutBucketVersioningAsync.java

Obtener estado del versionado

GetBucketVersioning.java

GetBucketVersioningAsync.java

Listar versiones de objetos

ListObjectVersions.java

ListObjectVersionsAsync.java

Acceso entre dominios

Establecer reglas CORS

PutBucketCors.java

PutBucketCorsAsync.java

Obtener reglas CORS

GetBucketCors.java

GetBucketCorsAsync.java

Eliminar reglas CORS

DeleteBucketCors.java

DeleteBucketCorsAsync.java

Solicitud preflight

OptionObject.java

OptionObjectAsync.java

Funciones del sistema

Consultar información del endpoint

DescribeRegions.java

DescribeRegionsAsync.java