

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.

# Téléchargement direct vers un magasin HealthOmics de séquences
<a name="synchronous-uploads"></a>

Nous vous recommandons d'utiliser le gestionnaire HealthOmics de transferts pour ajouter des fichiers à votre magasin de séquences. Pour plus d'informations sur l'utilisation de Transfer Manager, consultez ce [ GitHub référentiel](https://github.com/awslabs/amazon-omics-tools/). Vous pouvez également télécharger vos ensembles de lecture directement dans un magasin de séquences via les opérations d'API de téléchargement direct. 

Les ensembles de lecture à téléchargement direct existent en premier dans `PROCESSING_UPLOAD` l'état. Cela signifie que les parties du fichier sont en cours de téléchargement et que vous pouvez accéder aux métadonnées de l'ensemble de lecture. Une fois les parties chargées et les sommes de contrôle validées, le jeu de lecture devient `ACTIVE` et se comporte de la même manière qu'un ensemble de lecture importé. 

Si le téléchargement direct échoue, l'état de l'ensemble de lecture s'affiche comme suit`UPLOAD_FAILED`. Vous pouvez configurer un compartiment Amazon S3 comme emplacement de secours pour les fichiers qui ne peuvent pas être chargés. Des emplacements de secours sont disponibles pour les magasins de séquences créés après le 15 mai 2023.

**Topics**
+ [Téléchargement direct vers un magasin de séquences à l'aide du AWS CLI](#synchronous-uploads-api)
+ [Configurer un emplacement de secours](#synchronous-uploads-fallback)

## Téléchargement direct vers un magasin de séquences à l'aide du AWS CLI
<a name="synchronous-uploads-api"></a>

Pour commencer, lancez un téléchargement en plusieurs parties. Vous pouvez le faire en utilisant le AWS CLI, comme indiqué dans l'exemple suivant.

**Pour télécharger directement à l'aide de AWS CLI commands**

1. Créez les parties en séparant vos données, comme illustré dans l'exemple suivant.

   ```
    split -b 100MiB SRR233106_1.filt.fastq.gz source1_part_ 
   ```

1. Une fois que vos fichiers sources sont divisés en plusieurs parties, créez un téléchargement d'ensemble de lecture en plusieurs parties, comme illustré dans l'exemple suivant. Remplacez `{{sequence store ID}}` et les autres paramètres par votre identifiant de magasin de séquences et d'autres valeurs.

   ```
   aws omics create-multipart-read-set-upload \
   --sequence-store-id {{sequence store ID}} \
   --name {{upload name}} \
   --source-file-type {{FASTQ}} \
   --subject-id {{subject ID}} \
   --sample-id {{sample ID}} \
   --description "FASTQ for HG00146" {{"description of upload"}} \
   --generated-from "1000 Genomes"{{"source of imported files"}}
   ```

   Vous obtenez les métadonnées `uploadID` et d'autres dans la réponse. Utilisez le `uploadID` pour l'étape suivante du processus de téléchargement.

   ```
   {
   "sequenceStoreId": "1504776472",
   "uploadId": "7640892890",
   "sourceFileType": "FASTQ",
   "subjectId": "mySubject",
   "sampleId": "mySample",
   "generatedFrom": "1000 Genomes",
   "name": "HG00146",
   "description": "FASTQ for HG00146",
   "creationTime": "2023-11-20T23:40:47.437522+00:00"
   }
   ```

1. Ajoutez vos sets de lecture au téléchargement. Si votre fichier est suffisamment petit, vous ne devez effectuer cette étape qu'une seule fois. Pour les fichiers plus volumineux, vous devez effectuer cette étape pour chaque partie de votre fichier. Si vous chargez une nouvelle partie en utilisant un numéro de pièce précédemment utilisé, elle remplace la partie précédemment chargée.

   Dans l'exemple suivant, remplacez `{{sequence store ID}}``{{upload ID}}`, et les autres paramètres par vos valeurs.

   ```
   aws omics upload-read-set-part \
   --sequence-store-id {{sequence store ID}} \
   --upload-id {{upload ID}} \
   --part-source {{SOURCE1}} \
   --part-number {{part number}} \
   --payload  source1/source1_part_aa.fastq.gz
   ```

   La réponse est un identifiant que vous pouvez utiliser pour vérifier que le fichier chargé correspond au fichier que vous vouliez.

   ```
   {
   "checksum": "984979b9928ae8d8622286c4a9cd8e99d964a22d59ed0f5722e1733eb280e635"
   }
   ```

1. Continuez à charger les parties de votre fichier, si nécessaire. Pour vérifier que vos sets de lecture ont été chargés, utilisez l'opération d'**API ** list-read-set-upload-parts, comme indiqué ci-dessous. Dans l'exemple suivant, remplacez `{{sequence store ID }}``{{upload ID}}`, et le `{{part source}}` par votre propre saisie.

   ```
   aws omics list-read-set-upload-parts \
    --sequence-store-id {{sequence store ID}} \
    --upload-id {{upload ID}} \
    --part-source {{SOURCE1}}
   ```

   La réponse renvoie le nombre de jeux de lecture, la taille et l'horodatage de la dernière mise à jour.

   ```
   {
   "parts": [
       {
           "partNumber": 1,
           "partSize": 104857600,
           "partSource": "SOURCE1",
           "checksum": "MVMQk+vB9C3Ge8ADHkbKq752n3BCUzyl41qEkqlOD5M=",
           "creationTime": "2023-11-20T23:58:03.500823+00:00",
           "lastUpdatedTime": "2023-11-20T23:58:03.500831+00:00"
       },
       {
           "partNumber": 2,
           "partSize": 104857600,
           "partSource": "SOURCE1",
           "checksum": "keZzVzJNChAqgOdZMvOmjBwrOPM0enPj1UAfs0nvRto=",
           "creationTime": "2023-11-21T00:02:03.813013+00:00",
           "lastUpdatedTime": "2023-11-21T00:02:03.813025+00:00"
       },
       {
           "partNumber": 3,
           "partSize": 100339539,
           "partSource": "SOURCE1",
           "checksum": "TBkNfMsaeDpXzEf3ldlbi0ipFDPaohKHyZ+LF1J4CHk=",
           "creationTime": "2023-11-21T00:09:11.705198+00:00",
           "lastUpdatedTime": "2023-11-21T00:09:11.705208+00:00"
       }
   ]
   }
   ```

1. Pour afficher tous les téléchargements d'ensembles de lecture en plusieurs parties actifs, utilisez ** list-multipart-read-set-uploads, comme indiqué ci-dessous. ** `{{sequence store ID}}`Remplacez-le par l'ID de votre propre magasin de séquences.

   ```
   aws omics list-multipart-read-set-uploads --sequence-store-id 
                {{sequence store ID}}
   ```

   Cette API renvoie uniquement les téléchargements d'ensembles de lecture en plusieurs parties qui sont en cours. Une fois les ensembles de lecture ingérés`ACTIVE`, ou si le téléchargement a échoué, le téléchargement ne sera pas renvoyé dans la réponse à l'API ** ** list-multipart-read-set-uploads. Pour afficher les ensembles de lecture actifs, utilisez l'API ** ** list-read-sets. Un exemple de réponse pour ** ** list-multipart-read-set-uploads est illustré ci-dessous. 

   ```
   {
   "uploads": [
       {
           "sequenceStoreId": "1234567890",
           "uploadId": "8749584421",
           "sourceFileType": "FASTQ",
           "subjectId": "mySubject",
           "sampleId": "mySample",
           "generatedFrom": "1000 Genomes",
           "name": "HG00146",
           "description": "FASTQ for HG00146",
           "creationTime": "2023-11-29T19:22:51.349298+00:00"
       },
       {
           "sequenceStoreId": "1234567890",
           "uploadId": "5290538638",
           "sourceFileType": "BAM",
           "subjectId": "mySubject",
           "sampleId": "mySample",
           "generatedFrom": "1000 Genomes",
           "referenceArn": "arn:aws:omics:us-west-2:123456789012:referenceStore/8168613728/reference/2190697383",
           "name": "HG00146",
           "description": "BAM for HG00146",
           "creationTime": "2023-11-29T19:23:33.116516+00:00"
       },
       {
           "sequenceStoreId": "1234567890",
           "uploadId": "4174220862",
           "sourceFileType": "BAM",
           "subjectId": "mySubject",
           "sampleId": "mySample",
           "generatedFrom": "1000 Genomes",
           "referenceArn": "arn:aws:omics:us-west-2:123456789012:referenceStore/8168613728/reference/2190697383",
           "name": "HG00147",
           "description": "BAM for HG00147",
           "creationTime": "2023-11-29T19:23:47.007866+00:00"
       }
   ]
   }
   ```

1. Après avoir chargé toutes les parties de votre fichier, utilisez ** complete-multipart-read-set-upload ** pour terminer le processus de téléchargement, comme illustré dans l'exemple suivant. Remplacez `{{sequence store ID}}``{{upload ID}}`, et le paramètre des pièces par vos propres valeurs.

   ```
   aws omics complete-multipart-read-set-upload \
   --sequence-store-id {{sequence store ID}} \
   --upload-id {{upload ID}} \
   --parts {{'[{"checksum":"gaCBQMe+rpCFZxLpoP6gydBoXaKKDA/Vobh5zBDb4W4=","partNumber":1,"partSource":"SOURCE1"}]'}}
   ```

   La réponse pour ** complete-multipart-read-set-upload ** correspond aux ID des ensembles de lecture pour vos ensembles de lecture importés. 

   ```
   {
   "readSetId": "0000000001"
   }
   ```

1. Pour arrêter le téléchargement, utilisez ** abort-multipart-read-set-upload ** avec l'ID de téléchargement pour terminer le processus de téléchargement. Remplacez `{{sequence store ID}}` et `{{upload ID}}` par vos propres valeurs de paramètres.

   ```
   aws omics abort-multipart-read-set-upload \
   --sequence-store-id {{sequence store ID}} \
   --upload-id {{upload ID}}
   ```

1. Une fois le téléchargement terminé, récupérez vos données du jeu de lecture à l'aide de la commande ** get-read-set**, comme illustré ci-dessous. Si le téléchargement est toujours en cours, ** get-read-set ** renvoie des métadonnées limitées et les fichiers d'index générés ne sont pas disponibles. Remplacez `{{sequence store ID}}` et les autres paramètres par votre propre entrée.

   ```
   aws omics get-read-set 
    --sequence-store-id {{sequence store ID}} \
    --id {{read set ID}} \
    --file {{SOURCE1}} \
    --part-number 1 {{myfile.fastq.gz}}
   ```

1. Pour vérifier les métadonnées, y compris l'état de votre téléchargement, utilisez l'opération d'API ** ** get-read-set-metadata.

   ```
   aws omics get-read-set-metadata --sequence-store-id {{sequence store ID}} --id {{read set ID}}    
   ```

   La réponse inclut des détails de métadonnées tels que le type de fichier, l'ARN de référence, le nombre de fichiers et la longueur des séquences. Il inclut également le statut. Les statuts possibles sont `PROCESSING_UPLOAD``ACTIVE`, et. `UPLOAD_FAILED`

   ```
   {
   "id": "0000000001",
   "arn": "arn:aws:omics:us-west-2:555555555555:sequenceStore/0123456789/readSet/0000000001",
   "sequenceStoreId": "0123456789",
   "subjectId": "mySubject",
   "sampleId": "mySample",
   "status": "PROCESSING_UPLOAD",
   "name": "HG00146",
   "description": "FASTQ for HG00146",
   "fileType": "FASTQ",
   "creationTime": "2022-07-13T23:25:20Z",
   "files": {
       "source1": {
           "totalParts": 5,
           "partSize": 123456789012,
           "contentLength": 6836725,
   
       },
       "source2": {
           "totalParts": 5,
           "partSize": 123456789056,
           "contentLength": 6836726
       }
   },
   'creationType": "UPLOAD"
   }
   ```

## Configurer un emplacement de secours
<a name="synchronous-uploads-fallback"></a>

Lorsque vous créez ou mettez à jour un magasin de séquences, vous pouvez configurer un compartiment Amazon S3 comme emplacement de secours pour les fichiers qui ne peuvent pas être chargés. Les parties de fichier de ces ensembles de lecture sont transférées vers l'emplacement de secours. Des emplacements de secours sont disponibles pour les magasins de séquences créés après le 15 mai 2023. 

Créez une politique de compartiment Amazon S3 pour accorder un accès en HealthOmics écriture à l'emplacement de secours Amazon S3, comme illustré dans l'exemple suivant :

```
{
    "Effect": "Allow",
    "Principal": {
        "Service": "omics.amazonaws.com"
    },
    "Action": "s3:PutObject",
    "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*"
}
```

Si le compartiment Amazon S3 pour les journaux de secours ou d'accès utilise une clé gérée par le client, ajoutez les autorisations suivantes à la politique de clé :

```
 {
    "Sid": "Allow use of key",
    "Effect": "Allow",
    "Principal": {
        "Service": "omics.amazonaws.com"
    },
    "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey*"
    ],
    "Resource": "*"
}
```