

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 直接上传到 HealthOmics 序列存储
<a name="synchronous-uploads"></a>

我们建议您使用 HealthOmics 传输管理器将文件添加到序列存储中。有关使用传输管理器的更多信息，请参阅此[GitHub存储库](https://github.com/awslabs/amazon-omics-tools/)。您也可以通过直接上传 API 操作将读取集直接上传到序列存储。

直接上传读取集首先处于`PROCESSING_UPLOAD`状态。这意味着文件段当前正在上传，您可以访问读取集元数据。上传分段并验证校验和后，读取集将变为`ACTIVE`和行为与导入的读取集相同。

如果直接上传失败，则读取集状态将显示为`UPLOAD_FAILED`。您可以将 Amazon S3 存储桶配置为上传失败的文件的备用位置。备用位置可用于 2023 年 5 月 15 日之后创建的序列存储。

**Topics**
+ [使用直接上传到序列存储库 AWS CLI](#synchronous-uploads-api)
+ [配置备用位置](#synchronous-uploads-fallback)

## 使用直接上传到序列存储库 AWS CLI
<a name="synchronous-uploads-api"></a>

首先，开始分段上传。您可以使用来执行此操作 AWS CLI，如以下示例所示。

**使用 AWS CLI 命令直接上传**

1. 通过分隔数据来创建各个部分，如以下示例所示。

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

1. 将源文件分段后，创建分段读取集上传，如以下示例所示。将和其他参数替换`sequence store ID`为您的序列存储 ID 和其他值。

   ```
   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"
   ```

   你会在响应中获得`uploadID`和其他元数据。使用`uploadID`进行上传过程的下一步操作。

   ```
   {
   "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. 将您的阅读集添加到上传内容中。如果您的文件足够小，则只需执行一次此步骤即可。对于较大的文件，您可以对文件的每个部分执行此步骤。如果您使用之前使用的分段号上传新分段，则它会覆盖之前上传的分段。

   在以下示例中，将`sequence store ID``upload ID`、和其他参数替换为您的值。

   ```
   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
   ```

   响应是一个 ID，您可以使用它来验证上传的文件是否与您想要的文件匹配。

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

1. 如有必要，请继续上传文件的各个部分。要验证您的读取集是否已上传，请使用 **list-read-set-upload-par** ts API 操作，如下所示。在以下示例中，将`sequence store ID `、和`upload ID`，替换为`part source`您自己的输入。

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

   响应返回读取集的数量、大小和最近更新时间的时间戳。

   ```
   {
   "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. 要查看所有活跃的分段读取集上传，请使用 up **list-multipart-read-setloads，**如下所示。`sequence store ID`替换为您自己的序列存储的 ID。

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

   此 API 仅返回正在进行的分段读取集上传。在提取的读取集之后`ACTIVE`，或者如果上传失败，则不会在对 uploads API 的响应中返回上**list-multipart-read-set传**。要查看活跃的读取集，请使用 **list-read-sets**API。**list-multipart-read-set上传**的响应示例如下所示。

   ```
   {
   "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. 上传文件的所有部分后，使用 **complete-multipart-read-set-** upload 结束上传过程，如以下示例所示。用您自己的值替换`sequence store ID`零件的`upload ID`、和参数。

   ```
   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"}]'
   ```

   **complete-multipart-read-set-uploa** d 的响应是您导入的读 IDs 取集的读取集。

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

1. 要停止上传，请使用带有**abort-multipart-read-set上传 ID 的-** upload 来结束上传过程。`upload ID`用您自己的参数值替换`sequence store ID`和。

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

1. 上传完成后，使用从读取集中检索数据 **get-read-set**，如下所示。如果上传仍在处理中，则**get-read-set**返回有限的元数据，并且生成的索引文件不可用。`sequence store ID`用您自己的输入替换和其他参数。

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

1. 要检查元数据，包括上传状态，请使用 **get-read-set-metadata**API 操作。

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

   响应包含元数据详细信息，例如文件类型、引用 ARN、文件数量和序列长度。它还包括状态。可能的状态是`PROCESSING_UPLOAD``ACTIVE`、和。`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"
   }
   ```

## 配置备用位置
<a name="synchronous-uploads-fallback"></a>

创建或更新序列存储时，您可以将 Amazon S3 存储桶配置为上传失败的文件的备用位置。这些读取集的文件部分被传输到备用位置。备用位置可用于 2023 年 5 月 15 日之后创建的序列存储。

创建 Amazon S3 存储桶策略以授予对 Amazon S3 备用位置的 HealthOmics 写入权限，如以下示例所示：

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

如果用于备用或访问日志的 Amazon S3 存储桶使用客户托管密钥，请向密钥策略添加以下权限：

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