AWS HealthOmics toko varian dan perubahan ketersediaan toko anotasi - AWS HealthOmics

AWS HealthOmics toko varian dan toko anotasi tidak akan lagi dibuka untuk pelanggan baru mulai 7 November 2025. Jika Anda ingin menggunakan toko varian atau toko anotasi, daftar sebelum tanggal tersebut. Pelanggan yang sudah ada dapat terus menggunakan layanan seperti biasa. Untuk informasi selengkapnya, lihat perubahan ketersediaan toko AWS HealthOmics varian dan anotasi toko.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

AWS HealthOmics toko varian dan perubahan ketersediaan toko anotasi

Setelah mempertimbangkan dengan cermat, kami memutuskan untuk menutup toko AWS HealthOmics varian dan toko anotasi kepada pelanggan baru mulai 7 November 2025. Jika Anda ingin menggunakan toko varian dan toko anotasi, daftar sebelum tanggal tersebut. Pelanggan yang sudah ada dapat terus menggunakan layanan seperti biasa.

Bagian berikut menjelaskan opsi migrasi untuk membantu Anda memindahkan toko varian dan toko analitik ke solusi baru. Untuk pertanyaan atau masalah apa pun, buat kasus dukungan di support.console.aws.amazon.com.

Ikhtisar opsi migrasi

Opsi migrasi berikut memberikan alternatif untuk menggunakan toko varian dan toko anotasi:

  1. Gunakan implementasi referensi HealthOmics yang disediakan dari logika ETL.

    Gunakan bucket tabel S3 untuk penyimpanan dan terus gunakan layanan AWS analitik yang ada.

  2. Buat solusi menggunakan kombinasi AWS layanan yang ada.

    Untuk ETL, Anda dapat menulis pekerjaan Glue ETL khusus, atau menggunakan kode HAIL atau GLOW sumber terbuka di EMR, untuk mengubah data varian.

    Gunakan bucket tabel S3 untuk penyimpanan dan terus gunakan layanan analitik yang ada AWS

  3. Pilih AWS mitra yang menawarkan alternatif toko varian dan anotasi.

Opsi migrasi untuk logika ETL

Pertimbangkan opsi migrasi berikut untuk logika ETL:

  1. HealthOmics menyediakan logika ETL penyimpanan varian saat ini sebagai HealthOmics alur kerja referensi. Anda dapat menggunakan mesin alur kerja ini untuk memberi daya pada proses ETL data varian yang persis sama dengan penyimpanan varian, tetapi dengan kontrol penuh atas logika ETL.

    Alur kerja referensi ini tersedia berdasarkan permintaan. Untuk meminta akses, buat kasus dukungan di support.console.aws.amazon.com.

  2. Untuk mengubah data varian, Anda dapat menulis pekerjaan ETL Glue kustom, atau menggunakan kode HAIL atau GLOW sumber terbuka di EMR.

Opsi migrasi untuk penyimpanan

Sebagai pengganti penyimpanan data yang dihosting layanan, Anda dapat menggunakan bucket tabel Amazon S3 untuk menentukan skema tabel kustom.Untuk informasi selengkapnya tentang bucket tabel, lihat Bucket tabel di Panduan Pengguna Amazon S3.

Anda dapat menggunakan bucket tabel untuk tabel Iceberg yang dikelola sepenuhnya di Amazon S3.

Anda dapat memunculkan kasus dukungan untuk meminta HealthOmics tim memigrasikan data dari varian atau penyimpanan anotasi ke bucket tabel Amazon S3 yang dikonfigurasi.

Setelah data diisi di keranjang tabel Amazon S3, Anda dapat menghapus toko varian dan toko anotasi. Untuk informasi selengkapnya, lihat Menghapus toko HealthOmics analitik.

Analitik

Untuk analitik data, terus gunakan layanan AWS analitik, seperti Amazon Athena, Amazon EMR, Amazon Redshift, atau Amazon Quick Suite.

AWS Mitra

Anda dapat bekerja dengan AWS mitra yang menyediakan ETL yang dapat disesuaikan, skema tabel, alat kueri dan analisis bawaan, dan antarmuka pengguna untuk berinteraksi dengan data.

Contoh

Contoh berikut menunjukkan cara membuat tabel yang cocok untuk menyimpan data VCF dan GVCF.

Athena DDL

Anda dapat menggunakan contoh DDL berikut di Athena untuk membuat tabel yang cocok untuk menyimpan data VCF dan GVCF dalam satu tabel. Contoh ini tidak sama persis dengan struktur penyimpanan varian, tetapi berfungsi dengan baik untuk kasus penggunaan umum.

Buat nilai Anda sendiri untuk DATABASE_NAME dan TABLE_NAME saat Anda membuat tabel.

CREATE TABLE <DATABASE_NAME>. <TABLE_NAME> ( sample_name string, variant_name string COMMENT 'The ID field in VCF files, '.' indicates no name', chrom string, pos bigint, ref string, alt array <string>, qual double, filter string, genotype string, info map <string, string>, attributes map <string, string>, is_reference_block boolean COMMENT 'Used in GVCF for non-variant sites') PARTITIONED BY (bucket(128, sample_name), chrom) LOCATION '{URL}/' TBLPROPERTIES ( 'table_type'='iceberg', 'write_compression'='zstd' );

Buat tabel menggunakan Python (tanpa Athena)

Contoh kode Python berikut menunjukkan cara membuat tabel tanpa menggunakan Athena.

import boto3 from pyiceberg.catalog import Catalog, load_catalog from pyiceberg.schema import Schema from pyiceberg.table import Table from pyiceberg.table.sorting import SortOrder, SortField, SortDirection, NullOrder from pyiceberg.partitioning import PartitionSpec, PartitionField from pyiceberg.transforms import IdentityTransform, BucketTransform from pyiceberg.types import ( NestedField, StringType, LongType, DoubleType, MapType, BooleanType, ListType ) def load_s3_tables_catalog(bucket_arn: str) -> Catalog: session = boto3.session.Session() region = session.region_name or 'us-east-1' catalog_config = { "type": "rest", "warehouse": bucket_arn, "uri": f"https://s3tables.{region}.amazonaws.com/iceberg", "rest.sigv4-enabled": "true", "rest.signing-name": "s3tables", "rest.signing-region": region } return load_catalog("s3tables", **catalog_config) def create_namespace(catalog: Catalog, namespace: str) -> None: try: catalog.create_namespace(namespace) print(f"Created namespace: {namespace}") except Exception as e: if "already exists" in str(e): print(f"Namespace {namespace} already exists.") else: raise e def create_table(catalog: Catalog, namespace: str, table_name: str, schema: Schema, partition_spec: PartitionSpec = None, sort_order: SortOrder = None) -> Table: if catalog.table_exists(f"{namespace}.{table_name}"): print(f"Table {namespace}.{table_name} already exists.") return catalog.load_table(f"{namespace}.{table_name}") create_table_args = { "identifier": f"{namespace}.{table_name}", "schema": schema, "properties": {"format-version": "2"} } if partition_spec is not None: create_table_args["partition_spec"] = partition_spec if sort_order is not None: create_table_args["sort_order"] = sort_order table = catalog.create_table(**create_table_args) print(f"Created table: {namespace}.{table_name}") return table def main(bucket_arn: str, namespace: str, table_name: str): # Schema definition genomic_variants_schema = Schema( NestedField(1, "sample_name", StringType(), required=True), NestedField(2, "variant_name", StringType(), required=True), NestedField(3, "chrom", StringType(), required=True), NestedField(4, "pos", LongType(), required=True), NestedField(5, "ref", StringType(), required=True), NestedField(6, "alt", ListType(element_id=1000, element_type=StringType(), element_required=True), required=True), NestedField(7, "qual", DoubleType()), NestedField(8, "filter", StringType()), NestedField(9, "genotype", StringType()), NestedField(10, "info", MapType(key_type=StringType(), key_id=1001, value_type=StringType(), value_id=1002)), NestedField(11, "attributes", MapType(key_type=StringType(), key_id=2001, value_type=StringType(), value_id=2002)), NestedField(12, "is_reference_block", BooleanType()), identifier_field_ids=[1, 2, 3, 4] ) # Partition and sort specifications partition_spec = PartitionSpec( PartitionField(source_id=1, field_id=1001, transform=BucketTransform(128), name="sample_bucket"), PartitionField(source_id=3, field_id=1002, transform=IdentityTransform(), name="chrom") ) sort_order = SortOrder( SortField(source_id=3, transform=IdentityTransform(), direction=SortDirection.ASC, null_order=NullOrder.NULLS_LAST), SortField(source_id=4, transform=IdentityTransform(), direction=SortDirection.ASC, null_order=NullOrder.NULLS_LAST) ) # Connect to catalog and create table catalog = load_s3_tables_catalog(bucket_arn) create_namespace(catalog, namespace) table = create_table(catalog, namespace, table_name, genomic_variants_schema, partition_spec, sort_order) return table if __name__ == "__main__": bucket_arn = 'arn:aws:s3tables:<REGION>:<ACCOUNT_ID>:bucket/<TABLE_BUCKET_NAME' namespace = "variant_db" table_name = "genomic_variants" main(bucket_arn, namespace, table_name)