As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Enviando e recebendo mensagens AS2
Esta seção descreve os processos para enviar e receber mensagens AS2. Ele também fornece detalhes sobre nomes de arquivos e locais associados às mensagens AS2.
A tabela a seguir lista os algoritmos de criptografia disponíveis para mensagens AS2 e quando você pode usá-los.
| Algoritmo de criptografia | HTTP | HTTPS | Observações |
|---|---|---|---|
| AES128_CBC | Sim | Sim | |
| AES192_CBC | Sim | Sim | |
| AES256_CBC | Sim | Sim | |
| DES_EDE3_CBC | Sim | Sim | Use esse algoritmo somente se precisar oferecer suporte a um cliente antigo que o exija, pois é um algoritmo de criptografia fraco. |
| NONE | Não | Sim | Se você estiver enviando mensagens para um servidor Transfer Family, só poderá selecionar NONE se estiver usando um Application Load Balancer (ALB). |
Tópicos
Processo de recebimento de mensagens AS2
O processo de entrada é definido como uma mensagem ou arquivo que está sendo transferido para o seu AWS Transfer Family servidor. A sequência das mensagens de entrada é a seguinte:
-
Um processo administrativo ou automatizado inicia uma Transferência de Arquivos AS2 no servidor AS2 remoto do parceiro.
-
O servidor AS2 remoto do parceiro assina e criptografa o conteúdo do arquivo e, em seguida, envia uma solicitação HTTP POST para um endpoint de entrada AS2 hospedado no Transfer Family.
-
Usando os valores configurados para o servidor, parceiros, certificados e contrato, o Transfer Family descriptografa e verifica a carga do AS2. O conteúdo do arquivo é armazenado no armazenamento de arquivos configurado do Amazon S3.
-
A resposta MDN assinada é retornada em linha com a resposta HTTP ou de forma assíncrona por meio de uma solicitação HTTP POST separada para o servidor de origem.
-
Uma trilha de auditoria é escrita para a Amazon CloudWatch com detalhes sobre a troca.
-
O arquivo descriptografado está disponível em uma pasta chamada
inbox/processed.
Enviando e recebendo mensagens AS2 por HTTPS
Esta seção descreve como configurar um servidor Transfer Family que usa o protocolo AS2 para enviar e receber mensagens por HTTPS.
Envie mensagens AS2 por HTTPS
Para enviar mensagens AS2 usando HTTPS, crie um conector com as seguintes informações:
-
Para o URL, especifique um URL HTTPS
-
Para o algoritmo de criptografia, selecione qualquer um dos algoritmos disponíveis.
nota
Para enviar mensagens para um servidor Transfer Family sem usar criptografia (ou seja, você seleciona o algoritmo
NONEde criptografia), você deve usar um Application Load Balancer (ALB). -
Forneça os valores restantes para o conector, conforme descrito em Configurar conectores AS2.
Receba mensagens AS2 por HTTPS
AWS Transfer Family Atualmente, os servidores AS2 fornecem apenas transporte HTTP pela porta 5080. No entanto, você pode encerrar o TLS em um balanceador de carga de rede ou aplicativo na frente do endpoint VPC do servidor Transfer Family usando uma porta e um certificado de sua escolha. Com essa abordagem, você pode fazer com que as mensagens AS2 recebidas usem HTTPS.
Pré-requisitos
-
O VPC deve estar no mesmo Região da AWS servidor do Transfer Family.
-
As sub-redes da sua VPC devem estar dentro das zonas de disponibilidade nas quais você deseja usar o servidor.
nota
Cada servidor Transfer Family pode suportar até três zonas de disponibilidade.
-
Aloque até três endereços IP Elastic na mesma região do seu servidor. Ou você pode optar por trazer seu próprio intervalo de endereços IP (BYOIP).
nota
O número de endereços IP elásticos deve corresponder ao número de zonas de disponibilidade que você usa com os endpoints do servidor.
Você pode configurar um Network Load Balance (NLB) ou um Application Load Balancer (ALB). A tabela a seguir lista os prós e os contras de cada abordagem.
A tabela abaixo fornece as diferenças nos recursos quando você usa um NLB versus um ALB para encerrar o TLS.
| Recurso | Network Load Balancer (NLB) | Application Load Balancer (ALB) |
|---|---|---|
| Latência | Menor latência à medida que opera na camada de rede. | Maior latência à medida que opera na camada do aplicativo. |
| Compatibilidade com IP estático | Pode anexar endereços IP elásticos que podem ser estáticos. | Não é possível anexar endereços IP elásticos: fornece um domínio cujos endereços IP subjacentes podem mudar. |
| Roteamento avançado | Não suporta roteamento avançado. | Suporta roteamento avançado. Pode injetar o Esse cabeçalho está descrito X-Forwarded-Proto |
| TLS/SSL rescisão | Suporta TLS/SSL rescisão | Suporta TLS/SSL rescisão |
| TLS mútua (mTLS) | Atualmente, o Transfer Family não suporta o uso de um NLB para mTLS | Support para mTLS |
Depois de configurar o balanceador de carga, os clientes se comunicam com o balanceador de carga por meio do receptor de porta personalizado. Em seguida, o balanceador de carga se comunica com o servidor pela porta 5080.
Para criar um grupo de destino
-
Depois de escolher Criar grupo-alvo no procedimento anterior, você será direcionado para a página Especificar detalhes do grupo de destino para um novo grupo-alvo.
-
Na seção Configurações básicas, insira as seguintes informações.
-
Em Escolher um tipo de destino, escolha Endereços IP.
-
Em Nome do grupo de destino, insira um nome para o grupo de destino.
-
Para Protocolo, sua seleção depende de você estar usando um ALB ou um NLB.
-
Para um Network Load Balancer (NLB), escolha TCP
-
Para um Application Load Balancer (ALB), escolha HTTP
-
-
Em Porta, insira
5080. -
Em Tipo de endereço IP, selecione IPv4.
-
Em VPC, escolha a VPC criada para o servidor Transfer Family AS2.
-
-
Na seção Verificações de saúde, escolha o protocolo de verificação de saúde.
-
Para um ALB, escolha HTTP
-
Para um NLB, escolha TCP
-
-
Escolha Próximo.
-
Na página Registrar alvos, insira as seguintes informações:
-
Em Rede, confirme se a VPC que você criou para o servidor Transfer Family AS2 foi especificada.
-
Para o endereço IPv4, insira o endereço IPv4 privado dos endpoints do servidor Transfer Family AS2.
Se você tiver mais de um endpoint para seu servidor, escolha Adicionar endereço IPv4 para adicionar outra linha para inserir outro endereço IPv4. Repita esse processo até inserir os endereços IP privados de todos os endpoints do seu servidor.
-
Verifique se as portas estão definidas como
5080. -
Escolha Incluir como pendente abaixo para adicionar suas entradas à seção Revisar metas.
-
-
Na seção Revisar alvos, revise seus alvos IP.
-
Escolha Criar grupo-alvo e, em seguida, volte ao procedimento anterior para criar seu NLB e insira o novo grupo-alvo onde indicado.
Teste o acesso ao servidor a partir de um endereço IP elástico
Conecte-se ao servidor pela porta personalizada usando um endereço IP elástico ou o nome DNS do Network Load Balancer.
Importante
Gerencie o acesso ao seu servidor a partir de endereços IP do cliente usando as listas de controle de acesso à rede (ACL da rede) para as sub-redes configuradas no balanceador de carga. As permissões da Network ACL são definidas no nível da sub-rede, portanto, as regras se aplicam a todos os recursos que usam a sub-rede. Não é possível controlar o acesso de endereços IP de clientes usando grupos de segurança, porque o tipo de destino do balanceador de carga é definido como endereços IP em vez de Instâncias. Portanto, o balanceador de carga não preserva endereços IP de origem. Se as verificações de integridade do Network Load Balancer falharem, isso significa que o balanceador de carga não pode se conectar ao endpoint do servidor. Para solucionar esse problema, verifique o seguinte:
-
Confirme se o grupo de segurança associado ao endpoint
do servidor permite conexões de entrada das sub-redes configuradas no balanceador de carga. O balanceador de carga deve ser capaz de se conectar ao endpoint do servidor pela porta 5080. -
Confirme se o estado do servidor está online.
Transferindo arquivos usando um conector AS2
Os conectores AS2 estabelecem um relacionamento entre parceiros comerciais para transferências de mensagens AS2 de um servidor Transfer Family para um destino externo de propriedade do parceiro.
Você pode usar o Transfer Family para enviar mensagens AS2 referenciando o ID do conector e os caminhos para os arquivos, conforme ilustrado no seguinte comando start-file-transfer AWS Command Line Interface ()AWS CLI:
aws transfer start-file-transfer --connector-id c-1234567890abcdef0\ --send-file-paths "/amzn-s3-demo-source-bucket/myfile1.txt" "/amzn-s3-demo-source-bucket/myfile2.txt"
Para obter detalhes dos conectores, execute o seguinte comando:
aws transfer list-connectors
O comando list-connectors retorna os IDs do conector, os URLs e nomes do recurso da Amazon (ARNs) dos seus conectores.
Para retornar as propriedades de um conector específico, execute o comando a seguir com o ID que você deseja usar:
aws transfer describe-connector --connector-idyour-connector-id
O comando describe-connector retorna todas as propriedades do conector, incluindo URL, funções, perfis, avisos de disposição de mensagens (MDNs), tags e métricas de monitoramento.
Você pode confirmar que o parceiro recebeu os arquivos com êxito visualizando os arquivos JSON e MDN. Esses arquivos são nomeados de acordo com as convenções descritas em Nomes e localizações dos arquivos. Se você configurou uma função de registro ao criar o conector, também poderá verificar seus CloudWatch registros quanto ao status das mensagens AS2.
Para ver os detalhes do conector AS2, consulte Exibir detalhes do conector AS2. Para obter mais informações sobre como criar conectores AS2, consulte Configurar conectores AS2.
Para enviar uma mensagem de saída AS2
O processo de saída é definido como uma mensagem ou arquivo enviado AWS para um cliente ou serviço externo. A sequência das mensagens de saída é a seguinte:
-
Um administrador chama o comando
start-file-transferAWS Command Line Interface (AWS CLI) ou a operaçãoStartFileTransferda API. Essa operação faz referência a uma configuraçãoconnector. -
O Transfer Family detecta uma nova solicitação de arquivo e localiza o arquivo. O arquivo é compactado, assinado e criptografado.
-
Um cliente HTTP de transferência executa uma solicitação HTTP POST para transmitir a carga para o servidor AS2 do parceiro.
-
O processo retorna a resposta MDN assinada, em linha com a resposta HTTP (MDN síncrona ou assíncrona).
-
À medida que o arquivo se move entre os diferentes estágios de transmissão, o processo entrega o recibo da resposta do MDN e os detalhes do processamento ao cliente.
-
O servidor AS2 remoto disponibiliza o arquivo descriptografado e verificado para o administrador parceiro.
O processamento AS2 suporta muitos dos protocolos RFC 4130, com foco em casos de uso comuns e integração com implementações de servidores existentes AS2-enabled . Para obter detalhes sobre as configurações suportadas, consulte Configurações AS2.
Nomes e localizações dos arquivos
Esta seção discute as convenções de nomenclatura de arquivos para transferências AS2.
Para Transferência de Arquivos de entrada, observe o seguinte:
-
Você especifica o diretório base em um contrato. O diretório base é o nome do bucket do Amazon S3 combinado com um prefixo, se houver. Por exemplo, .
/amzn-s3-demo-bucket/AS2-folder -
Se um arquivo de entrada for processado com êxito, o arquivo (e o arquivo JSON correspondente) será salvo na pasta
/processed. Por exemplo, ./amzn-s3-demo-bucket/AS2-folder/processedO arquivo JSON contém os seguintes campos:
-
agreement-id -
as2-from -
as2-to -
as2-message-id -
transfer-id -
client-ip -
connector-id -
failure-message -
file-path -
message-subject -
mdn-message-id -
mdn-subject -
requester-file-name -
requester-content-type -
server-id -
status-code -
failure-code -
transfer-size
-
-
Se um arquivo de entrada não puder ser processado com êxito, o arquivo (e o arquivo JSON correspondente) será salvo na pasta
/failed. Por exemplo, ./amzn-s3-demo-bucket/AS2-folder/failed -
O arquivo transferido é armazenado na pasta
processedcomo. Ou seja, o ID da mensagem para a transferência é anexado ao nome do arquivo, antes da extensão original.original_filename.messageId.original_extension -
Um arquivo JSON é criado e salvo como
. Além do ID da mensagem que está sendo adicionado, a stringoriginal_filename.messageId.original_extension.json.jsoné anexada ao nome do arquivo transferido. -
Um arquivo de Aviso de Disposição de Mensagens (MDN) é criado e salvo como
. Além do ID da mensagem que está sendo adicionado, a stringoriginal_filename.messageId.original_extension.mdn.mdné anexada ao nome do arquivo transferido. -
Se houver um arquivo de entrada chamado
ExampleFileInS3Payload.dat, os seguintes arquivos serão criados:-
Arquivo –
ExampleFileInS3Payload.c4d6b6c7-23ea-4b8c-9ada-0cb811dc8b35@44313c54b0a46a36.dat -
JSON –
ExampleFileInS3Payload.c4d6b6c7-23ea-4b8c-9ada-0cb811dc8b35@44313c54b0a46a36.dat.json -
MDN –
ExampleFileInS3Payload.c4d6b6c7-23ea-4b8c-9ada-0cb811dc8b35@44313c54b0a46a36.dat.mdn
-
Para transferências de saída, a nomenclatura é semelhante, com a diferença de que não há arquivo de mensagem de entrada e, além disso, a ID de transferência da mensagem transferida é adicionada ao nome do arquivo. O ID de transferência é retornado pela operação API StartFileTransfer (ou quando outro processo ou script chama essa operação).
-
O
transfer-idé um identificador associado a uma Transferência de Arquivos. Todas as solicitações que fazem parte de umaStartFileTransferchamada compartilham umtransfer-id. -
O diretório base é o mesmo que o caminho que você usa para o arquivo de origem. Ou seja, o diretório base é o caminho que você especifica na operação ou no
start-file-transferAWS CLI comando daStartFileTransferAPI. Por exemplo:aws transfer start-file-transfer --send-file-paths/amzn-s3-demo-bucket/AS2-folder/file-to-send.txtSe você executar esse comando, os arquivos MDN e JSON serão salvos em
/amzn-s3-demo-bucket/AS2-folder/processed(para transferências bem-sucedidas) ou/amzn-s3-demo-bucket/AS2-folder/failed(para transferências malsucedidas). -
Um arquivo JSON é criado e salvo como
.original_filename.transferId.messageId.original_extension.json -
Um arquivo MDN é criado e salvo como
.original_filename.transferId.messageId.original_extension.mdn -
Se houver um arquivo de saída chamado
ExampleFileOutTestOutboundSyncMdn.dat, os seguintes arquivos serão criados:-
JSON –
ExampleFileOutTestOutboundSyncMdn.dedf4601-4e90-4043-b16b-579af35e0d83.fbe18db8-7361-42ff-8ab6-49ec1e435f34@c9c705f0baaaabaa.dat.json -
MDN –
ExampleFileOutTestOutboundSyncMdn.dedf4601-4e90-4043-b16b-579af35e0d83.fbe18db8-7361-42ff-8ab6-49ec1e435f34@c9c705f0baaaabaa.dat.mdn
-
Você também pode verificar os CloudWatch registros para ver os detalhes de suas transferências, incluindo as que falharam.
Códigos de status
A tabela a seguir lista todos os códigos de status que podem ser registrados nos CloudWatch registros quando você ou seu parceiro enviam uma mensagem AS2. Diferentes etapas de processamento de mensagens se aplicam a diferentes tipos de mensagens e são destinadas somente ao monitoramento. Os estados COMPLETED e FAILED representam a etapa final do processamento e são visíveis nos arquivos JSON.
| Código | Description | Processamento concluído? |
|---|---|---|
| PROCESSANDO | A mensagem está sendo convertida em seu formato final. Por exemplo, as etapas de descompressão e descriptografia têm esse status. | Não |
| MDN_TRANSMITEM | O processamento de mensagens está enviando uma resposta MDN. | Não |
| MDN_RECEIVE | O processamento de mensagens está recebendo uma resposta MDN. | Não |
| CONCLUÍDO | O processamento da mensagem foi concluído com êxito. Esse estado inclui quando um MDN é enviado para uma mensagem de entrada ou para verificação de mensagens enviadas pelo MDN. | Sim |
| FAILED | O processamento da mensagem falhou. Para obter uma lista de códigos de erro, consulteCódigos de erro AS2. | Sim |
Arquivos JSON de amostra
Esta seção lista exemplos de arquivos JSON para transferências de entrada e saída, incluindo arquivos de amostra para transferências bem-sucedidas e transferências que falham.
Exemplo de arquivo de saída que foi transferido com sucesso:
{ "requester-content-type": "application/octet-stream", "message-subject": "File xyzTest from MyCompany_OID to partner YourCompany", "requester-file-name": "TestOutboundSyncMdn-9lmCr79hV.dat", "as2-from": "MyCompany_OID", "connector-id": "c-c21c63ceaaf34d99b", "status-code": "COMPLETED", "disposition": "automatic-action/MDN-sent-automatically; processed", "transfer-size": 3198, "mdn-message-id": "OPENAS2-11072022063009+0000-df865189-1450-435b-9b8d-d8bc0cee97fd@PartnerA_OID_MyCompany_OID", "mdn-subject": "Message be18db8-7361-42ff-8ab6-49ec1e435f34@c9c705f0baaaabaa has been accepted", "as2-to": "PartnerA_OID", "transfer-id": "dedf4601-4e90-4043-b16b-579af35e0d83", "file-path": "/amzn-s3-demo-bucket/as2testcell0000/openAs2/TestOutboundSyncMdn-9lmCr79hV.dat", "as2-message-id": "fbe18db8-7361-42ff-8ab6-49ec1e435f34@c9c705f0baaaabaa", "timestamp": "2022-07-11T06:30:10.791274Z" }
Exemplo de arquivo de saída que foi transferido sem sucesso:
{ "failure-code": "HTTP_ERROR_RESPONSE_FROM_PARTNER", "status-code": "FAILED", "requester-content-type": "application/octet-stream", "subject": "Test run from Id da86e74d6e57464aae1a55b8596bad0a to partner 9f8474d7714e476e8a46ce8c93a48c6c", "transfer-size": 3198, "requester-file-name": "openAs2TestOutboundWrongAs2Ids-necco-3VYn5n8wE.dat", "as2-message-id": "9a9cc9ab-7893-4cb6-992a-5ed8b90775ff@718de4cec1374598", "failure-message": "http://Test123456789.us-east-1.elb.amazonaws.com:10080 returned status 500 for message with ID 9a9cc9ab-7893-4cb6-992a-5ed8b90775ff@718de4cec1374598", "transfer-id": "07bd3e07-a652-4cc6-9412-73ffdb97ab92", "connector-id": "c-056e15cc851f4b2e9", "file-path": "/amzn-s3-demo-bucket-4c1tq6ohjt9y/as2IntegCell0002/openAs2/openAs2TestOutboundWrongAs2Ids-necco-3VYn5n8wE.dat", "timestamp": "2022-07-11T21:17:24.802378Z" }
Exemplo de arquivo de entrada que foi transferido com sucesso:
{ "requester-content-type": "application/EDI-X12", "subject": "File openAs2TestInboundAsyncMdn-necco-5Ab6bTfCO.dat sent from MyCompany to PartnerA", "client-ip": "10.0.109.105", "requester-file-name": "openAs2TestInboundAsyncMdn-necco-5Ab6bTfCO.dat", "as2-from": "MyCompany_OID", "status-code": "COMPLETED", "disposition": "automatic-action/MDN-sent-automatically; processed", "transfer-size": 1050, "mdn-subject": "Message Disposition Notification", "as2-message-id": "OPENAS2-11072022233606+0000-5dab0452-0ca1-4f9b-b622-fba84effff3c@MyCompany_OID_PartnerA_OID", "as2-to": "PartnerA_OID", "agreement-id": "a-f5c5cbea5f7741988", "file-path": "processed/openAs2TestInboundAsyncMdn-necco-5Ab6bTfCO.OPENAS2-11072022233606+0000-5dab0452-0ca1-4f9b-b622-fba84effff3c@MyCompany_OID_PartnerA_OID.dat", "server-id": "s-5f7422b04c2447ef9", "timestamp": "2022-07-11T23:36:36.105030Z" }
Exemplo de arquivo de entrada que foi transferido sem sucesso:
{ "failure-code": "INVALID_REQUEST", "status-code": "FAILED", "subject": "Sending a request from InboundHttpClientTests", "client-ip": "10.0.117.27", "as2-message-id": "testFailedLogs-TestRunConfig-Default-inbound-direct-integ-0c97ee55-af56-4988-b7b4-a3e0576f8f9c@necco", "as2-to": "0beff6af56c548f28b0e78841dce44f9", "failure-message": "Unsupported date format: 2022/123/456T", "agreement-id": "a-0ceec8ca0a3348d6a", "as2-from": "ab91a398aed0422d9dd1362710213880", "file-path": "failed/01187f15-523c-43ac-9fd6-51b5ad2b08f3.testFailedLogs-TestRunConfig-Default-inbound-direct-integ-0c97ee55-af56-4988-b7b4-a3e0576f8f9c@necco", "server-id": "s-0582af12e44540b9b", "timestamp": "2022-07-11T06:30:03.662939Z" }