Todos os produtos
Search
Central de documentação

Object Storage Service:Configure access credentials (C# SDK V1)

Última atualização: Sep 24, 2026

Para fazer solicitações ao Object Storage Service (OSS) usando o kit de desenvolvimento de software (SDK) C#, configure as credenciais de acesso. Os serviços da Alibaba Cloud usam essas credenciais para verificar sua identidade e permissões de acesso. É possível fornecer credenciais de várias formas, conforme os requisitos de autenticação e autorização do seu cenário.

Observações

  • Para obter informações sobre as regiões e os endpoints com suporte no OSS, consulte Regions and endpoints.

  • Para criar um par de AccessKey para um usuário do Resource Access Management (RAM), consulte Create an AccessKey pair.

Escolha um provedor de credenciais

O OSS oferece suporte a várias formas de inicializar um provedor de credenciais. Escolha um método de inicialização com base nos seus requisitos de autenticação e autorização.

Método de inicialização do provedor de credenciais

Cenários

Requer um par de AccessKey ou token do Security Token Service (STS) pré-existente

Tipo de credencial subjacente

Validade da credencial

Método de rotação ou atualização da credencial

Use the AccessKey pair of a RAM user

Aplicações em execução em um ambiente seguro e estável, não vulnerável a ataques externos. Essas aplicações exigem acesso de longo prazo aos serviços da Alibaba Cloud sem rotação frequente de credenciais.

Sim

Par de AccessKey

Longo prazo

Rotação manual

Use an STS temporary access credential

Aplicações em execução em um ambiente não confiável. Este método permite controlar o período de validade e as permissões do acesso.

Sim

Token STS

Temporário

Atualização manual

Use a RAMRoleARN

Aplicações que necessitam de acesso autorizado aos serviços da Alibaba Cloud, como acesso entre contas.

Sim

Token STS

Temporário

Atualização automática

Use an ECSRAMRole

Aplicações em execução em instâncias do ECS, instâncias do ECI ou nós de trabalho do Container Service for Kubernetes da Alibaba Cloud.

Não

Token STS

Temporário

Atualização automática

Use an OIDCRoleARN

Aplicações não confiáveis em execução em nós de trabalho do Container Service for Kubernetes.

Não

Token STS

Temporário

Atualização automática

Use a CredentialsURI

Aplicações que precisam obter credenciais de acesso de um sistema externo.

Não

Token STS

Temporário

Atualização automática

Use a custom access credential

Se nenhum dos métodos anteriores atender aos seus requisitos, personalize a forma de obtenção das credenciais.

Personalizado

Personalizado

Personalizado

Personalizado

Exemplos comuns de configuração

Uso do AccessKey de um usuário do RAM

Caso a aplicação esteja implantada em um ambiente seguro e estável, exija acesso de longo prazo ao OSS e não permita rotação frequente de credenciais, inicialize o provedor de credenciais com o par de AccessKey (AccessKey ID e AccessKey secret) de uma conta da Alibaba Cloud ou de um usuário do RAM. Contudo, esse método requer manutenção manual do par de AccessKey, o que aumenta os riscos de segurança e a complexidade de manutenção. Para obter um par de AccessKey, consulte CreateAccessKey - Create an AccessKey pair for an Alibaba Cloud account or a RAM user.

Variáveis de ambiente

Aviso

Uma conta da Alibaba Cloud tem permissões totais sobre todos os recursos. O vazamento de um par de AccessKey representa riscos significativos à segurança do sistema. Não recomendamos o uso do par de AccessKey de uma conta da Alibaba Cloud. Em vez disso, use o par de AccessKey de um usuário do RAM com as permissões mínimas necessárias.

  1. Defina as variáveis de ambiente com um par de AccessKey.

    Mac OS X, Linux ou Unix

    export ALIBABA_CLOUD_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID>
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET>

    Windows

    set ALIBABA_CLOUD_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID>
    set ALIBABA_CLOUD_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET>
  2. Transmita as informações da credencial por meio de variáveis de ambiente.

    using Aliyun.OSS;
    using Aliyun.OSS.Common;
    using Aliyun.OSS.Common.Authentication;
    
    // Obtain access credentials from environment variables. Before you run this code, make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variables are set.
    var accessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
    var accessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
    var credentialsProvider = new DefaultCredentialsProvider(new DefaultCredentials(accessKeyId, accessKeySecret, ""));   
    
    // Specify the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
    const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    
    // Specify the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the region to cn-hangzhou.
    const string region = "cn-hangzhou";
    
    var conf = new ClientConfiguration();
    
    var client = new OssClient(endpoint, credentialsProvider, conf);
    client.SetRegion(region);                                                                                                                        

Credenciais estáticas

O código de exemplo a seguir mostra como inserir as credenciais de acesso diretamente no código-fonte e definir explicitamente o par de AccessKey a ser usado.

Aviso

Não incorpore credenciais de acesso em aplicações em ambiente de produção. Este método é apenas para testes.

using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Common.Authentication;

// Replace the sample values with your actual AccessKey ID and AccessKey secret.
var accessKeyId = "LTAI5tQQx1DWEYK7********" ;
var accessKeySecret = "s5LkMqKmmKbt3zjs7MNJTj********" ;
var credentialsProvider = new DefaultCredentialsProvider(new DefaultCredentials(accessKeyId, accessKeySecret, ""));   

// Specify the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";

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

var conf = new ClientConfiguration();

var client = new OssClient(endpoint, credentialsProvider, conf);
client.SetRegion(region);     

Uso de uma credencial de acesso temporário do STS

Caso a aplicação exija acesso temporário ao OSS, inicialize o provedor de credenciais com uma credencial de identidade temporária (AccessKey ID, AccessKey secret e token de segurança) obtida no Security Token Service (STS). Contudo, esse método requer manutenção manual do token STS, o que aumenta os riscos de segurança e a complexidade de manutenção. Além disso, para acessar temporariamente o OSS várias vezes, atualize manualmente o token STS.

Importante

Variáveis de ambiente

  1. Defina as variáveis de ambiente com uma credencial de identidade temporária.

    Mac OS X, Linux ou Unix

    export ALIBABA_CLOUD_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID>
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET>
    export ALIBABA_CLOUD_SECURITY_TOKEN=<ALIBABA_CLOUD_SECURITY_TOKEN>

    Windows

    set OSS_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID>
    set OSS_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET>
    set OSS_SESSION_TOKEN=<ALIBABA_CLOUD_SECURITY_TOKEN>
  2. Transmita as informações da credencial por meio de variáveis de ambiente.

    using Aliyun.OSS;
    using Aliyun.OSS.Common;
    using Aliyun.OSS.Common.Authentication;
    
    // Obtain access credentials from environment variables. Before you run this code, make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID, ALIBABA_CLOUD_ACCESS_KEY_SECRET, and ALIBABA_CLOUD_SECURITY_TOKEN environment variables are set.
    var accessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
    var accessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
    var token = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_SECURITY_TOKEN");
    
    var credentialsProvider = new DefaultCredentialsProvider(new DefaultCredentials(accessKeyId, accessKeySecret, token));
    
    // Specify the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
    const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    
    // Specify the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the region to cn-hangzhou.
    const string region = "cn-hangzhou";
    
    var conf = new ClientConfiguration();
    
    var client = new OssClient(endpoint, credentialsProvider, conf);
    client.SetRegion(region);
    

Credenciais estáticas

Insira as credenciais diretamente na aplicação para definir explicitamente o par de AccessKey temporário a ser usado.

using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Common.Authentication;

// Replace the sample values with your actual temporary AccessKey ID, AccessKey secret, and security token.
var accessKeyId = "STS.NTZdStF79CVRTQuWCfXTT****";
var accessKeySecret = "5rm8PfEiK8enp56zzAMX4RbZUraoKbWXvCf1xAuT****"
var token = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_SECURITY_TOKEN");

var credentialsProvider = new DefaultCredentialsProvider(new DefaultCredentials(accessKeyId, accessKeySecret, token));

// Specify the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";

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

var conf = new ClientConfiguration();

var client = new OssClient(endpoint, credentialsProvider, conf);
client.SetRegion(region);

Outros exemplos de configuração para cenários específicos

Uso do RAMRoleARN

Caso a aplicação exija acesso autorizado ao OSS, como acesso entre contas, inicialize o provedor de credenciais com um RAMRoleARN. Esse método utiliza um token STS como credencial subjacente. Ao especificar o Alibaba Cloud Resource Name (ARN) de uma função do RAM, a ferramenta de credenciais recupera um token STS do serviço STS e atualiza automaticamente o token antes da expiração. Também é possível atribuir um valor a policy para restringir a função do RAM a um conjunto menor de permissões.

Importante
  • Uma conta da Alibaba Cloud tem permissões totais sobre todos os recursos. O vazamento de um par de AccessKey representa riscos significativos à segurança do sistema. Não recomendamos o uso do par de AccessKey de uma conta da Alibaba Cloud. Em vez disso, use o par de AccessKey de um usuário do RAM com as permissões mínimas necessárias.

  • Para obter mais informações sobre como criar um par de AccessKey para um usuário do RAM, consulte Create an AccessKey pair. O AccessKey ID e o AccessKey secret de um usuário do RAM são exibidos apenas no momento da criação. Salve-os imediatamente. Caso esqueça o AccessKey secret, será necessário criar um novo par de AccessKey para rotação.

  • Para obter um RAMRoleARN, consulte CreateRole - Create a role.

  1. Instale a biblioteca de credenciais da Alibaba Cloud. Para obter mais informações, consulte Manage access credentials.

  2. Configure as credenciais de acesso.

    using Aliyun.OSS;
    using Aliyun.OSS.Common;
    using Aliyun.OSS.Common.Authentication;
    
    class CredentialsProviderWrapper : ICredentialsProvider
    {
        private Aliyun.Credentials.Client client;
        public CredentialsProviderWrapper(Aliyun.Credentials.Client client)
        {
            this.client = client;
        }
    
        public ICredentials GetCredentials()
        {
            var accessKeyId = client.GetAccessKeyId();
            var accessKeySecret = client.GetAccessKeySecret();
            var token = client.GetSecurityToken();
            return new DefaultCredentials(accessKeyId, accessKeySecret, token);
        }
    
        public void SetCredentials(ICredentials creds)
        {
        }
    };
    
    var config = new Aliyun.Credentials.Models.Config()
    {
        Type = "ram_role_arn",
        AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
        AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
        // By default, the following operations use parameter values that are directly entered. You can also add environment variables and use Environment.GetEnvironmentVariable("<variable_name>") to get the corresponding parameters.
        // The ARN of the RAM role to assume. Example: acs:ram::123456789012****:role/adminrole
        RoleArn = "<RoleArn>", // The default environment variable for RoleArn is ALIBABA_CLOUD_ROLE_ARN.
        // The role session name.
        RoleSessionName = "<RoleSessionName>", // The default environment variable for RoleSessionName is ALIBABA_CLOUD_ROLE_SESSION_NAME.
    };
    var credentialsClient = new Aliyun.Credentials.Client(config);
    
    var credentialsProvider = new CredentialsProviderWrapper(credentialsClient);
    
    // Specify the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
    const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    
    // Specify the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the region to cn-hangzhou.
    const string region = "cn-hangzhou";
    
    var conf = new ClientConfiguration();
    
    var client = new OssClient(endpoint, credentialsProvider, conf);
    client.SetRegion(region);
    

Uso de uma função do RAM do ECS

Caso a aplicação seja executada em uma instância do Elastic Compute Service (ECS), em uma instância do Elastic Container Instance (ECI) ou em um nó de trabalho do Container Service for Kubernetes, recomendamos usar um ECSRAMRole para inicializar o provedor de credenciais. Esse método utiliza um token STS como credencial subjacente. O ECSRAMRole permite associar uma função a uma instância do ECS, a uma instância do ECI ou a um nó de trabalho do Container Service for Kubernetes. Isso possibilita a atualização automática do token STS dentro da instância. Esse método não exige o fornecimento de um par de AccessKey ou de um token STS, o que elimina os riscos de mantê-los manualmente. Para obter um ECSRAMRole, consulte CreateRole - Create a role.

  1. Instale a biblioteca de credenciais da Alibaba Cloud. Para obter mais informações, consulte Manage access credentials.

  2. Configure um ECSRAMRole como credencial de acesso.

using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Common.Authentication;

class CredentialsProviderWrapper : ICredentialsProvider
{
    private Aliyun.Credentials.Client client;
    public CredentialsProviderWrapper(Aliyun.Credentials.Client client)
    {
        this.client = client;
    }

    public ICredentials GetCredentials()
    {
        var accessKeyId = client.GetAccessKeyId();
        var accessKeySecret = client.GetAccessKeySecret();
        var token = client.GetSecurityToken();
        return new DefaultCredentials(accessKeyId, accessKeySecret, token);
    }

    public void SetCredentials(ICredentials creds)
    {
    }
};

var config = new Aliyun.Credentials.Models.Config()
{
    Type = "ecs_ram_role",
    // Optional. The name of the ECS RAM role. If you do not specify this parameter, the role name is automatically obtained. We recommend that you specify this parameter to reduce the number of requests.
    RoleName = "<RoleName>"     
};
var credentialsClient = new Aliyun.Credentials.Client(config);

var credentialsProvider = new CredentialsProviderWrapper(credentialsClient);

// Specify the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";

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

var conf = new ClientConfiguration();

var client = new OssClient(endpoint, credentialsProvider, conf);
client.SetRegion(region);

Uso do OIDCRoleARN

Após configurar uma função do RAM para nós de trabalho no Container Service for Kubernetes, as aplicações em pods nesses nós podem recuperar o token STS da função associada por meio do serviço de metadados global. Esse processo é semelhante ao das aplicações implantadas no ECS. Contudo, ao implantar aplicações não confiáveis no cluster de contêineres, como as enviadas por clientes com código oculto, é recomendável impedir que elas recuperem o token STS da função do RAM da instância associada aos nós de trabalho pelo serviço de metadados global. Para evitar riscos de segurança aos recursos de cloud e, ao mesmo tempo, permitir a recuperação segura dos tokens STS necessários com a minimização de permissões no nível da aplicação, use o recurso RAM Roles for Service Accounts (RRSA). Esse método utiliza um token STS como credencial subjacente. O cluster de contêineres da Alibaba Cloud cria e monta o arquivo de token OpenID Connect (OIDC) da conta de serviço correspondente para diferentes pods de aplicação e injeta as informações de configuração relevantes nas variáveis de ambiente. A ferramenta de credenciais recupera as informações de configuração das variáveis de ambiente e chama a operação AssumeRoleWithOIDC do STS para trocar o token OIDC por um token STS da função vinculada. Esse método não exige o fornecimento de um par de AccessKey ou de um token STS, o que elimina os riscos de mantê-los manualmente. Para obter mais informações, consulte Isolate pod permissions based on RRSA.

As seguintes variáveis de ambiente são injetadas:

ALIBABA_CLOUD_ROLE_ARN: O ARN da função do RAM.

ALIBABA_CLOUD_OIDC_PROVIDER_ARN: O ARN do provedor OIDC.

ALIBABA_CLOUD_OIDC_TOKEN_FILE: O caminho para o arquivo de token OIDC.

Configure um OIDCRoleArn como credencial de acesso.

using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Common.Authentication;

class CredentialsProviderWrapper : ICredentialsProvider
{
    private Aliyun.Credentials.Client client;
    public CredentialsProviderWrapper(Aliyun.Credentials.Client client)
    {
        this.client = client;
    }

    public ICredentials GetCredentials()
    {
        var accessKeyId = client.GetAccessKeyId();
        var accessKeySecret = client.GetAccessKeySecret();
        var token = client.GetSecurityToken();
        return new DefaultCredentials(accessKeyId, accessKeySecret, token);
    }

    public void SetCredentials(ICredentials creds)
    {}
};

var config = new Aliyun.Credentials.Models.Config()
{
    Type = "oidc_role_arn",
    // The ARN of the RAM role. You can set RoleArn using the ALIBABA_CLOUD_ROLE_ARN environment variable.
    RoleArn = "<RoleArn>",
    // The ARN of the OIDC provider. You can set OidcProviderArn using the ALIBABA_CLOUD_OIDC_PROVIDER_ARN environment variable.
    OIDCProviderArn = "<OidcProviderArn>",
    // The path to the OIDC token file. You can set OidcTokenFilePath using the ALIBABA_CLOUD_OIDC_TOKEN_FILE environment variable.
    OIDCTokenFilePath = "<OidcTokenFilePath>",
    // The role session name. You can set RoleSessionName using the ALIBABA_CLOUD_ROLE_SESSION_NAME environment variable.
    RoleSessionName = "<RoleSessionName>",
    // Optional. A more restrictive access policy. Example: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}
    Policy = "<Policy>",
    RoleSessionExpiration = 3600  
};
var credentialsClient = new Aliyun.Credentials.Client(config);
var credentialsProvider = new CredentialsProviderWrapper(credentialsClient);
// Specify the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Specify the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the region to cn-hangzhou.
const string region = "cn-hangzhou";
var conf = new ClientConfiguration();
var client = new OssClient(endpoint, credentialsProvider, conf);
client.SetRegion(region);

Uso do CredentialsURI

Caso a aplicação precise recuperar credenciais da Alibaba Cloud de um sistema externo para garantir um gerenciamento flexível de credenciais e acesso sem chaves, inicialize o provedor de credenciais com um CredentialsURI. Esse método utiliza um token STS como credencial subjacente. A ferramenta de credenciais recupera um token STS do URI fornecido para concluir a inicialização do cliente de credenciais. Esse método não exige o fornecimento de um par de AccessKey ou de um token STS, o que elimina os riscos de mantê-los manualmente. O serviço de backend responsável por fornecer a resposta do CredentialsURI deve implementar uma lógica de atualização automática para o token STS, garantindo a recuperação contínua de credenciais válidas pela aplicação.

using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Common.Authentication;

class CredentialsProviderWrapper : ICredentialsProvider
{
    private Aliyun.Credentials.Client client;
    public CredentialsProviderWrapper(Aliyun.Credentials.Client client)
    {
        this.client = client;
    }

    public ICredentials GetCredentials()
    {
        var accessKeyId = client.GetAccessKeyId();
        var accessKeySecret = client.GetAccessKeySecret();
        var token = client.GetSecurityToken();
        return new DefaultCredentials(accessKeyId, accessKeySecret, token);
    }

    public void SetCredentials(ICredentials creds)
    {}
};

var config = new Aliyun.Credentials.Models.Config()
{
    // The credential type.
    Type = "credentials_uri",
    // The URI from which to obtain credentials. The format is http://local_or_remote_uri/. You can set CredentialsURI using the ALIBABA_CLOUD_CREDENTIALS_URI environment variable.
    CredentialsURI = "<CredentialsURI>" 
};
var credentialsClient = new Aliyun.Credentials.Client(config);
var credentialsProvider = new CredentialsProviderWrapper(credentialsClient);
// Specify the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Specify the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the region to cn-hangzhou.
const string region = "cn-hangzhou";
var conf = new ClientConfiguration();
var client = new OssClient(endpoint, credentialsProvider, conf);
client.SetRegion(region);

Uso de uma credencial de acesso personalizada

Caso nenhum dos métodos de configuração anteriores atenda aos seus requisitos, implemente também a interface Credential Providers para personalizar o fornecimento das credenciais.

using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Common.Authentication;

class CustomCredentialsProvider : ICredentialsProvider
{
    public CustomCredentialsProvider()
    {
    }

    public ICredentials GetCredentials()
    {
        // TODO
        // Custom method to obtain access credentials.

        string accessKeyId;
        string accessKeySecret;
        //string token;

        // Return long-term credentials: access_key_id, access_key_secret.
        return new DefaultCredentials(accessKeyId, accessKeySecret, "");

        // Return temporary credentials: access_key_id, access_key_secret, token.
        // For temporary credentials, you must refresh the credentials based on their expiration time.
        // return new DefaultCredentials(accessKeyId, accessKeySecret, token);
    }

    public void SetCredentials(ICredentials creds)
    {
    }
};

var credentialsProvider = new CustomCredentialsProvider();

// Specify the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";

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

var conf = new ClientConfiguration();

var client = new OssClient(endpoint, credentialsProvider, conf);
client.SetRegion(region);

Como visualizar o par de AccessKey de um usuário do RAM? Posso visualizar um AccessKey secret antigo?

  1. Para visualizar o par de AccessKey de um usuário do RAM, consulte View the AccessKey information of a RAM user.

  2. O AccessKey secret de um usuário do RAM é exibido apenas no momento da criação e não pode ser recuperado posteriormente. Caso tenha esquecido o AccessKey secret, não é possível recuperá-lo. Acesse o RAM console, selecione o usuário específico e crie um novo par de AccessKey para rotação. Para obter mais informações, consulte Create an AccessKey pair.

Como solucionar um erro AccessDenied ao fazer upload de um arquivo usando o par de AccessKey de um usuário do RAM?

Um erro AccessDenied durante o upload de arquivo geralmente ocorre devido ao uso de informações de AccessKey incorretas ou à falta de permissões do usuário do RAM para fazer upload de arquivos. Verifique os seguintes itens:

  1. Confirme se o par de AccessKey do usuário do RAM está correto. Para obter mais informações, consulte View the AccessKey information of a RAM user.

  2. O AccessKey secret de um usuário do RAM é exibido apenas no momento da criação e não pode ser recuperado posteriormente. Caso tenha esquecido o AccessKey secret, não é possível recuperá-lo. Acesse o RAM console, selecione o usuário específico e crie um novo par de AccessKey para rotação. Para obter mais informações, consulte Create an AccessKey pair.

  3. Acesse o RAM console, selecione o usuário específico e conceda ao usuário do RAM as permissões para fazer upload de arquivos no OSS.

Como solucionar uma falha de conexão ao acessar o OSS usando um endpoint público?

Uma falha de conexão com um endpoint público geralmente ocorre devido ao uso de um endereço de endpoint incorreto ou à incompatibilidade entre a região do bucket e o endpoint solicitado. Verifique os seguintes itens:

  1. Confirme a região do bucket. Acesse o Alibaba Cloud Management Console, localize o seu bucket e confirme a região dele.

  2. Use o endpoint correto. Utilize o endpoint público correspondente à região do bucket. Por exemplo, se o bucket estiver na região China (Hangzhou), use oss-cn-hangzhou.aliyuncs.com. Para obter mais informações sobre os endpoints de cada região, consulte Regions and endpoints.

  3. Verifique a conectividade de rede. Certifique-se de que o ambiente de rede tenha acesso à Internet para evitar falhas de conexão decorrentes de problemas de rede.

Se ocorrer um erro, como descobrir o tipo específico de erro?

Para obter informações sobre os tipos de erro, consulte EC error codes na documentação do OSS. Por exemplo, para erros comuns relacionados à autenticação, consulte 02-AUTH.