Todos os produtos
Search
Central de documentação

:CreateAccount

Última atualização: Jul 08, 2026

Cria um par de nome de usuário e senha estáticos. Para acessar um broker do ApsaraMQ for RabbitMQ com um cliente RabbitMQ open source, use um par de nome de usuário e senha para autenticação. O acesso ao broker do ApsaraMQ for RabbitMQ só é permitido após a autenticação bem-sucedida. O ApsaraMQ for RabbitMQ permite gerar nomes de usuário e senhas usando pares de AccessKey fornecidos pelo Alibaba Cloud Resource Access Management (RAM).

Informações básicas

Para acessar um broker do ApsaraMQ for RabbitMQ com um cliente RabbitMQ open source, use um par de nome de usuário e senha para autenticação. O acesso ao broker do ApsaraMQ for RabbitMQ ocorre somente após a autenticação bem-sucedida.

O ApsaraMQ for RabbitMQ permite gerar nomes de usuário e senhas usando pares de AccessKey fornecidos pelo Alibaba Cloud RAM.

Observações de uso

  • A instância do ApsaraMQ for RabbitMQ na qual você deseja criar o par de nome de usuário e senha estáticos deve estar no estado Running.

  • Use um par de AccessKey para criar apenas um par de nome de usuário e senha estáticos por instância do ApsaraMQ for RabbitMQ.

  • Para atualizar um par existente de nome de usuário e senha estáticos, exclua o par atual e crie um novo.

Código de exemplo para gerar um nome de usuário

O valor do parâmetro userName na requisição é uma string codificada em Base64, gerada com base no ID da instância e no AccessKey ID. O código a seguir demonstra como gerar esse nome de usuário:

import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class Base64Utils {
    public static final Charset UTF8 = StandardCharsets.UTF_8;
    /**
    * Decode the Base64 string.
    * @param str
    * @return
    */
    public static String decode(String str) {
        return new String(Base64.getDecoder().decode(str.getBytes(UTF8)), UTF8);
    }
    public static String encode(String bytes) {
        return new String(Base64.getEncoder().encode(bytes.getBytes(UTF8)), UTF8);
    }
    public static void main(String[] args) {
        // Use the ID of your ApsaraMQ for RabbitMQ instance and the AccessKey pair of the Alibaba Cloud account that you use to purchase the instance to form a string.
        String str = "2:${instanceId}:${ak}";
        // Generate the value of the userName parameter in the API operation.
        String userName = encode(str);
        System.out.println("userName=" + userName);
        String decodeStr = decode(userName);
        System.out.println("originStr=" + decodeStr);
    }
}

Código de exemplo para gerar uma assinatura

O sistema usa um algoritmo de criptografia para gerar os valores dos parâmetros signature e secretSign na requisição com base no timestamp de criação do nome de usuário estático especificado e no AccessKey secret. O código a seguir demonstra como gerar os valores de signature e secretSign:

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
public class SignatureUtils {
    public static String hamcsha1(byte[] data, byte[] key) throws NoSuchAlgorithmException, InvalidKeyException {
        SecretKeySpec signingKey = new SecretKeySpec(key, "HmacSHA1");
        Mac mac = Mac.getInstance("HmacSHA1");
        mac.init(signingKey);
        return byte2hex(mac.doFinal(data));
    }
    public static String byte2hex(byte[] b) {
        StringBuilder hs = new StringBuilder();
        String stmp;
        for (int n = 0; b != null && n < b.length; n++) {
            stmp = Integer.toHexString(b[n] & 0XFF);
            if (stmp.length() == 1) {
                hs.append('0');
            }
            hs.append(stmp);
        }
        return hs.toString().toUpperCase();
    }
    public static void main(String[] args) throws InvalidKeyException, NoSuchAlgorithmException {
        // The value of the createTimestamp parameter in the sample code is the value of the createTimestamp parameter in the API operation. 
        String createTimestamp= String.valueOf(System.currentTimeMillis());
        System.out.println("createTimestamp:" + createTimestamp);
        // The AccessKey secret of your Alibaba Cloud account. 
        String sk = "${sk}";
        // Generate the value of the SecretSign parameter in the API operation. 
        String SecretSign = hamcsha1(sk.getBytes(), createTimestamp.getBytes());
        System.out.println("SecretSign:" + SecretSign);
        // Generate the value of the signature parameter in the operation. 
        String signature = hamcsha1(createTimestamp.getBytes(), sk.getBytes());
        System.out.println("signature:" + signature);
    }
}

Parâmetros da requisição

Parâmetro

Tipo

Obrigatório

Exemplo

Descrição

Action

String

Sim

CreateAccount

Operação a ser executada. Defina o valor como CreateAccount.

instanceId

String

Sim

amqp-cn-*****

ID da instância na qual você deseja criar o par de nome de usuário e senha estáticos.

accountAccessKey

String

Sim

LTAI5t8be***tEJ6vfo

AccessKey ID da sua conta Alibaba Cloud ou usuário RAM. Para obter um AccessKey ID, consulte Criar um par de AccessKey.

Nota

Se você usar um par de nome de usuário e senha estáticos criado com o par de AccessKey de um usuário RAM para enviar e receber mensagens no ApsaraMQ for RabbitMQ, verifique se as permissões necessárias foram concedidas ao usuário RAM. Para mais informações, consulte Políticas do RAM.

userName

String

Sim

LTAI5*eRZtEJ6vfo

Nome de usuário estático a ser criado.

O valor deste parâmetro é uma string codificada em Base64, gerada com base no ID da instância e no AccessKey ID. Para mais informações, consulte a seção "Código de exemplo para gerar um nome de usuário" deste tópico.

signature

String

Sim

22c2d7d1769cb53c5a6d9213248e2de524

Assinatura. O sistema gera uma senha estática com base na assinatura da requisição, na assinatura do AccessKey secret e no nome de usuário.

O sistema usa o algoritmo HMAC-SHA1 para gerar a assinatura com base no timestamp de criação do nome de usuário e no AccessKey ID. Para mais informações, consulte a seção "Código de exemplo para gerar uma assinatura" deste tópico.

createTimestamp

Long

Sim

1671175303522

Timestamp que indica quando a senha foi criada. Unidade: milissegundos.

Nota

Este timestamp é especificado por você e usado para gerar a senha estática. Não corresponde ao timestamp em que o sistema gera a senha.

secretSign

String

Sim

4c1a6367ce4c4255e9617326f9133ac635

Assinatura do AccessKey secret. O sistema gera uma senha estática com base na assinatura da requisição, na assinatura do AccessKey secret e no nome de usuário.

O sistema usa o algoritmo HMAC-SHA1 para gerar a assinatura do AccessKey secret com base no timestamp de criação do nome de usuário e no AccessKey ID. Para mais informações, consulte a seção "Código de exemplo para gerar uma assinatura" deste tópico.

Parâmetros de resposta

Parâmetro

Tipo

Exemplo

Descrição

RequestId

String

FEBA5E0C-50D0-4FA6-A794-4901E5465***

ID da requisição.

Code

Integer

200

Código de status HTTP retornado. O valor 200 indica que a requisição foi bem-sucedida.

Message

String

operation success

Mensagem retornada.

Success

Boolean

true

Indica se a requisição foi bem-sucedida.

Data

Object

Dados retornados.

AccessKey

String

LTAI5*eRZtEJ6vfo

AccessKey ID usado para criar a senha.

Password

String

OUYwQzM2QjZBRkUxNDRFM*MzZCNzdDQzoxNjcxNDMwMzkyODI1

Senha estática criada.

CreateTimeStamp

Long

1671175303522

Timestamp que indica quando a senha foi criada. Unidade: milissegundos.

InstanceId

String

amqp-cn-*****

ID da instância do ApsaraMQ for RabbitMQ.

MasterUId

Long

1565***973901

ID da conta Alibaba Cloud ou usuário RAM ao qual pertence o par de AccessKey usado para criar o par de nome de usuário e senha estáticos.

UserName

String

MjphbXFwLWNuLXVxbTJ6cjc2djAwMzpMVEFJNX***ZNMWVSWnRFSjZ2Zm8=

Nome de usuário estático criado.

Exemplos

Requisições de exemplo

http(s)://[Endpoint]/?Action=CreateAccount
&instanceId=amqp-cn-*********
&accountAccessKey=LTAI5t8be*******tEJ6vfo
&userName=LTAI5***********eRZtEJ6vfo
&signature=22c2d7d1769cb53c5a6d9213248e2de524******
&createTimestamp=1671175303522
&secretSign=4c1a6367ce4c4255e9617326f9133ac635******
&<Common request parameters>

Respostas de sucesso de exemplo

Formato XML

HTTP/1.1 200 OK
Content-Type:application/xml

<CreateAccountResponse>
    <RequestId>FEBA5E0C-50D0-4FA6-A794-4901E5465***</RequestId>
    <Code>200</Code>
    <Message>operation success</Message>
    <Success>true</Success>
    <Data>
        <AccessKey>LTAI5***********eRZtEJ6vfo</AccessKey>
        <Password>OUYwQzM2QjZBRkUxNDRFM***************MzZCNzdDQzoxNjcxNDMwMzkyODI1</Password>
        <CreateTimeStamp>1671175303522</CreateTimeStamp>
        <InstanceId>amqp-cn-*********</InstanceId>
        <UserName>MjphbXFwLWNuLXVxbTJ6cjc2djAwMzpMVEFJNX*******ZNMWVSWnRFSjZ2Zm8=</UserName>
    </Data>
</CreateAccountResponse>

Formato JSON

HTTP/1.1 200 OK
Content-Type:application/json

{
  "RequestId" : "FEBA5E0C-50D0-4FA6-A794-4901E5465***",
  "Code" : 200,
  "Message" : "operation success",
  "Success" : true,
  "Data" : {
    "AccessKey" : "LTAI5***********eRZtEJ6vfo",
    "Password" : "OUYwQzM2QjZBRkUxNDRFM***************MzZCNzdDQzoxNjcxNDMwMzkyODI1",
    "CreateTimeStamp" : 1671175303522,
    "InstanceId" : "amqp-cn-*********",
    "UserName" : "MjphbXFwLWNuLXVxbTJ6cjc2djAwMzpMVEFJNX*******ZNMWVSWnRFSjZ2Zm8="
  }
}

Códigos de erro

Para obter uma lista de códigos de erro, consulte Códigos de erro do serviço.

Criar um par de nome de usuário e senha estáticos no console

Você também pode criar um par de nome de usuário e senha estáticos no console do ApsaraMQ for RabbitMQ. Para mais informações, consulte Gerenciar nomes de usuário e senhas estáticos.