Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Envoyer et recevoir des messages AS2
Cette section décrit les processus d'envoi et de réception de messages AS2. Il fournit également des détails sur les noms de fichiers et les emplacements associés aux messages AS2.
Le tableau suivant répertorie les algorithmes de chiffrement disponibles pour les messages AS2 et indique dans quels cas vous pouvez les utiliser.
Algorithme de chiffrement | HTTP | HTTPS | Remarques |
---|---|---|---|
AES128_CBC | Oui | Oui | |
AES192_CBC | Oui | Oui | |
AES256_CBC | Oui | Oui | |
DES_EDE3_CBC | Oui | Oui | N'utilisez cet algorithme que si vous devez prendre en charge un ancien client qui en a besoin, car il s'agit d'un algorithme de chiffrement faible. |
NONE | Non | Oui | Si vous envoyez des messages à un serveur Transfer Family, vous ne pouvez sélectionner que NONE si vous utilisez un Application Load Balancer (ALB). |
Rubriques
Processus d'envoi de message AS2
Le processus sortant est défini comme un message ou un fichier envoyé depuis AWS un client ou un service externe. La séquence des messages sortants est la suivante :
-
Un administrateur appelle la commande
start-file-transfer
AWS Command Line Interface (AWS CLI) ou l'opérationStartFileTransfer
API. Cette opération fait référence à uneconnector
configuration. -
Transfer Family détecte une nouvelle demande de fichier et localise le fichier. Le fichier est compressé, signé et chiffré.
-
Un client HTTP de transfert exécute une requête HTTP POST pour transmettre la charge utile au serveur AS2 du partenaire.
-
Le processus renvoie la réponse MDN signée, en ligne avec la réponse HTTP (MDN synchrone).
-
Au fur et à mesure que le fichier passe d'une étape de transmission à l'autre, le processus fournit au client la réception de la réponse MDN et les détails du traitement.
-
Le serveur AS2 distant met le fichier déchiffré et vérifié à la disposition de l'administrateur partenaire.
Le traitement AS2 prend en charge de nombreux protocoles RFC 4130, en mettant l'accent sur les cas d'utilisation courants et sur l'intégration avec les implémentations de serveurs compatibles AS2 existantes. Pour plus de détails sur les configurations prises en charge, consultez.
Processus de réception des messages AS2
Le processus entrant est défini comme un message ou un fichier transféré vers votre AWS Transfer Family serveur. La séquence des messages entrants est la suivante :
Un processus administratif ou automatisé lance un transfert de fichiers AS2 sur le serveur AS2 distant du partenaire.
Le serveur AS2 distant du partenaire signe et chiffre le contenu du fichier, puis envoie une requête HTTP POST à un point de terminaison entrant AS2 hébergé sur Transfer Family.
-
À l'aide des valeurs configurées pour le serveur, les partenaires, les certificats et le contrat, Transfer Family déchiffre et vérifie la charge utile AS2. Le contenu du fichier est stocké dans le magasin de fichiers Amazon S3 configuré.
-
La réponse MDN signée est renvoyée soit en ligne avec la réponse HTTP, soit de manière asynchrone via une requête HTTP POST distincte au serveur d'origine.
Une piste d'audit contenant les détails de l'échange est écrite pour Amazon CloudWatch .
Le fichier déchiffré est disponible dans un dossier nommé.
inbox/processed
Envoi et réception de messages AS2 via HTTPS
Cette section décrit comment configurer un serveur Transfer Family qui utilise le protocole AS2 pour envoyer et recevoir des messages via HTTPS.
Envoyer des messages AS2 via HTTPS
Pour envoyer des messages AS2 via HTTPS, créez un connecteur contenant les informations suivantes :
-
Pour l'URL, spécifiez une URL HTTPS
Pour l'algorithme de chiffrement, sélectionnez l'un des algorithmes disponibles.
Note
Pour envoyer des messages à un serveur Transfer Family sans utiliser le chiffrement (c'est-à-dire si vous sélectionnez l'algorithme
NONE
de chiffrement), vous devez utiliser un Application Load Balancer (ALB).-
Fournissez les valeurs restantes pour le connecteur, comme décrit dansConfiguration des connecteurs AS2.
Recevoir des messages AS2 via HTTPS
AWS Transfer Family Les serveurs AS2 ne fournissent actuellement que le transport HTTP via le port 5080. Cependant, vous pouvez mettre fin au protocole TLS sur un réseau ou un équilibreur de charge d'application situé devant le point de terminaison VPC de votre serveur Transfer Family en utilisant un port et un certificat de votre choix. Avec cette approche, vous pouvez faire en sorte que les messages AS2 entrants utilisent le protocole HTTPS.
Prérequis
-
Le VPC doit se trouver dans le même emplacement Région AWS que votre serveur Transfer Family.
-
Les sous-réseaux de votre VPC doivent se trouver dans les zones de disponibilité dans lesquelles vous souhaitez utiliser votre serveur.
Note
Chaque serveur Transfer Family peut prendre en charge jusqu'à trois zones de disponibilité.
-
Allouez jusqu'à trois adresses IP élastiques dans la même région que votre serveur. Vous pouvez également choisir d'apporter votre propre plage d'adresses IP (BYOIP).
Note
Le nombre d'adresses IP élastiques doit correspondre au nombre de zones de disponibilité que vous utilisez avec les points de terminaison de votre serveur.
Vous pouvez configurer un Network Load Balance (NLB) ou un Application Load Balancer (ALB). Le tableau suivant répertorie les avantages et les inconvénients de chaque approche.
Le tableau ci-dessous indique les différences entre les fonctionnalités lorsque vous utilisez un NLB par rapport à un ALB pour mettre fin au protocole TLS.
Fonctionnalité | Network Load Balancer (NLB) | Application Load Balancer (ALB) |
---|---|---|
Latence | Temps de latence réduit car il fonctionne au niveau de la couche réseau. | Latence plus élevée car il fonctionne au niveau de la couche application. |
Prise en charge des adresses IP statiques | Peut associer des adresses IP élastiques qui peuvent être statiques. | Impossible d'associer des adresses IP élastiques : fournit un domaine dont les adresses IP sous-jacentes peuvent changer. |
Routage avancé | Ne prend pas en charge le routage avancé. | Supporte le routage avancé. Peut injecter Cet en-tête est décrit dans X-Forwarded-Proto |
Terminaison TLS/SSL | Supporte la terminaison TLS/SSL | Supporte la terminaison TLS/SSL |
TLS mutuel (mTLS) | Transfer Family ne prend actuellement pas en charge l'utilisation d'un NLB pour les MTL | Support pour les MTL |
Après avoir configuré l'équilibreur de charge, les clients communiquent avec l'équilibreur de charge via l'écouteur de port personnalisé. L'équilibreur de charge communique ensuite avec le serveur via le port 5080.
Pour créer un groupe cible
-
Après avoir choisi Créer un groupe cible dans la procédure précédente, vous êtes redirigé vers la page Spécifier les détails du groupe pour un nouveau groupe cible.
-
Dans la section Configuration de base, entrez les informations suivantes.
-
Pour Choisir un type de cible, choisissez les adresses IP.
-
Pour Nom du groupe cible, saisissez un nom pour le groupe cible.
-
Pour le protocole, votre sélection dépend de l'utilisation d'un ALB ou d'un NLB.
-
Pour un Network Load Balancer (NLB), choisissez TCP
-
Pour un Application Load Balancer (ALB), choisissez HTTP
-
-
Pour Port, entrez
5080
. -
Pour le type d'adresse IP, choisissez IPv4.
-
Pour VPC, choisissez le VPC que vous avez créé pour votre serveur Transfer Family AS2.
-
-
Dans la section Health checks, choisissez TCP pour le protocole Health check.
-
Choisissez Suivant.
-
Sur la page Enregistrer les cibles, entrez les informations suivantes :
-
Pour Network, vérifiez que le VPC que vous avez créé pour votre serveur Transfer Family AS2 est spécifié.
-
Pour l'adresse IPv4, entrez l'adresse IPv4 privée des points de terminaison de votre serveur Transfer Family AS2.
Si vous avez plusieurs points de terminaison pour votre serveur, choisissez Ajouter une adresse IPv4 pour ajouter une autre ligne permettant de saisir une autre adresse IPv4. Répétez ce processus jusqu'à ce que vous ayez saisi les adresses IP privées de tous les points de terminaison de votre serveur.
-
Assurez-vous que Ports est réglé sur
5080
. -
Choisissez Inclure comme en attente ci-dessous pour ajouter vos entrées à la section Objectifs de révision.
-
-
Dans la section Examiner les cibles, passez en revue vos cibles IP.
-
Choisissez Créer un groupe cible, puis revenez à la procédure précédente de création de votre NLB et entrez le nouveau groupe cible à l'endroit indiqué.
Tester l'accès au serveur à partir d'une adresse IP élastique
Connectez-vous au serveur via le port personnalisé à l'aide d'une adresse IP élastique ou du nom DNS du Network Load Balancer.
Important
Gérez l'accès à votre serveur à partir des adresses IP des clients en utilisant les listes de contrôle d'accès réseau (ACL réseau) pour les sous-réseaux configurés sur l'équilibreur de charge. Les autorisations ACL réseau sont définies au niveau du sous-réseau, de sorte que les règles s'appliquent à toutes les ressources qui utilisent le sous-réseau. Vous ne pouvez pas contrôler l'accès depuis les adresses IP des clients à l'aide de groupes de sécurité, car le type de cible de l'équilibreur de charge est défini sur les adresses IP plutôt que sur les instances. Par conséquent, l'équilibreur de charge ne conserve pas les adresses IP sources. Si les vérifications de santé du Network Load Balancer échouent, cela signifie que l'équilibreur de charge ne peut pas se connecter au point de terminaison du serveur. Pour résoudre ce problème, vérifiez les points suivants :
-
Vérifiez que le groupe de sécurité associé au point de terminaison
du serveur autorise les connexions entrantes provenant des sous-réseaux configurés sur l'équilibreur de charge. L'équilibreur de charge doit pouvoir se connecter au point de terminaison du serveur via le port 5080. -
Vérifiez que l'état du serveur est en ligne.
Transfert de fichiers à l'aide d'un connecteur AS2
Les connecteurs AS2 établissent une relation entre les partenaires commerciaux pour les transferts de messages AS2 d'un serveur Transfer Family vers une destination externe appartenant au partenaire.
Vous pouvez utiliser Transfer Family pour envoyer des messages AS2 en faisant référence à l'ID du connecteur et aux chemins d'accès aux fichiers, comme illustré dans la commande suivante start-file-transfer
AWS Command Line Interface (AWS CLI) :
aws transfer start-file-transfer --connector-id c-
1234567890abcdef0
\ --send-file-paths "/DOC-EXAMPLE-SOURCE-BUCKET/myfile1.txt
" "/DOC-EXAMPLE-SOURCE-BUCKET/myfile2.txt
"
Pour obtenir les détails de vos connecteurs, exécutez la commande suivante :
aws transfer list-connectors
La list-connectors
commande renvoie les ID de connecteur, les URL et les noms de ressources Amazon (ARN) de vos connecteurs.
Pour renvoyer les propriétés d'un connecteur spécifique, exécutez la commande suivante avec l'ID que vous souhaitez utiliser :
aws transfer describe-connector --connector-id
your-connector-id
La describe-connector
commande renvoie toutes les propriétés du connecteur, notamment son URL, ses rôles, ses profils, ses notifications de disposition des messages (mDNS), ses balises et ses mesures de surveillance.
Vous pouvez vérifier que le partenaire a bien reçu les fichiers en consultant les fichiers JSON et MDN. Ces fichiers sont nommés conformément aux conventions décrites dansNoms et emplacements des fichiers. Si vous avez configuré un rôle de journalisation lors de la création du connecteur, vous pouvez également vérifier l'état des messages AS2 dans vos CloudWatch journaux.
Pour consulter les détails du connecteur AS2, reportez-vous Afficher les détails du connecteur AS2 à. Pour plus d'informations sur la création de connecteurs AS2, consultezConfiguration des connecteurs AS2.
Noms et emplacements des fichiers
Cette section décrit les conventions de dénomination des fichiers pour les transferts AS2.
Pour les transferts de fichiers entrants, tenez compte des points suivants :
-
Vous spécifiez le répertoire de base dans un accord. Le répertoire de base est le nom du compartiment Amazon S3 associé à un préfixe, le cas échéant. Par exemple,
/
.DOC-EXAMPLE-BUCKET
/AS2-folder -
Si un fichier entrant est traité avec succès, le fichier (et le fichier JSON correspondant) est enregistré
/processed
dans le dossier. Par exemple,/
.DOC-EXAMPLE-BUCKET
/AS2-folder/processedLe fichier JSON contient les champs suivants :
-
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
-
-
Si un fichier entrant ne peut pas être traité correctement, le fichier (et le fichier JSON correspondant) est enregistré
/failed
dans le dossier. Par exemple,/DOC-EXAMPLE-BUCKET/AS2-folder/failed
. -
Le fichier transféré est stocké dans le
processed
dossier sous le nom
. C'est-à-dire que l'ID du message pour le transfert est ajouté au nom du fichier, avant son extension d'origine.original_filename
.messageId
.original_extension
-
Un fichier JSON est créé et enregistré sous le nom
. Outre l'ID du message ajouté, la chaîneoriginal_filename
.messageId
.original_extension
.json.json
est ajoutée au nom du fichier transféré. -
Un fichier MDN (Message Disposition Notice) est créé et enregistré sous
le nom de. Outre l'ID du message ajouté, la chaîneoriginal_filename
.messageId
.original_extension
.mdn.mdn
est ajoutée au nom du fichier transféré. -
Si un fichier entrant est nommé
ExampleFileInS3Payload.dat
, les fichiers suivants sont créés :-
Fichier —
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
-
Pour les transferts sortants, le nom est similaire, à la différence qu'il n'y a pas de fichier de message entrant et que l'ID de transfert du message transféré est également ajouté au nom du fichier. L'ID de transfert est renvoyé par l'opération StartFileTransfer
API (ou lorsqu'un autre processus ou script appelle cette opération).
-
transfer-id
Il s'agit d'un identifiant associé à un transfert de fichier. Toutes les demandes faisant partie d'unStartFileTransfer
appel partagent untransfer-id
. -
Le répertoire de base est le même que le chemin que vous utilisez pour le fichier source. En d'autres termes, le répertoire de base est le chemin que vous spécifiez dans l'opération ou la
start-file-transfer
AWS CLI commande de l'StartFileTransfer
API. Par exemple :aws transfer start-file-transfer --send-file-paths
/DOC-EXAMPLE-BUCKET/AS2-folder/file-to-send.txt
Si vous exécutez cette commande, les fichiers MDN et JSON sont enregistrés dans
/DOC-EXAMPLE-BUCKET/AS2-folder/processed
(pour les transferts réussis) ou/DOC-EXAMPLE-BUCKET/AS2-folder/failed
(pour les transferts infructueux). -
Un fichier JSON est créé et enregistré sous le nom
.original_filename
.transferId
.messageId
.original_extension
.json -
Un fichier MDN est créé et enregistré sous
.original_filename
.transferId
.messageId
.original_extension
.mdn -
Si un fichier sortant est nommé
ExampleFileOutTestOutboundSyncMdn.dat
, les fichiers suivants sont créés :-
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
-
Vous pouvez également consulter les CloudWatch journaux pour consulter les détails de vos transferts, y compris ceux qui ont échoué.
Codes d’état
Le tableau suivant répertorie tous les codes d'état qui peuvent être enregistrés dans les CloudWatch journaux lorsque vous ou votre partenaire envoyez un message AS2. Les différentes étapes de traitement des messages s'appliquent à différents types de messages et sont destinées uniquement à la surveillance. Les états COMPLETED et FAILED représentent l'étape finale du traitement et sont visibles dans les fichiers JSON.
Code | Description | Le traitement est terminé ? |
---|---|---|
EN TRAITEMENT | Le message est en cours de conversion dans son format final. Par exemple, les étapes de décompression et de déchiffrement ont toutes deux ce statut. | Non |
MDN_TRANSMIT | Le traitement des messages envoie une réponse MDN. | Non |
MDN_RECEIVE | Le traitement des messages reçoit une réponse MDN. | Non |
TERMINÉ | Le traitement des messages s'est terminé avec succès. Cet état inclut l'envoi d'un MDN pour un message entrant ou pour la vérification MDN des messages sortants. | Oui |
ÉCHEC | Le traitement du message a échoué. Pour obtenir la liste des codes d'erreur, consultezCodes d'erreur AS2. | Oui |
Exemples de fichiers JSON
Cette section répertorie des exemples de fichiers JSON pour les transferts entrants et sortants, y compris des exemples de fichiers pour les transferts réussis et les transferts qui échouent.
Exemple de fichier sortant transféré avec succès :
{ "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": "/DOC-EXAMPLE-BUCKET/as2testcell0000/openAs2/TestOutboundSyncMdn-9lmCr79hV.dat", "as2-message-id": "fbe18db8-7361-42ff-8ab6-49ec1e435f34@c9c705f0baaaabaa", "timestamp": "2022-07-11T06:30:10.791274Z" }
Exemple de fichier sortant transféré sans succès :
{ "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": "/DOC-EXAMPLE-BUCKET-4c1tq6ohjt9y/as2IntegCell0002/openAs2/openAs2TestOutboundWrongAs2Ids-necco-3VYn5n8wE.dat", "timestamp": "2022-07-11T21:17:24.802378Z" }
Exemple de fichier entrant transféré avec succès :
{ "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" }
Exemple de fichier entrant transféré sans succès :
{ "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" }