A associação de uma função do RAM a um ambiente de desenvolvimento individual permite acessar outros serviços da Alibaba Cloud com credenciais de curta duração emitidas pelo Security Token Service (STS), em vez de codificar permanentemente um par de AccessKey. A rotação automática das credenciais reduz o risco de vazamentos.
Limitações
Cada ambiente de desenvolvimento individual aceita apenas uma função do RAM associada.
Antes de começar
Analise os cenários a seguir para definir a abordagem mais adequada ao seu ambiente:
|
Cenário |
Abordagem recomendada |
Observações |
|
Uso de Notebook ou Python no DataWorks para acessar MaxCompute, Hologres, EMR Serverless Spark, Realtime Compute for Apache Flink ou Platform for AI (PAI) |
Associe a função padrão do DataWorks |
Não é necessário criar uma função do RAM |
|
Ambiente de desenvolvimento individual configurado como público no workspace |
Não associe uma função do RAM |
Evita vazamentos acidentais de permissões; utilize um par de AccessKey diretamente no código |
|
Acesso a serviços fora do escopo da função padrão |
Associe uma função do RAM personalizada |
Crie uma função do RAM cuja entidade confiável seja um serviço da Alibaba Cloud |
Etapa 1: Associar uma função do RAM a um ambiente de desenvolvimento individual
Cenário 1: Associar a função padrão do DataWorks
A função padrão do DataWorks concede as permissões do proprietário do ambiente de desenvolvimento individual para acessar os seguintes serviços: MaxCompute, Hologres, EMR Serverless Spark, Realtime Compute for Apache Flink e Platform for AI (PAI). Não é necessário criar nenhuma função.
Após associar a função padrão, execute as operações abaixo sem configurar um par de AccessKey:
Use uma célula SQL do Notebook para acessar MaxCompute, Hologres, EMR Serverless Spark, Realtime Compute for Apache Flink ou PAI.
Use o SDK do MaxCompute para enviar uma tarefa a um projeto do MaxCompute no qual o proprietário do ambiente de desenvolvimento individual tenha permissões de execução.

Cenário 2: Não associar uma função do RAM
Se o ambiente de desenvolvimento individual estiver configurado como público no workspace, não associe uma função do RAM. Essa medida evita vazamentos acidentais de permissões. Ao criar ou reconfigurar o ambiente, defina RAM Role na seção Advanced Information como Do Not Associate Role e configure um par de AccessKey diretamente no código.

Etapa 2: Obter uma credencial de acesso temporária
Nota: Os três métodos abaixo dependem de um serviço local injetado automaticamente durante a criação do ambiente de desenvolvimento individual. Eles funcionam exclusivamente dentro desse ambiente. A execução deste código localmente ou em outro ambiente resultará em falha.
Escolha um dos métodos a seguir para obter uma credencial de acesso temporária da função do RAM associada ao seu ambiente de desenvolvimento individual.
Método 1: Usar a ferramenta Alibaba Cloud Credentials (recomendado)
A ferramenta Credentials chama o serviço local injetado para buscar uma credencial de acesso temporária e a rotaciona automaticamente.
Instale a ferramenta Credentials:
pip install alibabacloud_credentials
Use a ferramenta Credentials para obter as credenciais:
from alibabacloud_credentials.client import Client as CredClient
from alibabacloud_credentials.models import Config as CredConfig
credentialsConfig = CredConfig(
type='credentials_uri' # Fetches a temporary access credential via the injected URI.
# If no other credential source is configured in the default
# credential chain, omit this parameter.
)
credentialsClient = CredClient(credentialsConfig)
Para exemplos de SDK em outras linguagens, consulte Práticas recomendadas para usar credenciais de acesso em chamadas de API.
Método 2: Consultar o endpoint do serviço local
Execute o comando abaixo no terminal do seu ambiente de desenvolvimento individual:
# Retrieve a temporary access credential for the RAM role.
curl $ALIBABA_CLOUD_CREDENTIALS_URI
Uma resposta bem-sucedida tem o seguinte formato:
{
"Code": "Success",
"AccessKeyId": "STS.N*********7",
"AccessKeySecret": "3***************d",
"SecurityToken": "DFE32G*******",
"Expiration": "2024-05-21T10:39:29Z"
}
|
Campo |
Descrição |
|
|
Token temporário da função do RAM |
|
|
Horário de expiração da credencial em UTC |
Método 3: Ler o arquivo de credenciais local
Leia o arquivo de credenciais em /mnt/.alibabacloud/credentials. O arquivo contém os mesmos campos da resposta apresentada no Método 2:
{
"AccessKeyId": "STS.N*********7",
"AccessKeySecret": "3***************d",
"SecurityToken": "DFE32G*******",
"Expiration": "2024-05-21T10:39:29Z"
}
Etapa 3: Acessar o MaxCompute usando a função do RAM
-
Instale a ferramenta Credentials e o SDK do MaxCompute:
# Install the Credentials tool. pip install alibabacloud_credentials # Install MaxCompute SDK. pip install odps -
Use a credencial de acesso temporária da função do RAM para listar tabelas em um projeto do MaxCompute:
from alibabacloud_credentials import providers from odps.accounts import CredentialProviderAccount from odps import ODPS if __name__ == '__main__': account = CredentialProviderAccount(providers.DefaultCredentialsProvider()) o = ODPS( account=account, project="<odps_project>", # Replace with the name of the MaxCompute project to access. endpoint="<odps_endpoint>" # Replace with the endpoint of the region where the project resides. ) for t in o.list_tables(): print(t)Substitua os placeholders a seguir:
Placeholder
Descrição
<odps_project>Nome do projeto do MaxCompute a ser acessado
<odps_endpoint>Endpoint da região onde o projeto está localizado
Próximos passos
Para saber mais sobre funções do RAM e entidades confiáveis, consulte Visão geral das funções do RAM.
Para explorar padrões de uso de credenciais em outras linguagens, consulte Práticas recomendadas para usar credenciais de acesso em chamadas de API.