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 AS2 mensagens
Esta seção descreve os processos de envio e recebimento de AS2 mensagens. Ele também fornece detalhes sobre nomes de arquivos e locais associados AS2 às mensagens.
A tabela a seguir lista os algoritmos de criptografia disponíveis para AS2 mensagens 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_ _CBC EDE3 | 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 AS2 mensagens
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 AS2 arquivos no AS2 servidor remoto do parceiro.
-
O AS2 servidor remoto do parceiro assina e criptografa o conteúdo do arquivo e, em seguida, envia uma solicitação HTTP POST para um endpoint de AS2 entrada hospedado no Transfer Family.
-
Usando os valores configurados para o servidor, parceiros, certificados e contrato, o Transfer Family descriptografa e verifica a carga útil. 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 AS2 mensagens por HTTPS
Esta seção descreve como configurar um servidor Transfer Family que usa o AS2 protocolo para enviar e receber mensagens por HTTPS.
Envie AS2 mensagens por HTTPS
Para enviar AS2 mensagens 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 AS2 conectores.
Receba AS2 mensagens por HTTPS
AWS Transfer Family AS2 atualmente, os servidores 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 AS2 mensagens 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 é descrito em X-Forwarded-Proto no site developer.mozilla.org |
| Terminação TLS/SSL | Suporta TLS/SSL rescisão | Suporta TLS/SSL rescisão |
| TLS mútuo (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 IP address type (Tipo de endereço IP), escolha IPv4.
-
Para VPC, escolha a VPC que você criou para seu 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 AS2 servidor Transfer Family foi especificada.
-
Para IPv4 endereço, insira o IPv4 endereço privado dos endpoints do seu AS2 servidor Transfer Family.
Se você tiver mais de um endpoint para seu servidor, escolha Adicionar IPv4 endereço para adicionar outra linha para inserir outro IPv4 endereço. 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 (rede ACLs) das 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
AS2 os conectores estabelecem um relacionamento entre parceiros comerciais para transferências de AS2 mensagens de um servidor Transfer Family para um destino externo de propriedade do parceiro.
Você pode usar o Transfer Family para enviar AS2 mensagens fazendo referência ao ID do conector e aos 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 list-connectors comando retorna o conector e IDs URLs os Amazon Resource Names (ARNs) para 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 describe-connector comando 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 o status das AS2 mensagens em seus CloudWatch registros.
Para ver os detalhes do AS2 conector, consulteExibir detalhes AS2 do conector. Para obter mais informações sobre a criação de AS2 conectores, consulteConfigurar AS2 conectores.
Para enviar uma mensagem AS2 de saída
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 ao AS2 servidor do parceiro.
-
O processo retorna a resposta MDN assinada, em linha com a resposta HTTP (MDN sí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 AS2 servidor remoto disponibiliza o arquivo descriptografado e verificado para o administrador parceiro.
AS2 o processamento suporta muitos dos protocolos RFC 4130, com foco em casos de uso comuns e integração com implementações de servidores AS2 habilitados existentes. Para obter detalhes sobre as configurações suportadas, consulte AS2 configurações.
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 CloudWatch nos registros quando você ou seu parceiro enviam uma AS2 mensagem. 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 |
| COM FALHA | O processamento da mensagem falhou. Para obter uma lista de códigos de erro, consulteAS2 códigos de erro. | 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" }