Todos os produtos
Search
Central de documentação

Key Management Service:Plug-in de secret do RAM

Última atualização: Sep 21, 2026

Depois de hospedar o AccessKey de um usuário do RAM no KMS, instale o plug-in de secret do RAM. Ao usar os Alibaba Cloud SDKs, referencie o nome do secret do RAM para obter o AccessKey para autenticação de API, sem precisar conhecer os detalhes do AccessKey nem se houve rotação. Este tópico descreve o princípio de funcionamento, a instalação e o uso do plug-in de secret do RAM.

Princípio de funcionamento

O plug-in de secret do RAM obtém o valor do secret do RAM do KMS com base no nome do secret e armazena esse valor em cache na memória da aplicação. Quando a aplicação usa um Alibaba Cloud SDK, o plug-in utiliza o AccessKey em cache para enviar solicitações aos cloud services.

Quando o AccessKey em cache se torna inválido devido à rotação do secret, o plug-in de secret do RAM obtém imediatamente o novo secret do KMS e atualiza o cache local. Em seguida, com base no comportamento de repetição em caso de erro configurado, o plug-in repete a solicitação da API do cloud service usando o secret do RAM mais recente. Por padrão, o plug-in de secret do RAM determina que o AccessKey é inválido com base nos códigos de erro InvalidAccessKeyId e InvalidAccessKeyId.NotFound na resposta da API do cloud service.

Alibaba Cloud SDKs suportados

O KMS fornece plug-ins de secret do RAM para os Alibaba Cloud SDKs listados nas tabelas a seguir.

Importante

O plug-in de secret do RAM exige desenvolvimento separado para cada Alibaba Cloud SDK. Caso o plug-in de secret do RAM não atenda aos seus requisitos, use o Secrets Manager Client ou Alibaba Cloud SDK. Para mais informações sobre cada SDK, consulte SDK references. Para obter assistência, entre em contato com o suporte técnico.

Java SDK (apenas Java 8 e versões posteriores)

Alibaba Cloud SDK

Módulo do plug-in de secret do RAM

Alibaba Cloud SDK for Java (V2.0)

aliyun-java-tea-openapi-sdk-managed-credentials-provider

Alibaba Cloud SDK for Java (V1.0)

aliyun-java-sdk-managed-credentials-provider

OSS Java SDK V1

aliyun-oss-java-sdk-managed-credentials-provider

Message Queue for Apache RocketMQ TCP Protocol Java SDK

ons-client-managed-credentials-provider

Python SDK

Alibaba Cloud SDK

Módulo do plug-in de secret do RAM

Descrição

Alibaba Cloud SDK for Python (V1.0)

aliyun-openapi-python-sdk-managed-credentials-provider

Há suporte apenas para a V1.0. Não há suporte para a V2.0. Para a V2.0, use o Secrets Manager Client ou Alibaba Cloud SDK.

OSS Python SDK

aliyun-oss-python-sdk-managed-credentials-provider

Nenhum.

Go SDK

Importante

O plug-in de secret do Go não repete a solicitação automaticamente quando ocorre um erro InvalidAccessKeyId. Secrets com rotação automática obtêm novos secrets por meio do mecanismo de atualização agendada (a cada 6 horas). Para rotação manual de secrets, especifique a janela de rotação com pelo menos 12 horas e evite interrupções de tarefas por credenciais expiradas. Para mais informações, consulte How do I resolve credential expiration after the Go RAM plug-in reports the InvalidAccessKeyId error?.

Alibaba Cloud SDK

Módulo do plug-in de secret do RAM

Descrição

Alibaba Cloud SDK for Go (V1.0)

alibaba-cloud-sdk-go-managed-credentials-provider

Há suporte apenas para a V1.0. Não há suporte para a V2.0. Para a V2.0, use o Secrets Manager Client ou Alibaba Cloud SDK.

OSS Go SDK

aliyun-oss-go-sdk-managed-credentials-provider

Nenhum.

Etapa 1: Crie credenciais de acesso

Cenário 1: Obtenha valores de credenciais por meio de um gateway compartilhado

O tipo de rede é Internet ou VPC. As credenciais de acesso suportam funções de RAM de instâncias ECS e ClientKeys.

Função de RAM de instância ECS

Uma função de RAM de instância ECS permite obter uma credencial de acesso temporária (token STS) de dentro de uma instância ECS para chamar operações da API do KMS, sem precisar configurar um par de AccessKey.

Para mais informações, consulte Instance RAM roles.

  1. Acesse o RAM console e crie uma função de RAM para um Alibaba Cloud service confiável.

    • Trusted Entity Type: Selecione Elastic Compute Service.

    • Trusted entity: Selecione Elastic Compute Service (ECS).

  2. Conceda permissões à função de RAM para acessar o KMS.

    • Método 1: Configure uma política baseada em identidade

      Na coluna Actions da função de RAM, clique em Grant Permission para anexar uma política de permissão integrada do sistema para o KMS à função de RAM. Para mais informações sobre as políticas de permissão do sistema para o KMS, consulte System policies for KMS.

      Nota

      Também é possível criar políticas de permissão personalizadas. Para mais informações, consulte Create a custom policy.

    • Método 2: Configure uma política baseada em recursos

      O KMS suporta políticas baseadas em recursos para conceder permissões de acesso a chaves e secrets individuais. Use essas políticas para controlar quais contas Alibaba Cloud, usuários do RAM e funções de RAM podem gerenciar ou usar chaves e secrets do KMS. Para mais informações, consulte Key policies e Secret policies.

  3. Acesse o ECS console e atribua a função de RAM a uma instância ECS.

ClientKey

  1. Acesse o Key Management Service console. Na barra de navegação superior, selecione uma região. No painel de navegação à esquerda, escolha Application Access > Multi-Cloud Access (formerly AAP).

  2. (Opcional) Crie uma regra de rede.

    Nota

    A configuração de uma regra de rede para restringir o acesso por endereço IP de origem é opcional. No entanto, recomendamos essa configuração para maior segurança.

    1. Clique na guia Network Access Rules e, em seguida, clique em Create Network Access Rule.

    2. No painel Create Network Access Rule, defina Network Type como Public, insira os Allowed Source IP Addresses e clique em OK.

  3. Crie uma política de permissão.

    1. Clique na guia Policies e, em seguida, clique em Create Policy.

    2. No painel Create Policy, configure os parâmetros para o gateway compartilhado conforme descrito abaixo e, em seguida, clique em OK.

      1. Scope: Shared KMS Gateway

      2. Accessible Resources: Selecione os secrets a serem acessados.

      3. (Opcional) Network Access Rules: Selecione a regra de rede criada na etapa anterior.

  4. Crie um application access point (AAP).

    1. Clique na guia Application Access e, em seguida, clique em Create AAP.

    2. No painel Create AAP, defina Mode como Standard Creation e, em seguida, configure os parâmetros conforme descrito abaixo.

      Parâmetro

      Descrição

      Authentication Method

      Selecione ClientKey.

      Encryption Password

      Insira uma string de 8 a 64 caracteres que contenha dígitos, letras e caracteres especiais: ~!@#$%^&*?_-.

      Validity Period

      Importante

      Recomendamos definir o período de validade como um ano para reduzir o risco de vazamentos de ClientKey. Rotacione o ClientKey antes da expiração para evitar interrupções do service. Para mais informações, consulte Rotate a ClientKey.

      Policies

      Selecione a política de permissão que você criou na etapa anterior.

    3. Clique em OK e baixe o ClientKey automaticamente pelo navegador. O ClientKey inclui os seguintes arquivos:

      • Credential (ClientKeyContent): O nome padrão do arquivo é clientKey_****.json.

      • Credential password (ClientKeyPassword): O nome padrão do arquivo é clientKey_****_Password.txt.

Cenário 2: Obtenha valores de credenciais por meio de um gateway dedicado (não recomendado)

O tipo de rede é a rede privada do KMS. As credenciais de acesso suportam apenas ClientKeys.

Crie um ClientKey usando o modo Quick Create ou Standard Create. Para mais informações sobre ClientKeys, consulte Application access points e Create an application access point.

  • Método 1: Quick Create

    Este método é prático e eficiente, adequado para testes e desenvolvimentos rápidos. A credencial de acesso gerada dessa forma tem acesso total a todos os recursos na instância do KMS.

    1. Acesse o Key Management Service console. Na barra de navegação superior, selecione uma região. No painel de navegação à esquerda, escolha Application Access > Access Control (Formerly Access Point) .

    2. Na guia Application Access, clique em Create AAP. No painel Create AAP, configure os parâmetros.

      Parâmetro

      Descrição

      Mode

      Selecione Quick Creation.

      Scope (KMS Instance)

      Selecione a instância do KMS que sua aplicação precisa acessar.

      Application Access Point Name

      Insira um nome para o application access point.

      Authentication Method

      Definido como ClientKey, não pode ser alterado.

      Encryption Algorithm

      Selecione o algoritmo de criptografia usado para criptografar o ClientKey. Valores válidos: TripleDES-CBC e RC2-CBC (padrão).

      Nota

      O RC2-CBC funciona na maioria dos ambientes e é o recomendado. Se o seu ambiente tiver requisitos de algoritmo mais rigorosos e não suportar o RC2-CBC, selecione TripleDES-CBC.

      Default Permission Policy

      O valor é key/ secret/ e não pode ser alterado. Isso concede à aplicação acesso a todas as chaves e secrets na instância do KMS especificada.

    3. Clique em OK e baixe o ClientKey automaticamente pelo navegador. O ClientKey inclui os seguintes arquivos:

      • Credential (ClientKeyContent): O nome padrão do arquivo é clientKey_****.json.

      • Credential password (ClientKeyPassword): O nome padrão do arquivo é clientKey_****_Password.txt.

  • Método 2: Standard Create

    Para configurar permissões de acesso detalhadas para recursos, use o método Standard Create.

    1. Siga as instruções do Standard Create em Create an application access point para criar um ClientKey para acessar o gateway dedicado. Os principais parâmetros estão descritos abaixo:

      1. Ao configurar regras de rede, selecione Private para o tipo de rede.

      2. Ao configurar o escopo da regra de permissão, selecione o KMS Instance ID correspondente.

    2. Após a criação, baixe o ClientKey automaticamente pelo navegador. O arquivo inclui:

      • Credential (ClientKeyContent): O arquivo é nomeado como clientKey_****.json por padrão.

      • Credential password (ClientKeyPassword): O arquivo é nomeado como clientKey_****_Password.txt por padrão.

Etapa 2: Configure os parâmetros de tempo de execução do plug-in de secret do RAM por meio de um arquivo de configuração

O plug-in de secret do RAM suporta apenas arquivos de configuração para definir parâmetros de tempo de execução. Crie um arquivo de configuração (managed_credentials_providers.properties) no diretório de tempo de execução da aplicação e adicione conteúdo ao arquivo de configuração de acordo com o método de autenticação.

Nota

Caso a aplicação não consiga ler automaticamente o arquivo managed_credentials_providers.properties, consulte os exemplos de código e defina o caminho do arquivo de configuração no código.

Função de RAM de instância ECS

O código a seguir mostra o conteúdo do arquivo de configuração.

credentials_type=ecs_ram_role
## The name of the ECS RAM role.
credentials_role_name=#credentials_role_name#
## The region of the associated KMS service.
cache_client_region_id=[{"regionId":"#regionId#"}]

ClientKey (gateway compartilhado)

Obtenha o valor da credencial por meio do endpoint do gateway compartilhado do KMS. O código a seguir mostra o conteúdo do arquivo de configuração.

## The type of the access credential.
credentials_type=client_key

## The password for reading the ClientKey: supports reading from an environment variable or a file.
## The credential password: the credential password (ClientKeyPassword) saved when creating the Client Key in the AAP.
client_key_password_from_env_variable=#your client key private key password environment variable name#
client_key_password_from_file_path=#your client key private key password file path#

# The path to the Client Key file.
# The Client Key file: the application identity credential content (ClientKeyContent) downloaded when creating the Client Key in the AAP.
# The default filename after download is ClientKey_******.json.
client_key_private_key_path=#your client key private key file path#

## The region of the associated KMS service.
cache_client_region_id=[{"regionId":"#regionId#"}]

ClientKey (gateway dedicado)

Obtenha o valor da credencial por meio do endpoint do gateway dedicado do KMS. O código a seguir mostra o conteúdo do arquivo de configuração.

  • Método 1: Configure o caminho do arquivo de senha da credencial ClientKey (clientKey_****_Password.txt) para leitura pelo SDK.

    cache_client_dkms_config_info=[{"regionId":"<your dkms regionId>","endpoint":"<your dkms endpoint>","passwordFromFilePath":"< your password file path >","clientKeyFile":"<your Client Key file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]
  • Método 2: Configure diretamente o conteúdo da senha da credencial ClientKey (ClientKeyPassword)

    Aviso

    Primeiro, armazene a senha da credencial (ClientKeyPassword), ou seja, o conteúdo em clientKey_****_Password.txt, em uma variável de ambiente personalizada (como clientKeyPassword_content).

    cache_client_dkms_config_info=[{"regionId":"<your dkms regionId>","endpoint":"<your dkms endpoint>","passwordFromEnvVariable":"<YOUR_PASSWORD_ENV_VARIABLE>","clientKeyFile":"<your ClientKey file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]

Etapa 3: Use o plug-in de secret do RAM nos Alibaba Cloud SDKs

Java

Alibaba Cloud SDK for Java (V2.0)

Compatibilidade com Java 9+

Como este plug-in depende do CGLIB para proxy dinâmico de classes, o erro java.lang.reflect.InaccessibleObjectException pode ocorrer ao executar o programa no Java 9 ou posterior.

Adicione os seguintes parâmetros da JVM ao iniciar a aplicação para permitir que o CGLIB acesse APIs restritas:

--add-opens java.base/java.lang=ALL-UNNAMED

Por exemplo, ao executar o programa a partir da linha de comando:

java --add-opens java.base/java.lang=ALL-UNNAMED -jar your-application.jar

Ao executar o programa em uma IDE (como IntelliJ IDEA ou Eclipse), adicione este parâmetro às opções da VM.

  1. Adicione o plug-in de secret do RAM ao seu projeto por meio do Maven.

    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-tea-openapi-sdk-managed-credentials-provider</artifactId>
        <version>[1.3.5,]</version>
    </dependency>
    Nota

    Instale a versão mais recente do plug-in. Para mais informações, consulte o source code.

  2. Obtenha o cliente do Alibaba Cloud SDK for Java e chame os cloud services. O exemplo a seguir usa a API DescribeInstances do ECS.

    1. Adicione a dependência do cloud server ECS ecs20140526.

      <dependency>
          <groupId>com.aliyun</groupId>
          <artifactId>ecs20140526</artifactId>
          <version>7.1.0</version>
      </dependency>
    2. Chame a operação da API DescribeInstances.

      import com.aliyun.ecs20140526.Client;
      import com.aliyun.ecs20140526.models.DescribeInstancesResponse;
      import com.aliyun.kms.secretsmanager.plugin.tea.openapi.ProxyClientCreator;
      import com.google.gson.Gson;
      
      public class AliyunTeaOpenApiProviderSample {
      
          public static void main(String[] args) throws Exception {
              // Step 1: Specify the name of the hosted secret (the secret name created in KMS).
              String secretName = "your-secret-name";
      
              /*
                If the application cannot read the default configuration file (managed_credentials_providers.properties)
                from the classpath and executable JAR file,
                or if you need to customize the configuration file name, you can call the following code to set a custom configuration file
                and read it in the following order:
                1. "your-config-name" absolute path + filename, which reads the file under the absolute path.
                2. "your-config-name" filename only, which first reads the configuration file under the classpath, then the configuration file in the executable JAR file.
              */
              //ConfigLoader.setConfigName("your-config-name");
      
              // Step 2: Configure the OpenAPI client.
              com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
              config.endpoint = "your-product-endpoint"; // Replace with the actual cloud service endpoint.
      
              // Step 3: Create a client instance.
              Client client = ProxyClientCreator.createClient(config, Client.class, secretName);
      
              // Step 4: Call the cloud service API.
              com.aliyun.ecs20140526.models.DescribeInstancesRequest request = new com.aliyun.ecs20140526.models.DescribeInstancesRequest();
              request.setRegionId("cn-hangzhou"); // Set the region ID.
              DescribeInstancesResponse response = client.describeInstances(request);
      
              // Step 5: Print the result.
              System.out.println(new Gson().toJson(response.getBody()));
          }
      }

Alibaba Cloud SDK for Java (V1.0)

  1. Adicione o plug-in de secret do RAM ao seu projeto por meio do Maven.

    <dependency>
       <groupId>com.aliyun</groupId>
       <artifactId>aliyun-java-sdk-core</artifactId>
       <version>[4.3.2,5.0.0]</version>
    </dependency>
    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>aliyun-java-sdk-core-managed-credentials-provider</artifactId>
      <version>[1.3.1,]</version>
    </dependency>
    Nota

    Instale a versão mais recente do plug-in. Para mais informações, consulte o source code.

  2. Obtenha o cliente do Alibaba Cloud SDK for Java e chame os cloud services.

    O exemplo a seguir usa a API DescribeInstanceStatus do ECS.

    1. Adicione a dependência do cloud server ECS aliyun-java-sdk-ecs.

      <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-ecs</artifactId>
        <version>5.11.20</version>
      </dependency>
    2. Chame a operação da API DescribeInstanceStatus.

      import com.aliyuncs.IAcsClient;
      import com.aliyuncs.ecs.model.v20140526.DescribeInstanceStatusRequest;
      import com.aliyuncs.ecs.model.v20140526.DescribeInstanceStatusResponse;
      import com.aliyun.kms.secretsmanager.plugin.sdkcore.ProxyAcsClient;
      import com.aliyuncs.exceptions.ClientException;
      import com.aliyuncs.exceptions.ServerException;
      
      public class AliyunSdkProviderSample {
          public static void main(String[]args) {
              String secretName="******";
              /*
                If the application cannot read the default configuration file (managed_credentials_providers.properties)
                from the classpath and executable JAR file,
                or if you need to customize the configuration file name, you can call the following code to set a custom configuration file
                and read it in the following order:
                1. "your-config-name" absolute path + filename, which reads the file under the absolute path.
                2. "your-config-name" filename only, which first reads the configuration file under the classpath, then the configuration file in the executable JAR file.
              */
              //ConfigLoader.setConfigName("your-config-name");
              
              // 1. Obtain the ACSClient by using aliyun-java-sdk-managed-credentials-provider.
              IAcsClient client = null;
              try {
                  client = new ProxyAcsClient("<the regionId of ECS>", secretName);
              } catch (ClientException e) {
                   e.printStackTrace();
               }
              // 2. Call the ECS OpenAPI to implement business functions.
              DescribeInstanceStatusRequest request = new DescribeInstanceStatusRequest();
              DescribeInstanceStatusResponse response;
              try {
                   response = client.getAcsResponse(request);
              } catch (ServerException e) {
                   e.printStackTrace();
               } catch (ClientException e) {
                   e.printStackTrace();
               }
              // 3. Release the plug-in resources by closing the client.
              client.shutdown();
          }
      }

Uso no OSS SDK

  1. Adicione o plug-in de secret do RAM ao seu projeto por meio do Maven.

    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
        <version>4.5.17</version>
    </dependency>
    <dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>[2.1.0,3.10.2]</version>
    <exclusions>
        <exclusion>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-kms</artifactId>
        </exclusion>
    </exclusions>
    </dependency>
    <dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-sdk-oss-managed-credentials-provider</artifactId>
    <version>[1.3.1,]</version>
    </dependency>
    Nota

    Instale a versão mais recente do plug-in. Para mais informações, consulte o source code.

  2. Obtenha o cliente do OSS Java SDK e chame os cloud services. O exemplo a seguir usa o listBuckets do OSS.

    import com.aliyun.kms.secretsmanager.plugin.oss.ProxyOSSClientBuilder;
    import com.aliyun.oss.OSS;
    import com.aliyun.oss.model.Bucket;
    
    import java.util.List;
    
    public class OssProviderSample {
    
        public static void main(String[] args) throws Exception {
            String secretName = "******";
            String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    
            /*
              If the application cannot read the default configuration file (managed_credentials_providers.properties)
              from the classpath and executable JAR file,
              or if you need to customize the configuration file name, you can call the following code to set a custom configuration file
              and read it in the following order:
              1. "your-config-name" absolute path + filename, which reads the file under the absolute path.
              2. "your-config-name" filename only, which first reads the configuration file under the classpath, then the configuration file in the executable JAR file.
            */
            //ConfigLoader.setConfigName("your-config-name");
    
            // Obtain the OSS client.
            OSS ossClient = new ProxyOSSClientBuilder().build(endpoint, secretName);
    
            // The following is the business code: call Alibaba Cloud OSS services to implement business functions.
            List<Bucket> buckets = ossClient.listBuckets();
            for (Bucket bucket : buckets) {
                if (bucket != null) {
                    // ...
                }
            }
    
            // Release the plug-in resources by closing the client.
            ossClient.shutdown();
        }
    
    }

Python

Alibaba Cloud SDK for Python (V1.0)

  1. Execute o comando pip para adicionar o plug-in de secret do RAM ao seu projeto.

    pip install aliyun-openapi-python-sdk-managed-credentials-provider
    Nota

    Verifique se a versão do plug-in é 0.1.0 ou posterior. Para mais informações, consulte o source code.

  2. Obtenha o cliente do Alibaba Cloud SDK for Python e chame os cloud services.

    from aliyun_sdk_secretsmanager_sdk_core_plugin.proxy_acs_client import ProxyAcsClient
    
       region="cn-hangzhou"
       secretName="******"
    
       # 1. Obtain the ACSClient.
       client = ProxyAcsClient(region_id=region, secret_name=secretName )
    
       # 2. Business code: use the client to call Alibaba Cloud services without code changes.
       ...
    
       # 3. Release the plug-in resources by closing the client.
       client.shutdown()

OSS Python SDK

  1. Execute o comando pip para adicionar o plug-in de secret do RAM ao seu projeto.

    pip install aliyun-oss-python-sdk-managed-credentials-provider
    Nota

    Verifique se a versão do plug-in é 0.1.0 ou posterior. Para mais informações, consulte o source code.

  2. Obtenha o cliente do Alibaba Cloud OSS Python SDK e chame os cloud services.

    from aliyun_sdk_secretsmanager_oss_plugin.proxy_bucket import ProxyBucket
    from itertools import islice
    
    endpoint = "******"
    secret_name ="******"
    bucket_name = "******"
    bucket = ProxyBucket(secret_name=secret_name, endpoint=endpoint, bucket_name=bucket_name)
    objects = bucket.list_objects()
    for b in islice(objects.object_list, 10):
        print(b.key)
    bucket.shutdown()

Go

Alibaba Cloud SDK for Go (V1.0)

  1. Instale o plug-in de secret do RAM para o Alibaba Cloud SDK for Go.

    Importante
    • Instale a versão mais recente do plug-in. Para mais informações, consulte o source code.

    • Para Go, a versão do alibaba-cloud-sdk-go exigida pelo plug-in de secret do RAM deve ser anterior a v1.63.0. Verifique e confirme a versão no arquivo go.mod do plug-in para evitar possíveis problemas de compatibilidade.

    • Método 1: Use o go.mod e gerencie suas dependências.

      Adicione o seguinte conteúdo ao arquivo go.mod para instalar a dependência.

      require (
          github.com/aliyun/aliyun-sdk-managed-credentials-providers-go/aliyun-sdk-managed-credentials-providers/alibaba-cloud-sdk-go-managed-credentials-provider vX.X.X
      )
    • Método 2: Use o comando go get para obter o pacote de código remoto.

      go get -u github.com/aliyun/aliyun-sdk-mxanaged-credentials-providers-go/aliyun-sdk-managed-credentials-providers/alibaba-cloud-sdk-go-managed-credentials-provider
  2. Obtenha o cliente do Alibaba Cloud SDK for Go e chame os cloud services.

    O exemplo a seguir usa a API DescribeInstances do ECS.

    package sample
    
    import (
        "fmt"
        "github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
        sdkcoreprovider "github.com/aliyun/aliyun-sdk-managed-credentials-providers-go/aliyun-sdk-managed-credentials-providers/alibaba-cloud-sdk-go-managed-credentials-provider/sdk"
    )
    
    func main() {
        secretName := "********"
        regionId := "cn-hangzhou"
    
        client, err := sdkcoreprovider.GetClient(&ecs.Client{}, regionId, secretName)
        if err != nil {
            fmt.Println(err)
            return
        }
        ecsClient := client.(*ecs.Client)
    
        request := ecs.CreateDescribeInstancesRequest()
        instancesResponse, err := ecsClient.DescribeInstances(request)
        if err != nil {
            fmt.Println(err)
            return
        }
    
        for _, instance := range instancesResponse.Instances.Instance {
            // do something with instance
        }
    }

OSS Go SDK

  1. Instale o plug-in de secret do RAM para o OSS Go SDK.

    Importante
    • Instale a versão mais recente do plug-in. Para mais informações, consulte o source code.

    • Para Go, a versão do alibaba-cloud-sdk-go exigida pelo plug-in de secret do RAM deve ser anterior a v1.63.0. Verifique e confirme a versão no arquivo go.mod do plug-in para evitar possíveis problemas de compatibilidade.

    • Método 1: Use o go.mod e gerencie suas dependências.

      Adicione o seguinte conteúdo ao arquivo go.mod para instalar a dependência.

      require (
          github.com/aliyun/aliyun-sdk-managed-credentials-providers-go/aliyun-sdk-managed-credentials-providers/aliyun-oss-go-sdk-managed-credentials-provider vX.X.X
      )
    • Método 2: Use o comando go get para obter o pacote de código remoto.

      go get -u github.com/aliyun/aliyun-sdk-managed-credentials-providers-go/aliyun-sdk-managed-credentials-providers/aliyun-oss-go-sdk-managed-credentials-provider
  2. Obtenha o cliente do Alibaba Cloud OSS Go SDK e chame os cloud services.

    package sample
    
    import (
        "fmt"
        ossprovider "aliyun-oss-go-sdk-managed-credentials-provider/sdk"
    )
    
    func main() {
        secretName := "********"
        endpoint := "https://oss-cn-hangzhou.aliyuncs.com"
    
        // Obtain the proxy OSS client.
        client, err := ossprovider.New(endpoint, secretName)
        if err != nil {
            fmt.Println(err)
            return
        }
    
        result, err := client.ListBuckets()
        if err != nil {
            fmt.Println(err)
            return
        }
        for _, bucket := range result.Buckets {
            // Business code.
        }
    
        // Release the plug-in resources by closing the client.
        client.Shutdown()
    }

FAQ

Como resolvo a expiração de credenciais após o plug-in de secret do Go reportar o erro InvalidAccessKeyId?

  • Causa:

    • O plug-in de secret do Go não repete a solicitação automaticamente quando ocorre um erro InvalidAccessKeyId.

    • Definir uma janela de rotação curta (como 10 minutos), menor que 6 horas, durante a rotação manual pode tornar o AccessKey do cliente inválido antes da atualização do cache local.

  • Solução

    1. Aguarde a atualização automática: Secrets com rotação automática obtêm novos secrets por meio do mecanismo de atualização agendada (o intervalo é de 6 horas).

    2. Atualização imediata: Quando uma credencial expirar, capture a exceção e chame o método sdk.RefreshSecretInfo(secretName) para atualizar manualmente o secret do RAM.

    3. Atualização agendada: Configure uma tarefa agendada para chamar sdk.RefreshSecretInfo(secretName) em uma frequência personalizada para atualizar o secret do RAM, para garantir a obtenção do novo secret antes da expiração do atual.

    4. Ajuste a janela de rotação: Para a rotação manual de secrets do RAM, especifique a janela de rotação com mais de 12 horas.