

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 直接上傳至 HealthOmics 序列存放區
<a name="synchronous-uploads"></a>

我們建議您使用 HealthOmics Transfer Manager 將檔案新增至序列存放區。如需使用 Transfer Manager 的詳細資訊，請參閱此 [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-parts** 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. 若要檢視所有作用中的分段讀取集上傳，請使用 **list-multipart-read-set-uploads，**如下所示。`sequence store ID` 將 取代為您自己的序列存放區的 ID。

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

   此 API 只會傳回進行中的分段讀取集上傳。在擷取的讀取集為 之後`ACTIVE`，或者如果上傳失敗，則在對 **list-multipart-read-set-uploads** API 的回應中將不會傳回上傳。若要檢視作用中的讀取集，請使用 **list-read-sets** API。**list-multipart-read-set-uploads** 的範例回應如下所示。

   ```
   {
   "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**complete-multipart-read-set-upload** 的回應是匯入讀取集IDs。

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

1. 若要停止上傳，請使用 **abort-multipart-read-set-upload** 搭配上傳 ID 來結束上傳程序。`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 儲存貯體政策，以授予 HealthOmics 對 Amazon S3 備用位置的寫入存取權，如下列範例所示：

```
{
    "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": "*"
}
```