Ekstrak dan kueri atribut AWS IoT SiteWise metadata di danau data - AWS Prescriptive Guidance

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

Ekstrak dan kueri atribut AWS IoT SiteWise metadata di danau data

Ambarish Dongaonkar, Amazon Web Services

Ringkasan

AWS IoT SiteWise menggunakan model aset dan hierarki untuk mewakili peralatan, proses, dan fasilitas industri Anda. Setiap model atau aset dapat memiliki beberapa atribut yang spesifik untuk lingkungan Anda. Contoh atribut metadata mencakup lokasi atau lokasi fisik aset, detail pabrik, dan pengidentifikasi peralatan. Nilai atribut ini melengkapi data pengukuran aset untuk memaksimalkan nilai bisnis. Pembelajaran mesin (ML) dapat memberikan wawasan tambahan tentang metadata ini dan merampingkan tugas-tugas rekayasa.

Namun, atribut metadata tidak dapat ditanyakan langsung dari layanan. AWS IoT SiteWise Untuk membuat atribut dapat dikueri, Anda harus mengekstrak dan menelannya ke dalam danau data. Pola ini menggunakan skrip Python untuk mengekstrak atribut untuk semua AWS IoT SiteWise aset dan memasukkannya ke dalam data lake di bucket Amazon Simple Storage Service (Amazon S3). Setelah menyelesaikan proses ini, Anda dapat menggunakan kueri SQL di Amazon Athena untuk mengakses AWS IoT SiteWise atribut metadata dan kumpulan data lainnya, seperti kumpulan data pengukuran. Informasi atribut metadata juga berguna saat bekerja dengan AWS IoT SiteWise monitor atau dasbor. Anda juga dapat membuat QuickSight dasbor Amazon dengan menggunakan atribut yang diekstrak di bucket Amazon S3.

Pola memiliki kode referensi, dan Anda dapat menerapkan kode dengan menggunakan layanan komputasi terbaik untuk kasus penggunaan Anda, seperti AWS Lambda atau AWS Glue.

Prasyarat dan batasan

Prasyarat

  • Aktif Akun AWS.

  • Izin untuk mengatur AWS Lambda fungsi atau AWS Glue pekerjaan.

  • Bucket Amazon S3.

  • Model aset dan hierarki diatur dalam AWS IoT SiteWise. Untuk informasi selengkapnya, lihat Membuat model aset dalam AWS IoT SiteWise dokumentasi.

Arsitektur

Anda dapat menggunakan fungsi Lambda atau AWS Glue pekerjaan untuk menyelesaikan proses ini. Kami merekomendasikan menggunakan Lambda jika Anda memiliki kurang dari 100 model dan setiap model memiliki rata-rata 15 atau lebih sedikit atribut. Untuk semua kasus penggunaan lainnya, kami sarankan untuk menggunakan AWS Glue.

Arsitektur solusi dan alur kerja ditunjukkan pada diagram berikut.

Diagram arsitektur yang menunjukkan proses ekstraksi dan kueri yang dijelaskan.
  1. AWS Glue Pekerjaan terjadwal atau fungsi Lambda berjalan. Ini mengekstrak atribut metadata aset dari AWS IoT SiteWise dan mencernanya ke dalam bucket Amazon S3.

  2. AWS Glue Crawler merayapi data yang diekstraksi di bucket Amazon S3 dan membuat tabel dalam file. AWS Glue Data Catalog

  3. Menggunakan SQL standar, Amazon Athena menanyakan tabel di file. AWS Glue Data Catalog

Otomatisasi dan skala

Anda dapat menjadwalkan fungsi atau AWS Glue pekerjaan Lambda untuk dijalankan setiap hari atau mingguan, sesuai dengan frekuensi pembaruan konfigurasi AWS IoT SiteWise aset Anda.

Tidak ada batasan jumlah AWS IoT SiteWise aset yang dapat diproses oleh kode sampel, tetapi sejumlah besar aset dapat meningkatkan jumlah waktu yang dibutuhkan untuk menyelesaikan proses.

Alat

  • Amazon Athena adalah layanan kueri interaktif yang membantu Anda menganalisis data secara langsung di Amazon S3 dengan menggunakan SQL standar.

  • AWS Glueadalah layanan ekstrak, transformasi, dan beban (ETL) yang dikelola sepenuhnya. Ini membantu Anda mengkategorikan, membersihkan, memperkaya, dan memindahkan data dengan andal antara penyimpanan data dan aliran data.

  • AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.

  • AWS IoT SiteWisemembantu Anda mengumpulkan, memodelkan, menganalisis, dan memvisualisasikan data dari peralatan industri dalam skala besar.

  • AWS Lambdaadalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.

  • Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.

  • AWS SDK untuk Python (Boto3)adalah kit pengembangan perangkat lunak yang membantu Anda mengintegrasikan aplikasi, perpustakaan, atau skrip Python Anda. Layanan AWS

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Konfigurasikan izin di IAM.

Di konsol IAM, berikan izin ke peran IAM yang diasumsikan oleh fungsi atau AWS Glue tugas Lambda untuk melakukan hal berikut:

  • Baca dari AWS IoT SiteWise layanan

  • Menulis ke ember Amazon S3

Untuk informasi selengkapnya, lihat Membuat peran Layanan AWS untuk dokumentasi IAM.

AWS Umum

Buat fungsi atau AWS Glue pekerjaan Lambda.

Jika Anda menggunakan Lambda, buat fungsi Lambda baru. Untuk Runtime, pilih Python. Untuk informasi selengkapnya, lihat Membangun fungsi Lambda dengan Python di dokumentasi Lambda.

Jika Anda menggunakan AWS Glue, buat pekerjaan shell Python baru di konsol. AWS Glue Untuk informasi selengkapnya, lihat Menambahkan pekerjaan shell Python di dokumentasi. AWS Glue  

AWS Umum

Perbarui fungsi atau AWS Glue pekerjaan Lambda.

Ubah fungsi atau AWS Glue pekerjaan Lambda baru, dan masukkan contoh kode di bagian Informasi tambahan. Ubah kode sesuai kebutuhan untuk kasus penggunaan Anda. Untuk informasi selengkapnya, lihat Mengedit kode menggunakan editor konsol di dokumentasi Lambda dan lihat Bekerja dengan skrip dalam dokumentasi.AWS Glue

AWS Umum
TugasDeskripsiKeterampilan yang dibutuhkan

Jalankan fungsi atau AWS Glue pekerjaan Lambda.

Jalankan fungsi atau AWS Glue pekerjaan Lambda. Untuk informasi selengkapnya, lihat Memanggil fungsi Lambda di dokumentasi Lambda atau lihat Memulai pekerjaan menggunakan pemicu dalam dokumentasi. AWS Glue Ini mengekstrak atribut metadata untuk aset dan model dalam AWS IoT SiteWise hierarki dan menyimpannya di bucket Amazon S3 yang ditentukan.

AWS Umum

Siapkan AWS Glue crawler.

Siapkan AWS Glue crawler dengan pengklasifikasi format yang diperlukan untuk file berformat CSV. Gunakan bucket Amazon S3 dan detail awalan yang digunakan dalam fungsi atau pekerjaan Lambda. AWS Glue Untuk informasi selengkapnya, lihat Mendefinisikan crawler dalam dokumentasi. AWS Glue

AWS Umum

Jalankan AWS Glue crawler.

Jalankan crawler untuk memproses file data yang dibuat oleh fungsi AWS Glue atau pekerjaan Lambda. Crawler membuat tabel dalam yang ditentukan AWS Glue Data Catalog. Untuk informasi selengkapnya, lihat atau Memulai crawler menggunakan pemicu dalam dokumentasi. AWS Glue

AWS Umum

Kueri atribut metadata.

Menggunakan Amazon Athena, gunakan SQL standar untuk menanyakan sesuai AWS Glue Data Catalog kebutuhan untuk kasus penggunaan Anda. Anda dapat bergabung dengan tabel atribut metadata dengan database dan tabel lainnya. Untuk informasi selengkapnya, lihat Memulai di dokumentasi Amazon Athena.

AWS Umum

Sumber daya terkait

Informasi tambahan

Kode

Kode sampel yang disediakan adalah untuk referensi, dan Anda dapat menyesuaikan kode ini sesuai kebutuhan untuk kasus penggunaan Anda.

# Following code can be used in an AWS Lambda function or in an AWS Glue Python shell job. # IAM roles used for this job need read access to the AWS IoT SiteWise service and write access to the S3 bucket. sw_client = boto3.client('iotsitewise') s3_client = boto3.client('s3') output = io.StringIO() attribute_list=[] bucket = '{3_bucket name}' prefix = '{s3_bucket prefix}' output.write("model_id,model_name,asset_id,asset_name,attribuet_id,attribute_name,attribute_value\n") m_resp = sw_client.list_asset_models() for m_rec in m_resp['assetModelSummaries']: model_id = m_rec['id'] model_name = m_rec['name'] attribute_list.clear() dam_response = sw_client.describe_asset_model(assetModelId=model_id) for rec in dam_response['assetModelProperties']: if 'attribute' in rec['type']: attribute_list.append(rec['name']) response = sw_client.list_assets(assetModelId=model_id, filter='ALL') for asset in response['assetSummaries']: asset_id = asset['id'] asset_name = asset['name'] resp = sw_client.describe_asset(assetId=asset_id) for rec in resp['assetProperties']: if rec['name'] in attribute_list: p_resp = sw_client.get_asset_property_value(assetId=asset_id, propertyId=rec['id']) if 'propertyValue' in p_resp: if p_resp['propertyValue']['value']: if 'stringValue' in p_resp['propertyValue']['value']: output.write(model_id + "," + model_name + "," + asset_id + "," + asset_name + "," + rec['id'] + "," + rec['name'] + "," + str(p_resp['propertyValue']['value']['stringValue']) + "\n") if 'doubleValue' in p_resp['propertyValue']['value']: output.write(model_id + "," + model_name + "," + asset_id + "," + asset_name + "," + rec['id'] + "," + rec['name'] + "," + str(p_resp['propertyValue']['value']['doubleValue']) + "\n") if 'integerValue' in p_resp['propertyValue']['value']: output.write(model_id + "," + model_name + "," + asset_id + "," + asset_name + "," + rec['id'] + "," + rec['name'] + "," + str(p_resp['propertyValue']['value']['integerValue']) + "\n") if 'booleanValue' in p_resp['propertyValue']['value']: output.write(model_id + "," + model_name + "," + asset_id + "," + asset_name + "," + rec['id'] + "," + rec['name'] + "," + str(p_resp['propertyValue']['value']['booleanValue']) + "\n") output.seek(0) s3_client.put_object(Bucket=bucket, Key= prefix + '/data.csv', Body=output.getvalue()) output.close()