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
Topik
Ikhtisar opsi migrasi
Opsi migrasi berikut memberikan alternatif untuk menggunakan toko varian dan toko anotasi:
-
Gunakan implementasi referensi HealthOmics yang disediakan dari logika ETL.
Gunakan bucket tabel S3 untuk penyimpanan dan terus gunakan layanan AWS analitik yang ada.
-
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
-
Pilih AWS mitra
yang menawarkan alternatif toko varian dan anotasi.
Opsi migrasi untuk logika ETL
Pertimbangkan opsi migrasi berikut untuk logika ETL:
-
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
. -
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
Anda dapat menggunakan bucket tabel untuk tabel Iceberg yang dikelola sepenuhnya di Amazon S3.
Anda dapat memunculkan kasus dukungan
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
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)