

Pemberitahuan akhir dukungan: Pada 7 Oktober 2026, AWS akan menghentikan dukungan untuk. AWS IoT Greengrass Version 1 Setelah 7 Oktober 2026, Anda tidak akan lagi dapat mengakses sumber daya. AWS IoT Greengrass V1 Untuk informasi lebih lanjut, silakan kunjungi [Migrasi dari AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html).

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

# Integrasikan dengan layanan dan protokol menggunakan konektor Greengrass
<a name="connectors"></a>

Fitur ini tersedia untuk AWS IoT Greengrass Core v1.7 dan yang lebih baru.

Konektor di AWS IoT Greengrass adalah modul bawaan yang membuatnya lebih efisien untuk berinteraksi dengan infrastruktur lokal, protokol perangkat AWS, dan layanan cloud lainnya. Dengan menggunakan konektor, Anda dapat menghabiskan lebih sedikit waktu untuk mempelajari protokol baru dan APIs dan lebih banyak waktu berfokus pada logika yang penting bagi bisnis Anda.

Diagram berikut menunjukkan di mana konektor dapat masuk ke dalam AWS IoT Greengrass  lanskap.

![\[Konektor terhubung ke perangkat, layanan, dan sumber daya lokal.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/connectors/connectors-arch.png)


Banyak konektor menggunakan pesan MQTT untuk berkomunikasi dengan perangkat klien dan fungsi Greengrass Lambda dalam grup, atau dengan dan layanan bayangan lokal. AWS IoT Dalam contoh berikut, konektor Twilio Notifications menerima pesan MQTT dari fungsi Lambda yang ditentukan pengguna, menggunakan referensi lokal rahasia dari, dan memanggil Twilio API. AWS Secrets Manager

![\[Sebuah konektor menerima pesan MQTT dari fungsi Lambda dan memanggil layanan.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/connectors/twilio-solution.png)


Untuk tutorial yang membuat solusi ini, lihat [Memulai dengan konektor Greengrass (konsol)](connectors-console.md) dan [Memulai dengan konektor Greengrass (CLI)](connectors-cli.md).

Konektor Greengrass dapat membantu Anda memperluas kemampuan perangkat atau membuat perangkat tujuan tunggal. Dengan menggunakan konektor, Anda dapat:
+ Menerapkan logika bisnis dapat digunakan kembali.
+ Berinteraksi dengan cloud dan layanan lokal, termasuk AWS dan layanan pihak ketiga.
+ Menelan dan memproses data peranti.
+ Aktifkan device-to-device panggilan menggunakan langganan topik MQTT dan fungsi Lambda yang ditentukan pengguna.

AWS menyediakan satu set konektor Greengrass yang menyederhanakan interaksi dengan layanan umum dan sumber data. Modul prebuilt ini memungkinkan skenario untuk pencatatan dan diagnostik, penambahan, pemrosesan data industri, dan alarm dan pesan. Untuk informasi selengkapnya, lihat [AWS-disediakan konektor Greengrass](connectors-list.md).

## Persyaratan
<a name="connectors-reqs"></a>

Untuk menggunakan konektor, ingatlah hal-hal ini:
+ Setiap konektor yang Anda gunakan memiliki persyaratan yang harus Anda penuhi. Persyaratan ini mungkin termasuk versi perangkat lunak AWS IoT Greengrass Core minimum, prasyarat perangkat, izin yang diperlukan, dan batasan. Untuk informasi selengkapnya, lihat [AWS-disediakan konektor Greengrass](connectors-list.md).
+ Sebuah grup Greengrass dapat berisi hanya satu contoh dikonfigurasi dari konektor yang diberikan. Namun, Anda dapat menggunakan contoh dalam beberapa langganan. Untuk informasi selengkapnya, lihat [Parameter konfigurasi](#connectors-parameters).
+ Ketika [kontainerisasi default](lambda-group-config.md#lambda-containerization-groupsettings) untuk grup Greengrass diatur ke **Tanpa kontainer**, konektor di grup harus berjalan tanpa kontainerisasi. Untuk menemukan konektor yang mendukung mode **Tanpa kontainer** ini, lihat [AWS-disediakan konektor Greengrass](connectors-list.md).

## Menggunakan konektor Greengrass
<a name="use-applications"></a>

Konektor adalah jenis komponen grup. Seperti komponen grup lainnya, seperti perangkat klien dan fungsi Lambda yang ditentukan pengguna, Anda menambahkan konektor ke grup, mengonfigurasi pengaturannya, dan menerapkannya ke inti. AWS IoT Greengrass Konektor berjalan di lingkungan core.

Anda dapat menggunakan beberapa konektor sebagai aplikasi mandiri sederhana. Sebagai contoh, konektor Device Defender membaca metrik sistem dari perangkat core dan mengirimkannya AWS IoT Device Defender untuk analisis.

Anda dapat menambahkan konektor lain sebagai blok bangunan dalam solusi yang lebih besar. Contoh berikut solusi menggunakan konektor Adaptor ModBus-RTU untuk memproses pesan dari sensor dan konektor Notifikasi Twilio untuk memulai pesan Twilio.

![\[Aliran data dari fungsi Lambda untuk konektor ModBus-RTU Protocol Adapter ke fungsi Lambda ke konektor Notifikasi Twilio ke Twilio.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/connectors/modbus-twilio-solution.png)


Solusi sering mencakup fungsi Lambda yang ditetapkan pengguna yang duduk di samping konektor dan memproses data yang dikirim atau diterima konektor. Dalam contoh ini, TempMonitor fungsi menerima data dari Adaptor Protokol Modbus-RTU, menjalankan beberapa logika bisnis, dan kemudian mengirim data ke Twilio Notifications.

Untuk membuat dan menerapkan solusi, Anda mengikuti proses umum ini:

1. Memetakan aliran data tingkat tinggi. Mengidentifikasi sumber data, saluran data, layanan, protokol, dan sumber daya yang Anda butuhkan untuk bekerja dengan. Dalam solusi contoh, ini termasuk data melalui protokol Modbus RTU, port serial Modbus fisik, dan Twilio.

1. Identifikasi konektor untuk disertakan dalam solusi, dan tambahkan ke grup Anda. Solusi contoh menggunakan Modbus-RTU Protocol Adapter dan Notifikasi Twilio. Untuk membantu Anda menemukan konektor yang berlaku untuk skenario Anda, dan untuk mempelajari tentang persyaratan masing-masing, lihat [AWS-disediakan konektor Greengrass](connectors-list.md).

1. Identifikasi apakah fungsi Lambda, perangkat klien, atau sumber daya yang ditentukan pengguna diperlukan, lalu buat dan tambahkan ke grup. Ini mungkin termasuk fungsi yang berisi logika bisnis atau data proses ke dalam format yang diperlukan oleh entitas lain dalam solusi. Contoh solusi menggunakan fungsi untuk mengirim permintaan Modbus RTU dan memulai notifikasi Twilio. Ini juga mencakup sumber daya perangkat lokal untuk port serial Modbus RTU dan sumber daya rahasia untuk token otentikasi Twilio.
**catatan**  
Password referensi sumber daya rahasia, token, dan rahasia lainnya dari AWS Secrets Manager. Rahasia dapat digunakan oleh konektor dan fungsi Lambda untuk mengotentikasi dengan layanan dan aplikasi. Secara default, AWS IoT Greengrass dapat mengakses rahasia dengan nama yang dimulai dengan "*greengrass* -”. Untuk informasi selengkapnya, lihat [Menyebarkan rahasia ke inti AWS IoT Greengrass](secrets.md).

1. Buat langganan yang mengizinkan entitas dalam solusi untuk bertukar pesan MQTT. Jika konektor digunakan di langganan, konektor dan sumber pesan atau target harus menggunakan sintaks topik yang telah ditetapkan yang didukung oleh konektor. Untuk informasi selengkapnya, lihat [Input dan output](#connectors-inputs-outputs).

1. Terapkan grup ke Greengrass core.

Untuk informasi tentang membuat dan menerapkan konektor, lihat tutorial berikut:
+ [Memulai dengan konektor Greengrass (konsol)](connectors-console.md)
+ [Memulai dengan konektor Greengrass (CLI)](connectors-cli.md)

## Parameter konfigurasi
<a name="connectors-parameters"></a>

Banyak konektor menyediakan parameter yang memungkinkan Anda menyesuaikan perilaku atau output. Parameter ini digunakan selama inisialisasi, di runtime, atau di lain waktu dalam siklus hidup konektor.

Jenis dan penggunaan parameter bervariasi menurut konektor. Sebagai contoh, penyambung SNS mempunyai parameter yang mengonfigurasi topik default SNS, dan Device Defender mempunyai parameter yang mengonfigurasi tingkat sampling data.

Sebuah versi grup dapat berisi beberapa konektor, tetapi hanya satu contoh dari konektor yang diberikan pada suatu waktu. Ini berarti bahwa setiap konektor dalam grup hanya dapat memiliki satu konfigurasi aktif. Namun, konektor instance dapat digunakan dalam beberapa langganan di grup. Sebagai contoh, Anda dapat membuat langganan yang mengizinkan banyak perangkat mengirim data ke konektor Kinesis Firehose.

### Parameter yang digunakan untuk mengakses sumber daya grup
<a name="connectors-parameters-resources"></a>

Greengrass konektor menggunakan sumber daya grup untuk mengakses sistem file, port, periferal, dan sumber daya lokal lainnya pada perangkat core. Jika konektor memerlukan akses ke sumber daya kelompok, maka konektor menyediakan parameter konfigurasi terkait.

Sumber daya grup meliputi:
+ [Sumber daya lokal](access-local-resources.md). Direktori, file, port, pin, dan periferal yang hadir pada perangkat Greengrass core.
+ [Sumber daya machine learning](ml-inference.md). Model machine learning yang dilatih di cloud dan diterapkan ke core untuk inferensi lokal.
+ [Sumber daya rahasia](secrets.md). Salinan kata sandi, kunci, token, atau teks arbitrer lokal dan terenkripsi dari. AWS Secrets Manager Konektor dapat dengan aman mengakses rahasia lokal ini dan menggunakannya untuk mengotentikasi ke layanan atau infrastruktur lokal.

Sebagai contoh, parameter untuk Device Defender memungkinkan akses ke metrik sistem di direktori `/proc` host, dan parameter untuk Notifikasi Twilio memungkinkan akses ke token otentikasi Twilio yang disimpan secara lokal.

### Memperbarui parameter konektor
<a name="update-application-parameters-"></a>

Parameter dikonfigurasi saat konektor ditambahkan ke grup Greengrass. Anda dapat mengubah nilai parameter setelah konektor ditambahkan.
+ Di konsol: Dari halaman konfigurasi grup, buka **Konektor**, dan dari menu kontekstual konektor, pilih **Edit**.
**catatan**  
Jika konektor menggunakan sumber daya rahasia yang kemudian diubah untuk referensi rahasia yang berbeda, Anda harus mengedit parameter konektor dan mengonfirmasi perubahan.
+ Di API: Buat versi lain dari konektor yang mendefinisikan konfigurasi baru.

   AWS IoT Greengrass API menggunakan versi untuk mengelola grup. Versi tidak dapat diubah, jadi untuk menambah atau mengubah komponen grup — misalnya, perangkat klien grup, fungsi, dan sumber daya — Anda harus membuat versi komponen baru atau yang diperbarui. Kemudian, Anda buat dan terapkan versi grup yang berisi versi target masing-masing komponen.

Setelah Anda membuat perubahan konfigurasi konektor, Anda harus menerapkan grup untuk memperbanyak perubahan ke core.

## Input dan output
<a name="connectors-inputs-outputs"></a>

Banyak konektor Greengrass dapat berkomunikasi dengan entitas lain dengan mengirim dan menerima pesan MQTT. Komunikasi MQTT dikendalikan oleh langganan yang memungkinkan konektor untuk bertukar data dengan fungsi Lambda, perangkat klien, dan konektor lain di grup Greengrass, atau dengan dan layanan bayangan lokal. AWS IoT Untuk mengizinkan komunikasi ini, Anda harus membuat langganan dalam grup yang menjadi milik konektornya. Untuk informasi selengkapnya, lihat [Langganan yang dikelola di dalam alur kerja pesan MQTT](gg-sec.md#gg-msg-workflow).

Konektor dapat penerbit pesan, pelanggan pesan, atau keduanya. Setiap konektor mendefinisikan topik MQTT yang menerbitkan atau berlangganan. Topik standar ini harus digunakan dalam langganan di mana konektor adalah sumber pesan atau target pesan. Untuk tutorial yang menyertakan langkah-langkah untuk mengonfigurasi langganan untuk konektor, lihat [Memulai dengan konektor Greengrass (konsol)](connectors-console.md) dan [Memulai dengan konektor Greengrass (CLI)](connectors-cli.md).

**catatan**  
Banyak konektor juga memiliki mode komunikasi built-in untuk berinteraksi dengan layanan cloud atau lokal. Ini bervariasi oleh konektor dan mungkin mengharuskan Anda mengonfigurasi parameter atau menambahkan izin untuk [peran grup](group-role.md). Untuk informasi tentang persyaratan konektor, lihat [AWS-disediakan konektor Greengrass](connectors-list.md).

### Topik input
<a name="connectors-multiple-topics"></a>

Kebanyakan konektor menerima data input mengenai topik MQTT. Beberapa konektor berlangganan beberapa topik untuk input data. Sebagai contoh, konektor Serial Stream mendukung dua topik:
+ `serial/+/read/#`
+ `serial/+/write/#`

Untuk konektor ini, permintaan baca dan tulis dikirim ke topik yang sesuai. Ketika Anda membuat langganan, pastikan untuk menggunakan topik yang sesuai dengan implementasi Anda.

Karakter `+` dan `#` di contoh sebelumnya adalah wildcard. Wildcard ini memungkinkan pelanggan untuk menerima pesan pada beberapa topik dan penerbit untuk menyesuaikan topik yang mereka terbitkan.
+ Wildcard `+` dapat muncul di mana saja dalam hierarki topik. Hal ini dapat diganti dengan satu item hirarki.

  Sebagai contoh, untuk topik `sensor/+/input`, pesan dapat diterbitkan ke topik `sensor/id-123/input` tetapi tidak untuk `sensor/group-a/id-123/input`.
+ Wildcard `#` dapat muncul hanya pada akhir hierarki topik. Hal ini dapat diganti dengan nol atau lebih item hirarki.

  Sebagai contoh, untuk topik `sensor/#`, pesan dapat diterbitkan ke `sensor/`, `sensor/id-123`, dan `sensor/group-a/id-123`, tapi tidak untuk `sensor`.

Karakter wildcard hanya berlaku saat berlangganan topik. Pesan tidak dapat diterbitkan ke topik yang berisi wildcard. Periksa dokumentasi untuk konektor untuk informasi lebih lanjut tentang persyaratan topik input atau output. Untuk informasi selengkapnya, lihat [AWS-disediakan konektor Greengrass](connectors-list.md).

## Dukungan kontainerisasi
<a name="connector-containerization"></a>

Secara default, sebagian besar konektor berjalan pada Greengrass core dalam lingkungan runtime terisolasi yang dikelola oleh AWS IoT Greengrass. Lingkungan runtime ini, disebut *kontainer*, menyediakan isolasi antara konektor dan sistem host, yang menawarkan lebih banyak keamanan untuk host dan konektor.

Namun, kontainerisasi Greengrass ini tidak didukung di beberapa lingkungan, seperti saat Anda AWS IoT Greengrass menjalankan wadah Docker atau di kernel Linux yang lebih lama tanpa cgroup. Dalam lingkungan ini, konektor harus berjalan dalam di **mode** Tanpa kontainer. Untuk menemukan konektor yang mendukung mode **Tanpa kontainer** ini, lihat [AWS-disediakan konektor Greengrass](connectors-list.md). Beberapa konektor berjalan dalam mode ini secara native, dan beberapa konektor memungkinkan Anda mengatur mode isolasi.

Anda juga dapat mengatur mode isolasi ke **Tanpa kontainer** di lingkungan yang mendukung kontainerisasi Greengrass, tetapi kami sarankan menggunakan **mode** kontainer Greengrass bila memungkinkan.

**catatan**  
[Kontainerisasi default](lambda-group-config.md#lambda-containerization-groupsettings) untuk grup Greengrass tidak berlaku untuk konektor.

## Versi upgrade konektor
<a name="upgrade-connector-versions"></a>

Penyedia konektor mungkin merilis konektor versi baru yang menambahkan fitur, memperbaiki masalah, atau meningkatkan kinerja. Untuk informasi tentang versi yang tersedia dan perubahan terkait, lihat [dokumentasi untuk setiap konektor](connectors-list.md).

Di AWS IoT konsol, Anda dapat memeriksa versi baru untuk konektor di grup Greengrass Anda.

1. <a name="console-gg-groups"></a>**Di panel navigasi AWS IoT konsol, di bawah **Kelola**, perluas perangkat **Greengrass**, lalu pilih Grup (V1).**

1. Di bawah **grup Greengrass**, pilih grup Anda.

1. Pilih **Konektor** untuk menampilkan konektor dalam grup.

   Jika konektor memiliki versi baru, sebuah tombol **Tersedia** muncul di kolom **Upgrade** ini.

1. Untuk upgrade versi konektor:

   1. Di halaman **Konektor** ini, pada kolom **Upgrade** ini, pilih **Tersedia**. **Halaman** Upgrade konektor membuka dan menampilkan pengaturan parameter saat ini, jika berlaku.

      Pilih versi konektor baru, tentukan parameter sesuai kebutuhan, lalu pilih **Upgrade**.

   1. Di **halaman** Langganan, tambahkan langganan baru di grup untuk mengganti yang menggunakan konektor sebagai sumber atau target. Kemudian, hapus langganan lama.

      Konektor referensi langganan berdasarkan versi, sehingga merekan menjadi tidak valid jika Anda mengubah versi konektor di grup.

   1. Dari menu **Tindakan** ini, pilih **Deploy** untuk menerapkan perubahan Anda ke core.

Untuk memutakhirkan konektor dari AWS IoT Greengrass API, buat dan terapkan versi grup yang menyertakan konektor dan langganan yang diperbarui. Gunakan proses yang sama seperti ketika Anda menambahkan konektor ke grup. Untuk langkah-langkah mendetail yang menunjukkan cara menggunakan konektor Twilio Notifications AWS CLI untuk mengonfigurasi dan menerapkan contoh Twilio Notifications, lihat. [Memulai dengan konektor Greengrass (CLI)](connectors-cli.md)

## Pencatatan untuk konektor
<a name="connectors-logging"></a>

Konektor Greengrass berisi fungsi Lambda yang menulis peristiwa dan kesalahan untuk Greengrass logs. Tergantung pada pengaturan grup Anda, log ditulis ke CloudWatch Log, sistem file lokal, atau keduanya. Log dari konektor termasuk ARN dari fungsi yang sesuai. Contoh ARN berikut adalah dari konektor Kinesis Firehose:

```
arn:aws:lambda:aws-region:account-id:function:KinesisFirehoseClient:1
```

Konfigurasi pencatatan default menulis log info-level ke file yang menggunakan struktur direktori berikut:

```
greengrass-root/ggc/var/log/user/region/aws/function-name.log
```

Untuk informasi selengkapnya tentang pencatatan Greengrass, lihat [Pemantauan dengan AWS IoT Greengrass log](greengrass-logs-overview.md).

# AWS-disediakan konektor Greengrass
<a name="connectors-list"></a>

AWS menyediakan konektor berikut yang mendukung AWS IoT Greengrass skenario umum. Untuk informasi lebih lanjut tentang cara kerja konektor, lihat dokumentasi berikut:
+ [Integrasikan dengan layanan dan protokol menggunakan konektor Greengrass](connectors.md)
+ [Memulai dengan konektor (konsol)](connectors-console.md) atau [Memulai dengan konektor (CLI)](connectors-cli.md)


| Konektor | Deskripsi | Lambda waktu aktif yang didukung | Mendukung mode **Tanpa kontainer** | 
| --- | --- | --- | --- | 
| [CloudWatch Metrik-metrik](cloudwatch-metrics-connector.md) | Menerbitkan metrik khusus ke Amazon. CloudWatch | <a name="python-connectors-runtime"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/connectors-list.html) | Ya | 
| [Pembela Perangkat](device-defender-connector.md) | Mengirim metrik sistem ke AWS IoT Device Defender. | <a name="python-connectors-runtime"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/connectors-list.html) | Tidak | 
| [Penerapan Aplikasi Docker](docker-app-connector.md) | Jalankan file Docker Compose untuk memulai aplikasi Docker pada perangkat core. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/connectors-list.html) | Ya | 
| [IoT Analytics](iot-analytics-connector.md) | Mengirim data dari perangkat dan sensor ke AWS IoT Analytics. | <a name="python-connectors-runtime"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/connectors-list.html) | Ya | 
| [Adaptor Protokol IP IoT Ethernet](ethernet-ip-connector.md) | Mengumpulkan data dari perangkat Ethernet/IP. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/connectors-list.html) | Ya | 
| [IoT SiteWise](iot-sitewise-connector.md) | Mengirimkan data dari perangkat dan sensor ke properti aset dalam AWS IoT SiteWise. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/connectors-list.html) | Ya | 
| [Kinesis Firehose](kinesis-firehose-connector.md) | Mengirim data ke aliran pengiriman Amazon Data Firehose. | <a name="python-connectors-runtime"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/connectors-list.html) | Ya | 
| [Umpan Balik](ml-feedback-connector.md) | Menerbitkan machine learning model input ke cloud dan output ke topik MQTT. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/connectors-list.html) | Tidak | 
| [Klasifikasi Gambar ML](image-classification-connector.md) | Menjalankan layanan inferensi klasifikasi gambar lokal. Konektor ini menyediakan versi untuk beberapa platform. | <a name="python-connectors-runtime"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/connectors-list.html) | Tidak | 
| [Deteksi Objek ML](obj-detection-connector.md) | Menjalankan sebuah layanan inferensi deteksi objek lokal. Konektor ini menyediakan versi untuk beberapa platform. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/connectors-list.html) | Tidak | 
| [Adaptor Protokol Modbus-RTU](modbus-protocol-adapter-connector.md) | Mengirim permintaan ke perangkat Modbus RTU. | <a name="python-connectors-runtime"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/connectors-list.html) | Tidak | 
| [Adaptor Protokol Modbus-TCP](modbus-tcp-connector.md) | Mengumpulkan data dari perangkat ModBustCP. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/connectors-list.html) | Ya | 
| [Raspberry Pi GPIO](raspberrypi-gpio-connector.md) | Kontrol GPIO pin pada Raspberry Pi core. | <a name="python-connectors-runtime"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/connectors-list.html) | Tidak | 
| [Aliran Serial](serial-stream-connector.md) | Membaca dan menulis ke port serial pada perangkat core. | <a name="python-connectors-runtime"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/connectors-list.html) | Tidak | 
| [ServiceNow MetricBase Integrasi](servicenow-connector.md) | Menerbitkan metrik deret waktu ke. ServiceNow MetricBase | <a name="python-connectors-runtime"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/connectors-list.html) | Ya | 
| [SNS](sns-connector.md) | Mengirim pesan ke topik Amazon SNS. | <a name="python-connectors-runtime"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/connectors-list.html) | Ya | 
| [Integrasi Splunk](splunk-connector.md) | Menerbitkan data untuk Splunk HEC. | <a name="python-connectors-runtime"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/connectors-list.html) | Ya | 
| [Pemberitahuan Twilio](twilio-notifications-connector.md) | Memulai teks Twilio atau pesan suara. | <a name="python-connectors-runtime"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/connectors-list.html) | Ya | 

\$1 Untuk menggunakan waktu aktifs Python 3.8, Anda harus membuat sebuah link simbolik dari folder instalasi default Python 3.7 ke binari Python 3.8 yang terinstal. Untuk informasi lebih lanjut, lihat persyaratan khusus konektor.

**catatan**  
Kami merekomendasikan bahwa Anda [memperbarui versi konektor](connectors.md#upgrade-connector-versions) dari Python 2.7 ke Python 3.7. Dukungan berkelanjutan untuk konektor Python 2.7 tergantung pada AWS Lambda dukungan runtime. Untuk informasi selengkapnya, lihat [Kebijakan dukungan waktu aktif](https://docs.aws.amazon.com/lambda/latest/dg/runtime-support-policy.html) di *Panduan Developer AWS Lambda *.

# CloudWatch Konektor metrik
<a name="cloudwatch-metrics-connector"></a>

[Konektor CloudWatch ](connectors.md) Metrik menerbitkan metrik khusus dari perangkat Greengrass ke Amazon. CloudWatch Konektor menyediakan infrastruktur terpusat untuk menerbitkan CloudWatch metrik, yang dapat Anda gunakan untuk memantau dan menganalisis lingkungan inti Greengrass, dan bertindak berdasarkan acara lokal. Untuk informasi selengkapnya, lihat [Menggunakan CloudWatch metrik](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html) *Amazon di Panduan CloudWatch Pengguna Amazon*.

Konektor ini menerima data metrik sebagai pesan MQTT. Konektor mengumpulkan metrik yang berada di namespace yang sama dan menerbitkannya secara berkala. CloudWatch 

Konektor ini memiliki versi berikut.


| Versi | ARN | 
| --- | --- | 
| 5 | `arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/5` | 
| 4 | `arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/4` | 
| 3 | `arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/1` | 

Untuk informasi tentang perubahan versi, lihat [Changelog](#cloudwatch-metrics-connector-changelog).

## Persyaratan
<a name="cloudwatch-metrics-connector-req"></a>

Konektor ini memiliki persyaratan sebagai berikut:

------
#### [ Version 3 - 5 ]
+ <a name="conn-req-ggc-v1.9.3"></a>AWS IoT Greengrass Perangkat lunak inti v1.9.3 atau yang lebih baru.
+ <a name="conn-req-py-3.7-and-3.8"></a>[Python](https://www.python.org/) versi 3.7 atau 3.8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
**catatan**  <a name="use-runtime-py3.8"></a>
Untuk menggunakan Python 3.8, jalankan perintah berikut untuk membuat link simbolik dari folder instalasi default Python 3.7 ke binari Python 3.8 yang diinstal.  

  ```
  sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7
  ```
Ini mengonfigurasi perangkat Anda untuk memenuhi persyaratan Python untuk AWS IoT Greengrass.
+ <a name="conn-cloudwatch-metrics-req-iam-policy"></a>Pada [Peran grup Greengrass](group-role.md) dikonfigurasi untuk mengizinkan `cloudwatch:PutMetricData` tindakan, seperti yang ditunjukkan dalam contoh berikut AWS Identity and Access Management kebijakan (IAM).

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "Stmt1528133056761",
              "Action": [
                  "cloudwatch:PutMetricData"
              ],
              "Effect": "Allow",
              "Resource": "*"
          }
      ]
  }
  ```

------

  <a name="set-up-group-role"></a>Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat [Mengelola peran grup Greengrass (konsol)](group-role.md#manage-group-role-console) atau [Mengelola peran grup Greengrass (CLI)](group-role.md#manage-group-role-cli).

  Untuk informasi selengkapnya tentang CloudWatch izin, lihat [referensi CloudWatch izin Amazon di Panduan](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/permissions-reference-cw.html) Pengguna *IAM*.

------
#### [ Versions 1 - 2 ]
+ <a name="conn-req-ggc-v1.7.0"></a>AWS IoT Greengrass Perangkat lunak inti v1.7 atau yang lebih baru.
+ [Python](https://www.python.org/) versi 2.7 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
+ <a name="conn-cloudwatch-metrics-req-iam-policy"></a>Pada [Peran grup Greengrass](group-role.md) dikonfigurasi untuk mengizinkan `cloudwatch:PutMetricData` tindakan, seperti yang ditunjukkan dalam contoh berikut AWS Identity and Access Management kebijakan (IAM).

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "Stmt1528133056761",
              "Action": [
                  "cloudwatch:PutMetricData"
              ],
              "Effect": "Allow",
              "Resource": "*"
          }
      ]
  }
  ```

------

  <a name="set-up-group-role"></a>Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat [Mengelola peran grup Greengrass (konsol)](group-role.md#manage-group-role-console) atau [Mengelola peran grup Greengrass (CLI)](group-role.md#manage-group-role-cli).

  Untuk informasi selengkapnya tentang CloudWatch izin, lihat [referensi CloudWatch izin Amazon di Panduan](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/permissions-reference-cw.html) Pengguna *IAM*.

------

## Parameter Konektor
<a name="cloudwatch-metrics-connector-param"></a>

Konektor ini menyediakan parameter berikut:

------
#### [ Versions 4 - 5 ]

`PublishInterval`  <a name="cw-metrics-PublishInterval"></a>
Jumlah maksimum detik untuk menunggu sebelum menerbitkan metrik batched untuk namespace tertentu. Nilai maksimumnya adalah 900. Untuk mengonfigurasi konektor untuk menerbitkan metrik seperti yang diterima (tanpa batching), tentukan 0.  
Konektor mempublikasikan CloudWatch setelah menerima 20 metrik di namespace yang sama atau setelah interval yang ditentukan.  
Konektor tidak menjamin urutan acara terbitan.
Nama tampilan di AWS IoT konsol: **Publikasikan interval**  
Wajib: `true`  
Jenis: `string`  
Nilai yang valid: `0 - 900`  
Pola yang valid: `[0-9]|[1-9]\d|[1-9]\d\d|900`

`PublishRegion`  <a name="cw-metrics-PublishRegion"></a>
 Wilayah AWS Untuk memposting CloudWatch metrik ke. Nilai ini menimpa Wilayah metrik Greengrass default. Ini diperlukan hanya saat memposting metrik lintas-Wilayah.  
Nama tampilan di AWS IoT konsol: **Publikasikan wilayah**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^$|([a-z]{2}-[a-z]+-\d{1})`

`MemorySize`  <a name="cw-metrics-MemorySize"></a>
Memori (dalam KB) untuk mengalokasikan ke konektor.  
Nama tampilan di AWS IoT konsol: **Ukuran memori**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^[0-9]+$`

`MaxMetricsToRetain`  <a name="cw-metrics-MaxMetricsToRetain"></a>
Jumlah maksimum metrik dalam semua namespaces untuk dipertahankan dalam memori sebelum diganti dengan metrik baru. Nilai minimumnya adalah 2000.  
Batas ini berlaku bila tidak ada koneksi ke internet dan konektor mulai buffer metrik untuk diterbitkan nanti. Ketika buffer penuh, metrik terlama digantikan oleh metrik baru. Metrik dalam namespace tertentu diganti hanya dengan metrik dalam namespace yang sama.  
Metrik tidak dipertahankan jika proses host untuk konektor terganggu. Sebagai contoh, gangguan ini dapat terjadi selama deployment grup atau ketika perangkat dimulai ulang.
Nama tampilan di AWS IoT konsol: **Metrik maksimum untuk dipertahankan**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^([2-9]\d{3}|[1-9]\d{4,})$`

`IsolationMode`  <a name="IsolationMode"></a>
Mode [kontainerisasi](connectors.md#connector-containerization) untuk konektor ini. Defaultnya adalah`GreengrassContainer`, yang berarti konektor berjalan di lingkungan runtime yang terisolasi di dalam AWS IoT Greengrass container.  
Pengaturan kontainerisasi default untuk grup tidak berlaku untuk konektor.
Nama tampilan di AWS IoT konsol: **Mode isolasi kontainer**  
Wajib: `false`  
Jenis: `string`  
Nilai yang valid: `GreengrassContainer` or `NoContainer`  
Pola yang valid: `^NoContainer$|^GreengrassContainer$`

------
#### [ Versions 1 - 3 ]

`PublishInterval`  <a name="cw-metrics-PublishInterval"></a>
Jumlah maksimum detik untuk menunggu sebelum menerbitkan metrik batched untuk namespace tertentu. Nilai maksimumnya adalah 900. Untuk mengonfigurasi konektor untuk menerbitkan metrik seperti yang diterima (tanpa batching), tentukan 0.  
Konektor mempublikasikan CloudWatch setelah menerima 20 metrik di namespace yang sama atau setelah interval yang ditentukan.  
Konektor tidak menjamin urutan acara terbitan.
Nama tampilan di AWS IoT konsol: **Publikasikan interval**  
Wajib: `true`  
Jenis: `string`  
Nilai yang valid: `0 - 900`  
Pola yang valid: `[0-9]|[1-9]\d|[1-9]\d\d|900`

`PublishRegion`  <a name="cw-metrics-PublishRegion"></a>
 Wilayah AWS Untuk memposting CloudWatch metrik ke. Nilai ini menimpa Wilayah metrik Greengrass default. Ini diperlukan hanya saat memposting metrik lintas-Wilayah.  
Nama tampilan di AWS IoT konsol: **Publikasikan wilayah**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^$|([a-z]{2}-[a-z]+-\d{1})`

`MemorySize`  <a name="cw-metrics-MemorySize"></a>
Memori (dalam KB) untuk mengalokasikan ke konektor.  
Nama tampilan di AWS IoT konsol: **Ukuran memori**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^[0-9]+$`

`MaxMetricsToRetain`  <a name="cw-metrics-MaxMetricsToRetain"></a>
Jumlah maksimum metrik dalam semua namespaces untuk dipertahankan dalam memori sebelum diganti dengan metrik baru. Nilai minimumnya adalah 2000.  
Batas ini berlaku bila tidak ada koneksi ke internet dan konektor mulai buffer metrik untuk diterbitkan nanti. Ketika buffer penuh, metrik terlama digantikan oleh metrik baru. Metrik dalam namespace tertentu diganti hanya dengan metrik dalam namespace yang sama.  
Metrik tidak dipertahankan jika proses host untuk konektor terganggu. Sebagai contoh, gangguan ini dapat terjadi selama deployment grup atau ketika perangkat dimulai ulang.
Nama tampilan di AWS IoT konsol: **Metrik maksimum untuk dipertahankan**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^([2-9]\d{3}|[1-9]\d{4,})$`

------

### Buat Contoh Konektor (AWS CLI)
<a name="cloudwatch-metrics-connector-create"></a>

Perintah CLI berikut membuat `ConnectorDefinition` dengan versi awal yang berisi konektor CloudWatch Metrik.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyCloudWatchMetricsConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/4",
            "Parameters": {
                "PublishInterval" : "600",
                "PublishRegion" : "us-west-2",
                "MemorySize" : "16",
                "MaxMetricsToRetain" : "2500",
                "IsolationMode" : "GreengrassContainer"
            }
        }
    ]
}'
```

Di AWS IoT Greengrass konsol, Anda dapat menambahkan konektor dari halaman **Konektor** grup. Untuk informasi selengkapnya, lihat [Memulai dengan konektor Greengrass (konsol)](connectors-console.md).

## Data input
<a name="cloudwatch-metrics-connector-data-input"></a>

Konektor ini menerima metrik pada topik MQTT dan menerbitkan metrik ke. CloudWatch Pesan input harus dalam format JSON.

<a name="topic-filter"></a>**Filter topik dalam langganan**  
`cloudwatch/metric/put`

**Properti pesan**    
`request`  
Informasi tentang metrik dalam pesan ini.  
Objek permintaan berisi data metrik untuk dipublikasikan CloudWatch. Nilai metrik harus memenuhi spesifikasi [https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricData.html](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricData.html)API. Hanya `namespace`, `metricData.metricName`, dan `metricData.value` properti yang diperlukan.  
Wajib: `true`  
Jenis: `object` yang mencakup properti berikut:    
`namespace`  
Namespace yang ditentukan pengguna untuk data metrik dalam permintaan ini. CloudWatch menggunakan ruang nama sebagai wadah untuk titik data metrik.  
Anda tidak dapat menentukan namespace yang dimulai dengan string yang dicadangkan `AWS/`.
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `[^:].*`  
`metricData`  
Data untuk metrik.  
Wajib: `true`  
Jenis: `object` yang mencakup properti berikut:    
`metricName`  
Nama metrik.  
Wajib: `true`  
Jenis: `string`  
`dimensions`  
Dimensi yang terkait dengan metrik. Dimensi memberikan informasi lebih lanjut tentang metrik dan datanya. Metrik dapat menentukan hingga 10 dimensi.  
Konektor ini secara otomatis menyertakan dimensi bernama`coreName`, di mana nilainya adalah nama inti.  
Wajib: `false`  
Jenis: `array` objek dimensi yang mencakup properti berikut:    
`name`  
Nama dimensi.  
Wajib: `false`  
Jenis: `string`  
`value`  
Nilai dimensi.  
Wajib: `false`  
Jenis: `string`  
`timestamp`  
Waktu data metrik diterima, dinyatakan sebagai jumlah detik sejak `Jan 1, 1970 00:00:00 UTC`. Jika nilai ini dihilangkan, konektor menggunakan waktu yang menerima pesan.  
Wajib: `false`  
Jenis: `timestamp`  
Jika Anda menggunakan antara versi 1 dan 4 konektor ini, kami sarankan Anda mengambil stempel waktu secara terpisah untuk setiap metrik saat Anda mengirim beberapa metrik dari satu sumber. Jangan menggunakan variabel untuk menyimpan catatan waktu.  
`value`  
Nilai untuk metrik.  
CloudWatch menolak nilai yang terlalu kecil atau terlalu besar. Nilai harus dalam kisaran `8.515920e-109` ke `1.174271e+108` (Basis 10) atau `2e-360` ke `2e360` (Basis 2). Nilai khusus (sebagai contoh, `NaN`, `+Infinity`, `-Infinity`) tidak didukung.
Wajib: `true`  
Jenis: `double`  
`unit`  
Unit untuk metrik.  
Wajib: `false`  
Jenis: `string`  
Nilai yang valid: `Seconds, Microseconds, Milliseconds, Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Bits, Kilobits, Megabits, Gigabits, Terabits, Percent, Count, Bytes/Second, Kilobytes/Second, Megabytes/Second, Gigabytes/Second, Terabytes/Second, Bits/Second, Kilobits/Second, Megabits/Second, Gigabits/Second, Terabits/Second, Count/Second, None`

Batas  
Semua batasan yang diberlakukan oleh CloudWatch [https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricData.html](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricData.html)API berlaku untuk metrik saat menggunakan konektor ini. Batas berikut sangat penting:  
+ Batas 40 KB pada muatan API
+ 20 metrik per permintaan API
+ 150 transaksi per detik (TPS) untuk API `PutMetricData`
Untuk informasi selengkapnya, lihat [CloudWatch batasan](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_limits.html) di *Panduan CloudWatch Pengguna Amazon*.

**Contoh masukan**  

```
{
   "request": {
       "namespace": "Greengrass",
       "metricData":
           {
               "metricName": "latency",
               "dimensions": [
                   {
                       "name": "hostname",
                       "value": "test_hostname"
                   }
               ],
               "timestamp": 1539027324,
               "value": 123.0,
               "unit": "Seconds"
            }
    }
}
```

## Data output
<a name="cloudwatch-metrics-connector-data-output"></a>

Konektor ini menerbitkan informasi status sebagai data output pada topik MQTT.

<a name="topic-filter"></a>**Filter topik dalam langganan**  
`cloudwatch/metric/put/status`

**Contoh keluaran: Sukses**  
Responsnya mencakup namespace data metrik dan `RequestId` bidang dari respons. CloudWatch   

```
{
   "response": {
        "cloudwatch_rid":"70573243-d723-11e8-b095-75ff2EXAMPLE",
        "namespace": "Greengrass",
        "status":"success"
    }
}
```

**Contoh keluaran: Kegagalan**  

```
{
   "response" : {
        "namespace": "Greengrass",
        "error": "InvalidInputException",
        "error_message":"cw metric is invalid",
        "status":"fail"
   }
}
```
Jika konektor mendeteksi kesalahan yang dapat diulang (sebagai contoh, kesalahan koneksi), konektor mengulang lagi publikasinya dalam batch berikutnya.

## Contoh Penggunaan
<a name="cloudwatch-metrics-connector-usage"></a>

<a name="connectors-setup-intro"></a>Gunakan langkah-langkah tingkat tinggi berikut untuk mengatur contoh fungsi Lambda Python 3.7 yang dapat Anda gunakan untuk mencoba konektor.

**catatan**  <a name="connectors-setup-get-started-topics"></a>
Jika Anda menggunakan waktu aktif Python lainnya, Anda dapat membuat symlink dari Python3.x ke Python 3.7.
Topik [Memulai dengan konektor (konsol)](connectors-console.md) dan [Memulai dengan konektor (CLI)](connectors-cli.md) berisi langkah-langkah terperinci yang menunjukkan cara mengonfigurasi dan men-deploy contoh konektor Notifikasi Twilio.

1. Pastikan Anda memenuhi [persyaratan](#cloudwatch-metrics-connector-req) untuk konektor.

   <a name="set-up-group-role"></a>Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat [Mengelola peran grup Greengrass (konsol)](group-role.md#manage-group-role-console) atau [Mengelola peran grup Greengrass (CLI)](group-role.md#manage-group-role-cli).

1. <a name="connectors-setup-function"></a>Buat dan terbitkan fungsi Lambda yang mengirimkan data input ke konektor.

   Simpan [kode contoh](#cloudwatch-metrics-connector-usage-example) sebagai file PY. <a name="connectors-setup-function-sdk"></a>Unduh dan unzip [AWS IoT Greengrass Core SDK for Python](lambda-functions.md#lambda-sdks-core). Kemudian, buat paket zip yang berisi file PY dan folder `greengrasssdk` dalam tingkat root. Paket zip ini adalah paket deployment yang Anda unggah ke AWS Lambda.

   <a name="connectors-setup-function-publish"></a>Setelah Anda membuat fungsi Lambda Python 3.7, terbitkankan versi fungsi dan buat alias.

1. Konfigurasikan grup Greengrass Anda.

   1. <a name="connectors-setup-gg-function"></a>Tambahkan fungsi Lambda dengan aliasnya (direkomendasikan). Konfigurasikan siklus hidup Lambda sebagai berumur panjang (atau `"Pinned": true` dalam CLI).

   1. Tambahkan konektor dan konfigurasikan [parameter](#cloudwatch-metrics-connector-param).

   1. Tambahkan langganan yang mengizinkan konektor untuk menerima [data input](#cloudwatch-metrics-connector-data-input) dan mengirim [data output](#cloudwatch-metrics-connector-data-output) pada filter topik yang didukung.
      + <a name="connectors-setup-subscription-input-data"></a>Atur fungsi Lambda sebagai sumber, konektor sebagai target, dan gunakan filter topik input yang mendukung.
      + <a name="connectors-setup-subscription-output-data"></a>Atur konektor sebagai sumber, AWS IoT Core sebagai target, dan gunakan filter topik input yang mendukung. Anda menggunakan langganan ini untuk melihat pesan status di AWS IoT konsol.

1. <a name="connectors-setup-deploy-group"></a>Men-deploy grup.

1. <a name="connectors-setup-test-sub"></a>Di AWS IoT konsol, pada halaman **Uji**, berlangganan topik data keluaran untuk melihat pesan status dari konektor. Contoh fungsi Lambda yang berumur panjang dan mulai mengirim pesan segera setelah grup dalam-deploy.

   Setelah selesai pengujian, Anda dapat mengatur siklus hidup Lambda ke sesuai permintaan (atau `"Pinned": false` dalam CLI) dan men-deploy grup. Ini menghentikan fungsi dari mengirim pesan.

### Contoh
<a name="cloudwatch-metrics-connector-usage-example"></a>

Contoh fungsi Lambda berikut mengirimkan pesan input ke konektor.

```
import greengrasssdk
import time
import json

iot_client = greengrasssdk.client('iot-data')
send_topic = 'cloudwatch/metric/put'

def create_request_with_all_fields():
    return  {
        "request": {
            "namespace": "Greengrass_CW_Connector",
            "metricData": {
                "metricName": "Count1",
                "dimensions": [
                    {
                        "name": "test",
                        "value": "test"
                    }
                ],
                "value": 1,
                "unit": "Seconds",
                "timestamp": time.time()
            }
        }
    }

def publish_basic_message():
    messageToPublish = create_request_with_all_fields()
    print("Message To Publish: ", messageToPublish)
    iot_client.publish(topic=send_topic,
        payload=json.dumps(messageToPublish))

publish_basic_message()

def lambda_handler(event, context):
    return
```

## Lisensi
<a name="cloudwatch-metrics-connector-license"></a>

Konektor CloudWatch Metrik mencakup perangkat lunak/lisensi pihak ketiga berikut:<a name="boto-3-licenses"></a>
+ [AWS SDK untuk Python (Boto3)](https://pypi.org/project/boto3/)/Apache License 2.0
+ [botocore](https://pypi.org/project/botocore/)/Apache License 2.0
+ [dateutil](https://pypi.org/project/python-dateutil/1.4/)/PSF License
+ [docutils](https://pypi.org/project/docutils/)/BSD License, Lisensi Publik Umum (GPL) GNU, Lisensi Dasar Perangkat Lunak Python, Domain Publik
+ [jmespath](https://pypi.org/project/jmespath/)/MIT License
+ [s3transfer](https://pypi.org/project/s3transfer/)/Apache License 2.0
+ [urllib3](https://pypi.org/project/urllib3/)/Lisensi MIT

Konektor ini dirilis di bawah [Perjanjian Lisensi Perangkat lunak core Greengrass](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Changelog
<a name="cloudwatch-metrics-connector-changelog"></a>

Tabel berikut menjelaskan perubahan dalam setiap versi konektor.


| Versi | Perubahan | 
| --- | --- | 
| 5 | Perbaiki untuk menambahkan dukungan untuk stempel waktu duplikat dalam data input. | 
| 4 | <a name="isolation-mode-changelog"></a>Ditambahkan parameter `IsolationMode` untuk mengonfigurasi mode kontainerisasi untuk konektor. | 
| 3 | <a name="upgrade-runtime-py3.7"></a>Memperbarui waktu aktif Lambda untuk Python 3.7, yang mengubah persyaratan waktu aktif. | 
| 2 | Perbaiki untuk mengurangi pencatatan berlebihan. | 
| 1 | Pelepasan awal.  | 

<a name="one-conn-version"></a>Sebuah grup Greengrass dapat berisi hanya satu versi konektor pada suatu waktu. Untuk informasi lebih lanjut tentang pembaruan versi konektor, lihat [Versi upgrade konektor](connectors.md#upgrade-connector-versions).

## Lihat juga
<a name="cloudwatch-metrics-connector-see-also"></a>
+ [Integrasikan dengan layanan dan protokol menggunakan konektor Greengrass](connectors.md)
+ [Memulai dengan konektor Greengrass (konsol)](connectors-console.md)
+ [Memulai dengan konektor Greengrass (CLI)](connectors-cli.md)
+ [Menggunakan CloudWatch metrik Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html) di * CloudWatch Panduan Pengguna Amazon*
+ [ PutMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricData.html)di *Referensi CloudWatch API Amazon*

# Konektor Pertahanan Perangkat
<a name="device-defender-connector"></a>

Pertahanan Perangkat [konektor](connectors.md) memberitahu administrator perubahan dalam keadaan perangkat core Greengrass. Ini dapat membantu mengidentifikasi perilaku yang tidak biasa yang mungkin menunjukkan perangkat yang dikompromikan.

Konektor ini membaca metrik sistem dari `/proc` direktori pada perangkat inti, dan kemudian menerbitkan metrik ke. AWS IoT Device Defender Untuk detail pelaporan metrik, lihat [Spesifikasi dokumen metrik perangkat](https://docs.aws.amazon.com/iot/latest/developerguide/device-defender-detect.html#DetectMetricsMessagesSpec) dalam *AWS IoT Panduan Developer*.

Konektor ini memiliki versi berikut.


| Versi | ARN | 
| --- | --- | 
| 3 | `arn:aws:greengrass:region::/connectors/DeviceDefender/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/DeviceDefender/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/DeviceDefender/versions/1` | 

Untuk informasi tentang perubahan versi, lihat [Changelog](#device-defender-connector-changelog).

## Persyaratan
<a name="device-defender-connector-req"></a>

Konektor ini memiliki persyaratan sebagai berikut:

------
#### [ Version 3 ]
+ <a name="conn-req-ggc-v1.9.3"></a>AWS IoT Greengrass Perangkat lunak inti v1.9.3 atau yang lebih baru.
+ <a name="conn-req-py-3.7-and-3.8"></a>[Python](https://www.python.org/) versi 3.7 atau 3.8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
**catatan**  <a name="use-runtime-py3.8"></a>
Untuk menggunakan Python 3.8, jalankan perintah berikut untuk membuat link simbolik dari folder instalasi default Python 3.7 ke binari Python 3.8 yang diinstal.  

  ```
  sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7
  ```
Ini mengonfigurasi perangkat Anda untuk memenuhi persyaratan Python untuk AWS IoT Greengrass.
+ <a name="conn-device-defender-req-itdd-config"></a>AWS IoT Device Defender dikonfigurasi untuk menggunakan fitur Deteksi untuk melacak pelanggaran. Untuk informasi lebih lanjut, lihat [Lacak](https://docs.aws.amazon.com/iot/latest/developerguide/device-defender-detect.html) dalam *AWS IoT Panduan Developer*.
+ <a name="conn-device-defender-req-proc-dir-resource"></a>Sebuah [sumber daya volume lokal](access-local-resources.md) dalam grup Greengrass yang menunjuk ke direktori `/proc` ini. Sumber daya harus menggunakan properti berikut:
  + Jalur sumber: `/proc`
  + Jalur tujuan: `/host_proc` (atau nilai yang cocok [Pola yang valid](#param-ProcDestinationPath))
  + AutoAddGroupOwner: `true`
+ <a name="conn-device-defender-req-psutil-v3"></a>Perpustakaan [psutil](https://pypi.org/project/psutil/) diinstal pada core Greengrass. Versi 5.7.0 adalah versi terkini yang disahkan untuk bekerja dengan konektor.
+ <a name="conn-device-defender-req-cbor-v3"></a>Perpustakaan [cbor](https://pypi.org/project/cbor/) diinstal pada core Greengrass. Versi 1.0.0 adalah versi terbaru yang diverifikasi untuk bekerja dengan konektor.

------
#### [ Versions 1 - 2 ]
+ <a name="conn-req-ggc-v1.7.0"></a>AWS IoT Greengrass Perangkat lunak inti v1.7 atau yang lebih baru.
+ [Python](https://www.python.org/) versi 2.7 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
+ <a name="conn-device-defender-req-itdd-config"></a>AWS IoT Device Defender dikonfigurasi untuk menggunakan fitur Deteksi untuk melacak pelanggaran. Untuk informasi lebih lanjut, lihat [Lacak](https://docs.aws.amazon.com/iot/latest/developerguide/device-defender-detect.html) dalam *AWS IoT Panduan Developer*.
+ <a name="conn-device-defender-req-proc-dir-resource"></a>Sebuah [sumber daya volume lokal](access-local-resources.md) dalam grup Greengrass yang menunjuk ke direktori `/proc` ini. Sumber daya harus menggunakan properti berikut:
  + Jalur sumber: `/proc`
  + Jalur tujuan: `/host_proc` (atau nilai yang cocok [Pola yang valid](#param-ProcDestinationPath))
  + AutoAddGroupOwner: `true`
+ <a name="conn-device-defender-req-psutil"></a>Perpustakaan [psutil](https://pypi.org/project/psutil/) diinstal pada core Greengrass.
+ <a name="conn-device-defender-req-cbor"></a>Perpustakaan [cbor](https://pypi.org/project/cbor/) diinstal pada core Greengrass.

------

## Parameter Konektor
<a name="device-defender-connector-param"></a>

Konektor ini menyediakan parameter berikut:

`SampleIntervalSeconds`  
Jumlah detik antara setiap siklus pengumpulan dan pelaporan metrik. Nilai minimum adalah 300 detik (5 menit).  
Nama tampilan di AWS IoT konsol: Interval **pelaporan metrik**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^[0-9]*(?:3[0-9][0-9]|[4-9][0-9]{2}|[1-9][0-9]{3,})$`

`ProcDestinationPath-ResourceId`  
ID dari Sumber daya volume `/proc` ini.  
Konektor ini diberikan akses baca-saja ke sumber daya.
Nama tampilan di AWS IoT konsol: **Sumber daya untuk direktori /proc**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `[a-zA-Z0-9_-]+`

`ProcDestinationPath`  <a name="param-ProcDestinationPath"></a>
Jalur tujuan dari sumber daya volume `/proc` ini.  
Nama tampilan di AWS IoT konsol: **Jalur tujuan dari sumber daya /proc**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `\/[a-zA-Z0-9_-]+`

### Buat Contoh Konektor (AWS CLI)
<a name="device-defender-connector-create"></a>

Perintah CLI berikut membuat `ConnectorDefinition` dengan versi awal yang berisi konektor Pertahanan Perangkat.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyDeviceDefenderConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/DeviceDefender/versions/3",
            "Parameters": {
                "SampleIntervalSeconds": "600",
                "ProcDestinationPath": "/host_proc",
                "ProcDestinationPath-ResourceId": "my-proc-resource"
            }
        }
    ]
}'
```

**catatan**  
Fungsi Lambda dalam konektor mempunyai siklus hidup yang [berumur panjang](lambda-functions.md#lambda-lifecycle) ini.

Di AWS IoT Greengrass konsol, Anda dapat menambahkan konektor dari halaman **Konektor** grup. Untuk informasi selengkapnya, lihat [Memulai dengan konektor Greengrass (konsol)](connectors-console.md).

## Data input
<a name="device-defender-connector-data-input"></a>

Konektor ini tidak menerima pesan MQTT sebagai data input.

## Data output
<a name="device-defender-connector-data-output"></a>

Konektor ini menerbitkan metrik keamanan AWS IoT Device Defender sebagai data keluaran.

<a name="topic-filter"></a>**Filter topik dalam langganan**  
`$aws/things/+/defender/metrics/json`  
Ini adalah sintaks topik yang AWS IoT Device Defender diharapkan. Konektor menggantikan `+` wildcard dengan nama perangkat (sebagai contoh, `$aws/things/thing-name/defender/metrics/json`).

**Contoh keluaran**  
Untuk detail pelaporan metrik, lihat [ Spesifikasi dokumen metrik perangkat](https://docs.aws.amazon.com/iot/latest/developerguide/device-defender-detect.html#DetectMetricsMessagesSpec) dalam *AWS IoT Panduan Developer*.  

```
{
    "header": {
        "report_id": 1529963534,
        "version": "1.0"
    },
    "metrics": {
        "listening_tcp_ports": {
            "ports": [
                {
                    "interface": "eth0",
                    "port": 24800
                },
                {
                    "interface": "eth0",
                    "port": 22
                },
                {
                    "interface": "eth0",
                    "port": 53
                }
            ],
            "total": 3
        },
        "listening_udp_ports": {
            "ports": [
                {
                    "interface": "eth0",
                    "port": 5353
                },
                {
                    "interface": "eth0",
                    "port": 67
                }
            ],
            "total": 2
        },
        "network_stats": {
            "bytes_in": 1157864729406,
            "bytes_out": 1170821865,
            "packets_in": 693092175031,
            "packets_out": 738917180
        },
        "tcp_connections": {
            "established_connections":{
                "connections": [
                    {
                    "local_interface": "eth0",
                    "local_port": 80,
                    "remote_addr": "192.168.0.1:8000"
                    },
                    {
                    "local_interface": "eth0",
                    "local_port": 80,
                    "remote_addr": "192.168.0.1:8000"
                    }
                ],
                "total": 2
            }
        }
    }
}
```

## Lisensi
<a name="device-defender-connector-license"></a>

Konektor ini dirilis di bawah [Perjanjian Lisensi Perangkat lunak core Greengrass](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Changelog
<a name="device-defender-connector-changelog"></a>

Tabel berikut menjelaskan perubahan dalam setiap versi konektor.


| Versi | Perubahan | 
| --- | --- | 
| 3 | <a name="upgrade-runtime-py3.7"></a>Memperbarui waktu aktif Lambda untuk Python 3.7, yang mengubah persyaratan waktu aktif. | 
| 2 | Perbaiki untuk mengurangi pencatatan berlebihan. | 
| 1 | Pelepasan awal.  | 

<a name="one-conn-version"></a>Sebuah grup Greengrass dapat berisi hanya satu versi konektor pada suatu waktu. Untuk informasi lebih lanjut tentang pembaruan versi konektor, lihat [Versi upgrade konektor](connectors.md#upgrade-connector-versions).

## Lihat juga
<a name="device-defender-connector-see-also"></a>
+ [Integrasikan dengan layanan dan protokol menggunakan konektor Greengrass](connectors.md)
+ [Memulai dengan konektor Greengrass (konsol)](connectors-console.md)
+ [Memulai dengan konektor Greengrass (CLI)](connectors-cli.md)
+ [Pertahanan Perangkat](https://docs.aws.amazon.com/iot/latest/developerguide/device-defender.html) dalam *AWS IoT Panduan Developer*

# Konektor deployment aplikasi docker
<a name="docker-app-connector"></a>

Konektor penerapan aplikasi Greengrass Docker memudahkan menjalankan gambar Docker Anda pada inti. AWS IoT Greengrass Konektor menggunakan Docker Compose untuk memulai aplikasi Docker multi-kontainer dari `docker-compose.yml` file. Khususnya, konektor menjalankan `docker-compose` perintah untuk mengelola kontainer Docker pada perangkat core tunggal. Untuk informasi lebih lanjut, lihat [Gambaran umum Docker Compose](https://docs.docker.com/compose/) dalam dokumentasi Docker. Konektor dapat mengakses gambar Docker dipertahankan dalam pendaftar kontainer Docker, seperti Amazon Elastic Container Registry (Amazon ECR), Docker Hub, dan Docker pribadi pendaftar terpercaya.

Setelah Anda menerapkan grup Greengrass, konektor menarik gambar terbaru dan mulai kontainer Docker. Ini menjalankan `docker-compose pull` dan `docker-compose up` perintah. Kemudian, konektor menerbitkan status perintah ke [topik MQTT output](#docker-app-connector-data-output). Ini juga log informasi status tentang menjalankan kontainer Docker. Ini memungkinkan Anda untuk memantau log aplikasi Anda di Amazon CloudWatch. Untuk informasi selengkapnya, lihat [Pemantauan dengan AWS IoT Greengrass log](greengrass-logs-overview.md). Konektor juga mulai kontainer Docker setiap kali Greengrass daemon restart. Jumlah kontainer Docker yang dapat berjalan pada core tergantung pada hardware Anda.

Kontainer Docker berjalan dalam luar domain Greengrass pada perangkat core, sehingga mereka tidak dapat mengakses inter-process communication (IPC) core. Namun, Anda dapat mengonfigurasi beberapa saluran komunikasi dengan komponen Greengrass, seperti fungsi Lambda lokal. Untuk informasi lebih lanjut, lihat [Berkomunikasi dengan kontainer Docker](#docker-app-connector-communicating).

Anda dapat menggunakan konektor untuk skenario seperti hosting web server atau server MySQL pada perangkat core Anda. Layanan lokal dalam aplikasi Docker Anda dapat berkomunikasi satu sama lain, proses lain dalam lingkungan lokal, dan layanan cloud. Sebagai contoh, Anda dapat menjalankan server web pada core yang mengirimkan permintaan dari fungsi Lambda ke layanan web dalam cloud.

Konektor ini berjalan dalam mode isolasi [Tanpa kontainer](lambda-group-config.md#no-container-mode) ini, sehingga Anda dapat men-deploy ke grup Greengrass yang berjalan tanpa kontainerisasi Docker.

Konektor ini memiliki versi berikut.


| Versi | ARN | 
| --- | --- | 
| 7 | `arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/7` | 
| 6 | `arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/6` | 
| 5 | `arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/5` | 
| 4 | `arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/4` | 
| 3 | `arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/1` | 

Untuk informasi tentang perubahan versi, lihat [Changelog](#docker-app-connector-changelog).

## Persyaratan
<a name="docker-app-connector-req"></a>

Konektor ini memiliki persyaratan sebagai berikut:
+ AWS IoT Greengrass Perangkat lunak inti v1.10 atau yang lebih baru.
**catatan**  
Konektor ini tidak didukung pada OpenWrt distribusi.
+ <a name="conn-req-py-3.7-and-3.8"></a>[Python](https://www.python.org/) versi 3.7 atau 3.8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
**catatan**  <a name="use-runtime-py3.8"></a>
Untuk menggunakan Python 3.8, jalankan perintah berikut untuk membuat link simbolik dari folder instalasi default Python 3.7 ke binari Python 3.8 yang diinstal.  

  ```
  sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7
  ```
Ini mengonfigurasi perangkat Anda untuk memenuhi persyaratan Python untuk AWS IoT Greengrass.
+ Minimal 36 MB RAM pada core Greengrass untuk konektor untuk memantau menjalankan kontainer Docker. Kebutuhan memori total tergantung pada jumlah kontainer Docker yang berjalan pada core.
+ [Mesin Docker](https://docs.docker.com/install/) 1.9.1 atau yang lebih baru dipasang pada core Greengrass. Versi 19.0.3 adalah versi terkini yang disahkan untuk berfungsi dengan konektor.

  Executable `docker` harus berada dalam direktori `/usr/bin` atau `/usr/local/bin` ini.
**penting**  
Kami sarankan Anda menginstal toko kredensial untuk mengamankan salinan lokal kredensial Docker Anda. Untuk informasi lebih lanjut, lihat [Catatan keamanan](#docker-app-connector-security).

  Untuk informasi tentang menginstal Docker pada distribusi Amazon Linux, lihat [Dasar-dasar Docker untuk Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html) dalam *Panduan Pengembang Layanan Kontainer Amazon Elastic*.
+ [Docker Compose](https://docs.docker.com/compose/install/) dipasang pada core Greengrass. Executable `docker-compose` harus berada dalam direktori `/usr/bin` atau `/usr/local/bin` ini.

  Versi Docker Compose berikut diverifikasi untuk bekerja dengan konektor.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/docker-app-connector.html)
+ Satu Docker Compose file (sebagai contoh, `docker-compose.yml`), dipertahankan dalam Amazon Simple Storage Service (Amazon S3). Format harus kompatibel dengan versi Docker Compose diinstal pada core. Anda harus menguji file sebelum Anda menggunakannya pada core Anda. Jika Anda mengedit file setelah Anda menerapkan grup Greengrass, Anda harus terapkan ulang grup untuk memperbarui salinan lokal Anda pada core.
+ Pengguna Linux dengan izin untuk memanggil daemon Docker lokal dan menulis ke direktori yang menyimpan salinan lokal file Compose Anda. Untuk informasi selengkapnya, lihat [Mengatur pengguna Docker pada core](#docker-app-connector-linux-user).
+ [Peran grup Greengrass](group-role.md) dikonfigurasi untuk mengizinkan `s3:GetObject` tindakan pada bucket S3 yang berisi file Compose Anda. Izin ini ditampilkan dalam kebijakan IAM contoh berikut.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "AllowAccessToComposeFileS3Bucket",
              "Action": [
                  "s3:GetObject",
                  "s3:GetObjectVersion"
              ],
              "Effect": "Allow",
              "Resource": "arn:aws:s3:::bucket-name/*" 
          }
      ]
  }
  ```

------
**catatan**  
Jika bucket S3 adalah versioning diaktifkan, maka peran harus dikonfigurasi untuk mengizinkan `s3:GetObjectVersion` tindakan juga. Untuk informasi selengkapnya, lihat [Menggunakan versi](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html) di *Panduan Pengguna Layanan Penyimpanan Sederhana Amazon*.

  <a name="set-up-group-role"></a>Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat [Mengelola peran grup Greengrass (konsol)](group-role.md#manage-group-role-console) atau [Mengelola peran grup Greengrass (CLI)](group-role.md#manage-group-role-cli).
+ <a name="docker-app-connector-ecr-perms"></a>Jika Docker Compose file Anda mereferensikan citra Docker dipertahankan dalam Amazon ECR, [peran grup Greengrass](group-role.md) dikonfigurasi untuk mengizinkan berikut ini:
  + `ecr:GetDownloadUrlForLayer` dan `ecr:BatchGetImage` tindakan pada repositori Amazon ECR yang berisi gambar Docker.
  + `ecr:GetAuthorizationToken` tindakan pada sumber daya Anda.

  Repositori harus sama Akun AWS dan Wilayah AWS sebagai konektor.
**penting**  
Izin dalam peran grup dapat diasumsikan oleh semua fungsi Lambda dan konektor dalam grup Greengrass. Untuk informasi selengkapnya, lihat [Catatan keamanan](#docker-app-connector-security).

  Izin-izin ini ditunjukkan pada kebijakan contoh berikut.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "AllowGetEcrRepositories",
              "Effect": "Allow",
              "Action": [
                  "ecr:GetDownloadUrlForLayer",
                  "ecr:BatchGetImage"
              ],
              "Resource": [
                  "arn:aws:ecr:us-east-1:123456789012:repository/repository-name"
              ]	
          },
          {
              "Sid": "AllowGetEcrAuthToken",
              "Effect": "Allow",
              "Action": "ecr:GetAuthorizationToken",
              "Resource": "*"
          }
      ]
  }
  ```

------

  Untuk informasi lebih lanjut, lihat [Contoh kebijakan repositori Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/RepositoryPolicyExamples.html) dalam *Panduan Pengguna Amazon ECR*.

  <a name="set-up-group-role"></a>Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat [Mengelola peran grup Greengrass (konsol)](group-role.md#manage-group-role-console) atau [Mengelola peran grup Greengrass (CLI)](group-role.md#manage-group-role-cli).
+ Jika file Docker Compose Anda mereferensikan gambar Docker dari [AWS Marketplace](https://aws.amazon.com/marketplace), konektor juga memiliki persyaratan sebagai berikut:
  + Anda harus berlangganan produk AWS Marketplace kontainer. Untuk informasi lebih lanjut, lihat [Menemukan dan berlangganan produk kontainer](https://docs.aws.amazon.com/marketplace/latest/buyerguide/buyer-finding-and-subscribing-to-container-products.html) dalam *AWS Marketplace Panduan Pelanggan*.
  + AWS IoT Greengrass harus dikonfigurasi untuk mendukung rahasia lokal, seperti yang dijelaskan dalam [Persyaratan Rahasia](secrets.md#secrets-reqs). Konektor menggunakan fitur ini hanya untuk mengambil rahasia Anda dari AWS Secrets Manager, bukan untuk menyimpannya.
  + Anda harus membuat rahasia di Secrets Manager untuk setiap AWS Marketplace registri yang menyimpan image Docker yang direferensikan dalam file Compose Anda. Untuk informasi selengkapnya, lihat [Mengakses gambar Docker dari repositori pribadi](#access-private-repositories).
+ Jika file Docker Compose Anda mereferensikan gambar Docker dari repositori pribadi dalam pendaftar selain Amazon ECR, seperti Docker Hub, konektor juga memiliki persyaratan sebagai berikut:
  + AWS IoT Greengrass harus dikonfigurasi untuk mendukung rahasia lokal, seperti yang dijelaskan dalam [Persyaratan Rahasia](secrets.md#secrets-reqs). Konektor menggunakan fitur ini hanya untuk mengambil rahasia Anda dari AWS Secrets Manager, bukan untuk menyimpannya.
  + Anda harus membuat rahasia dalam Secrets Manager untuk setiap repositori pribadi yang menyimpan gambar Docker direferensikan dalam file Compose Anda. Untuk informasi selengkapnya, lihat [Mengakses gambar Docker dari repositori pribadi](#access-private-repositories).
+ Docker daemon harus berjalan ketika Anda menerapkan grup Greengrass yang berisi konektor ini.

### Mengakses gambar Docker dari repositori pribadi
<a name="access-private-repositories"></a>

Jika Anda menggunakan kredensial untuk mengakses gambar Docker Anda, maka Anda harus mengizinkan konektor untuk mengaksesnya. Cara Anda melakukannya tergantung dalam mana gambar Docker berada.

Untuk gambar Docker dipertahankan Amazon ECR, Anda memberikan izin untuk mendapatkan token otorisasi Anda dalam peran grup Greengrass. Untuk informasi selengkapnya, lihat [Persyaratan](#docker-app-connector-req).

Untuk gambar Docker yang disimpan di repositori atau registri pribadi lainnya, Anda harus membuat rahasia AWS Secrets Manager untuk menyimpan informasi login Anda. Ini termasuk gambar Docker yang Anda berlangganan. AWS Marketplace Buat satu rahasia untuk setiap repositori. Jika Anda memperbarui rahasia Anda dalam Secrets Manager, perubahan menyebar ke core waktu berikutnya bahwa Anda men-deploy grup.

**catatan**  
Secrets Manager adalah layanan yang dapat Anda gunakan untuk aman menyimpan dan mengelola kredensial, kunci, dan rahasia lainnya dalam AWS Cloud. Untuk informasi lebih lanjut, lihat [Apa itu AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) dalam *AWS Secrets Manager User Guide*.

Setiap rahasia harus berisi kunci berikut:


| Key | Nilai | 
| --- | --- | 
| `username` | Nama pengguna yang digunakan untuk mengakses repositori atau registri. | 
| `password` | Kata sandi yang digunakan untuk mengakses repositori atau registri. | 
| `registryUrl` | Titik akhir registri. Ini harus cocok dengan URL registri yang sesuai dalam file Compose. | 

**catatan**  
 AWS IoT Greengrass Untuk memungkinkan mengakses rahasia secara default, nama rahasia harus dimulai dengan *greengrass* -. Jika tidak, peran layanan Greengrass Anda harus memberikan akses. Untuk informasi selengkapnya, lihat [Izinkan AWS IoT Greengrass untuk mendapatkan nilai rahasia](secrets.md#secrets-config-service-role).

**Untuk mendapatkan informasi login untuk gambar Docker dari AWS Marketplace**  

1. Dapatkan kata sandi Anda untuk gambar Docker dari AWS Marketplace dengan menggunakan `aws ecr get-login-password` perintah. Untuk informasi selengkapnya, lihat [get-login-password](https://docs.aws.amazon.com/cli/latest/reference/ecr/get-login.html) dalam *AWS CLI Referensi Perintah*.

   ```
   aws ecr get-login-password
   ```

1. Mengambil URL registri untuk gambar Docker. Buka situs AWS Marketplace web, dan buka halaman peluncuran produk kontainer. Di bawah **Citra Kontainer**, pilih **Melihat detail gambar kontainer** untuk menemukan nama pengguna dan URL registri.
Gunakan nama pengguna, kata sandi, dan URL registri yang diambil untuk membuat rahasia untuk setiap AWS Marketplace registri yang menyimpan gambar Docker yang direferensikan dalam file Compose Anda. 

**Untuk membuat rahasia (konsol)**  
Di AWS Secrets Manager konsol, pilih **Jenis rahasia lainnya**. Di bawah **Tentukan pasangan nilai kunci yang akan dipertahankan untuk rahasia ini**, tambahkan baris untuk `username`, `password`, dan `registryUrl`. Untuk informasi lebih lanjut, lihat [Membuat rahasia dasar](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html) dalam *AWS Secrets Manager Panduan Pengguna*.  

![\[Membuat rahasia dengan username, sandi, dan kunci registryUrl.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/connectors/secret-docker-trusted-registry.png)


**Untuk membuat rahasia (CLI)**  
Dalam AWS CLI, gunakan `create-secret` perintah Secrets Manager, seperti yang ditunjukkan pada contoh berikut. Untuk informasi lebih lanjut, lihat [buat-bucket](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/create-secret.html) dalam *AWS CLI Referensi Perintah*.  

```
aws secretsmanager create-secret --name greengrass-MySecret --secret-string [{"username":"Mary_Major"},{"password":"abc123xyz456"},{"registryUrl":"https://docker.io"}]
```

**penting**  
Ini adalah tanggung jawab Anda untuk mengamankan `DockerComposeFileDestinationPath` direktori yang menyimpan file Docker Compose dan kredensial untuk gambar Docker Anda dari repositori pribadi. Untuk informasi selengkapnya, lihat [Catatan keamanan](#docker-app-connector-security).

## Parameter
<a name="docker-app-connector-param"></a>

Konektor ini menyediakan parameter berikut:

------
#### [ Version 7 ]<a name="docker-app-connector-parameters-v1"></a>

`DockerComposeFileS3Bucket`  
Nama bucket S3 yang berisi file Docker Compose Anda. Saat membuat bucket, pastikan untuk mengikuti [aturan nama bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html) yang dijelaskan dalam *Panduan Pengguna Layanan Penyimpanan Sederhana Amazon*.  
Nama tampilan di AWS IoT konsol: **File Docker Compose** di S3  
Di konsol tersebut, properti **file Docker Compose dalam S3** menggabungkan parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key`, dan `DockerComposeFileS3Version` ini.
Wajib: `true`  
Jenis: `string`  
Pola yang valid `[a-zA-Z0-9\\-\\.]{3,63}`

`DockerComposeFileS3Key`  
Kunci objek untuk file Docker Compose Anda dalam Amazon S3. Untuk informasi selengkapnya, termasuk pedoman penamaan kunci [objek, lihat Kunci objek dan metadata](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html) di Panduan *Pengguna Layanan Penyimpanan Sederhana Amazon*.  
Di konsol tersebut, properti **file Docker Compose dalam S3** menggabungkan parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key`, dan `DockerComposeFileS3Version` ini.
Wajib: `true`  
Jenis: `string`  
Pola yang valid `.+`

`DockerComposeFileS3Version`  
Versi objek untuk file Docker Compose Anda dalam Amazon S3. Untuk informasi selengkapnya, termasuk pedoman penamaan kunci objek, lihat [Menggunakan versi](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html) di Panduan *Pengguna Layanan Penyimpanan Sederhana Amazon*.  
Di konsol tersebut, properti **file Docker Compose dalam S3** menggabungkan parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key`, dan `DockerComposeFileS3Version` ini.
Wajib: `false`  
Jenis: `string`  
Pola yang valid `.+`

`DockerComposeFileDestinationPath`  
Jalur absolut dari direktori lokal yang digunakan untuk menyimpan salinan file Docker Compose. Ini harus berupa direktori yang sudah ada. Pengguna yang ditentukan untuk `DockerUserId` harus memiliki izin untuk membuat file dalam direktori ini. Untuk informasi selengkapnya, lihat [Menyiapkan pengguna Docker di inti AWS IoT Greengrass](#docker-app-connector-linux-user).  
Direktori ini menyimpan file Docker Compose Anda dan kredensial untuk citra Docker Anda dari repositori privat. Ini adalah tanggung jawab Anda untuk mengamankan direktori ini. Untuk informasi selengkapnya, lihat [Catatan keamanan](#docker-app-connector-security).
Nama tampilan di AWS IoT konsol: **Jalur direktori untuk file Tulis lokal**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid `\/.*\/?`  
Contoh: `/home/username/myCompose`

`DockerUserId`  
UID dari pengguna Linux yang konektor berjalan sebagai. Pengguna ini harus milik grup Linux `docker` pada perangkat core dan memiliki izin menulis ke direktori `DockerComposeFileDestinationPath` ini. Untuk informasi selengkapnya, lihat [Mengatur pengguna Docker pada core](#docker-app-connector-linux-user).  
<a name="avoid-running-as-root"></a>Kami merekomendasikan bahwa Anda menghindari berjalan sebagai root kecuali benar-benar diperlukan. Jika Anda menentukan pengguna root, Anda harus mengizinkan fungsi Lambda untuk menjalankan sebagai root pada AWS IoT Greengrass core. Untuk informasi selengkapnya, lihat [Menjalankan fungsi Lambda sebagai root](lambda-group-config.md#lambda-running-as-root).
Nama tampilan di AWS IoT konsol: ID **pengguna Docker**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^[0-9]{1,5}$`

`AWSSecretsArnList`  
Amazon Resource Names (ARNs) dari rahasia AWS Secrets Manager yang berisi informasi login yang digunakan untuk mengakses gambar Docker Anda di repositori pribadi. Untuk informasi selengkapnya, lihat [Mengakses gambar Docker dari repositori pribadi](#access-private-repositories).  
Nama tampilan di AWS IoT konsol: **Kredensial untuk** repositori pribadi  
Diperlukan:`false`. Parameter ini diperlukan untuk mengakses citra Docker yang dipertahankan dalam repositori privat.  
Jenis: `array` dari `string`  
Pola yang valid: `[( ?,? ?"(arn:(aws(-[a-z]+)):secretsmanager:[a-z0-9-]+:[0-9]{12}:secret:([a-zA-Z0-9\]+/)[a-zA-Z0-9/_+=,.@-]+-[a-zA-Z0-9]+)")]`

`DockerContainerStatusLogFrequency`  
Frekuensi (dalam detik) saat konektor mencatat informasi status tentang kontainer Docker yang berjalan pada core. Default-nya adalah 300 detik (5 menit).  
Nama tampilan di AWS IoT konsol: **Frekuensi pencatatan**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^[1-9]{1}[0-9]{0,3}$`

`ForceDeploy`  
Mengindikasikan apakah akan memaksa deployment Docker jika gagal karena pembersihan yang tidak benar dari deployment terakhir. Nilai default-nya adalah `False`.  
Nama tampilan di AWS IoT konsol: **Paksa penerapan**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^(true|false)$`

`DockerPullBeforeUp`  
Menunjukkan apakah deployer harus dijalankan `docker-compose pull` sebelum menjalankan `docker-compose up` pull-down-up perilaku. Nilai default-nya adalah `True`.  
Nama tampilan di AWS IoT konsol: **Docker Pull Before Up**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^(true|false)$`

`StopContainersOnNewDeployment`  
Mengindikasikan apakah konektor harus menghentikan kontainer Docker Deployer managed docker ketika GGC dihentikan (GGC berhenti ketika grup baru diterapkan, atau kernel dimatikan). Nilai default-nya adalah `True`.  
Nama tampilan di AWS IoT konsol: **Docker berhenti pada penerapan baru**  
Kami menyarankan agar parameter ini diatur ke default `True` nilai. Parameter `False` menyebabkan container Docker Anda terus berjalan bahkan setelah menghentikan AWS IoT Greengrass inti atau memulai penerapan baru. Jika Anda mengatur parameter ini ke `False`, Anda harus memastikan bahwa kontainer Docker Anda dipertahankan seperlunya dalam hal `docker-compose` perubahan nama layanan atau penambahan.   
Untuk informasi lebih lanjut, lihat `docker-compose` dokumentasi file compose. 
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^(true|false)$`

`DockerOfflineMode`  
Mengindikasikan apakah akan menggunakan file Docker Compose yang ada ketika AWS IoT Greengrass mulai offline. Nilai default-nya adalah `False`.  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^(true|false)$`

------
#### [ Version 6 ]<a name="docker-app-connector-parameters-v1"></a>

`DockerComposeFileS3Bucket`  
Nama bucket S3 yang berisi file Docker Compose Anda. Saat membuat bucket, pastikan untuk mengikuti [aturan nama bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html) yang dijelaskan dalam *Panduan Pengguna Layanan Penyimpanan Sederhana Amazon*.  
Nama tampilan di AWS IoT konsol: **File Docker Compose** di S3  
Di konsol tersebut, properti **file Docker Compose dalam S3** menggabungkan parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key`, dan `DockerComposeFileS3Version` ini.
Wajib: `true`  
Jenis: `string`  
Pola yang valid `[a-zA-Z0-9\\-\\.]{3,63}`

`DockerComposeFileS3Key`  
Kunci objek untuk file Docker Compose Anda dalam Amazon S3. Untuk informasi selengkapnya, termasuk pedoman penamaan kunci [objek, lihat Kunci objek dan metadata](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html) di Panduan *Pengguna Layanan Penyimpanan Sederhana Amazon*.  
Di konsol tersebut, properti **file Docker Compose dalam S3** menggabungkan parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key`, dan `DockerComposeFileS3Version` ini.
Wajib: `true`  
Jenis: `string`  
Pola yang valid `.+`

`DockerComposeFileS3Version`  
Versi objek untuk file Docker Compose Anda dalam Amazon S3. Untuk informasi selengkapnya, termasuk pedoman penamaan kunci objek, lihat [Menggunakan versi](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html) di Panduan *Pengguna Layanan Penyimpanan Sederhana Amazon*.  
Di konsol tersebut, properti **file Docker Compose dalam S3** menggabungkan parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key`, dan `DockerComposeFileS3Version` ini.
Wajib: `false`  
Jenis: `string`  
Pola yang valid `.+`

`DockerComposeFileDestinationPath`  
Jalur absolut dari direktori lokal yang digunakan untuk menyimpan salinan file Docker Compose. Ini harus berupa direktori yang sudah ada. Pengguna yang ditentukan untuk `DockerUserId` harus memiliki izin untuk membuat file dalam direktori ini. Untuk informasi selengkapnya, lihat [Menyiapkan pengguna Docker di inti AWS IoT Greengrass](#docker-app-connector-linux-user).  
Direktori ini menyimpan file Docker Compose Anda dan kredensial untuk citra Docker Anda dari repositori privat. Ini adalah tanggung jawab Anda untuk mengamankan direktori ini. Untuk informasi selengkapnya, lihat [Catatan keamanan](#docker-app-connector-security).
Nama tampilan di AWS IoT konsol: **Jalur direktori untuk file Tulis lokal**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid `\/.*\/?`  
Contoh: `/home/username/myCompose`

`DockerUserId`  
UID dari pengguna Linux yang konektor berjalan sebagai. Pengguna ini harus milik grup Linux `docker` pada perangkat core dan memiliki izin menulis ke direktori `DockerComposeFileDestinationPath` ini. Untuk informasi selengkapnya, lihat [Mengatur pengguna Docker pada core](#docker-app-connector-linux-user).  
<a name="avoid-running-as-root"></a>Kami merekomendasikan bahwa Anda menghindari berjalan sebagai root kecuali benar-benar diperlukan. Jika Anda menentukan pengguna root, Anda harus mengizinkan fungsi Lambda untuk menjalankan sebagai root pada AWS IoT Greengrass core. Untuk informasi selengkapnya, lihat [Menjalankan fungsi Lambda sebagai root](lambda-group-config.md#lambda-running-as-root).
Nama tampilan di AWS IoT konsol: ID **pengguna Docker**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^[0-9]{1,5}$`

`AWSSecretsArnList`  
Amazon Resource Names (ARNs) dari rahasia AWS Secrets Manager yang berisi informasi login yang digunakan untuk mengakses gambar Docker Anda di repositori pribadi. Untuk informasi selengkapnya, lihat [Mengakses gambar Docker dari repositori pribadi](#access-private-repositories).  
Nama tampilan di AWS IoT konsol: **Kredensial untuk** repositori pribadi  
Diperlukan:`false`. Parameter ini diperlukan untuk mengakses citra Docker yang dipertahankan dalam repositori privat.  
Jenis: `array` dari `string`  
Pola yang valid: `[( ?,? ?"(arn:(aws(-[a-z]+)):secretsmanager:[a-z0-9-]+:[0-9]{12}:secret:([a-zA-Z0-9\]+/)[a-zA-Z0-9/_+=,.@-]+-[a-zA-Z0-9]+)")]`

`DockerContainerStatusLogFrequency`  
Frekuensi (dalam detik) saat konektor mencatat informasi status tentang kontainer Docker yang berjalan pada core. Default-nya adalah 300 detik (5 menit).  
Nama tampilan di AWS IoT konsol: **Frekuensi pencatatan**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^[1-9]{1}[0-9]{0,3}$`

`ForceDeploy`  
Mengindikasikan apakah akan memaksa deployment Docker jika gagal karena pembersihan yang tidak benar dari deployment terakhir. Nilai default-nya adalah `False`.  
Nama tampilan di AWS IoT konsol: **Paksa penerapan**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^(true|false)$`

`DockerPullBeforeUp`  
Menunjukkan apakah deployer harus dijalankan `docker-compose pull` sebelum menjalankan `docker-compose up` pull-down-up perilaku. Nilai default-nya adalah `True`.  
Nama tampilan di AWS IoT konsol: **Docker Pull Before Up**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^(true|false)$`

`StopContainersOnNewDeployment`  
Mengindikasikan apakah konektor harus menghentikan Docker Deployer dikelola kontainer docker ketika GGC dihentikan (ketika deployment grup baru dibuat, atau kernel dimatikan). Nilai default-nya adalah `True`.  
Nama tampilan di AWS IoT konsol: **Docker berhenti pada penerapan baru**  
Kami menyarankan agar parameter ini diatur ke default `True` nilai. Parameter `False` menyebabkan container Docker Anda terus berjalan bahkan setelah menghentikan AWS IoT Greengrass inti atau memulai penerapan baru. Jika Anda mengatur parameter ini ke `False`, Anda harus memastikan bahwa kontainer Docker Anda dipertahankan seperlunya dalam hal `docker-compose` perubahan nama layanan atau penambahan.   
 Untuk informasi lebih lanjut, lihat `docker-compose` dokumentasi file compose. 
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^(true|false)$`

------
#### [ Version 5 ]<a name="docker-app-connector-parameters-v1"></a>

`DockerComposeFileS3Bucket`  
Nama bucket S3 yang berisi file Docker Compose Anda. Saat membuat bucket, pastikan untuk mengikuti [aturan nama bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html) yang dijelaskan dalam *Panduan Pengguna Layanan Penyimpanan Sederhana Amazon*.  
Nama tampilan di AWS IoT konsol: **File Docker Compose** di S3  
Di konsol tersebut, properti **file Docker Compose dalam S3** menggabungkan parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key`, dan `DockerComposeFileS3Version` ini.
Wajib: `true`  
Jenis: `string`  
Pola yang valid `[a-zA-Z0-9\\-\\.]{3,63}`

`DockerComposeFileS3Key`  
Kunci objek untuk file Docker Compose Anda dalam Amazon S3. Untuk informasi selengkapnya, termasuk pedoman penamaan kunci [objek, lihat Kunci objek dan metadata](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html) di Panduan *Pengguna Layanan Penyimpanan Sederhana Amazon*.  
Di konsol tersebut, properti **file Docker Compose dalam S3** menggabungkan parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key`, dan `DockerComposeFileS3Version` ini.
Wajib: `true`  
Jenis: `string`  
Pola yang valid `.+`

`DockerComposeFileS3Version`  
Versi objek untuk file Docker Compose Anda dalam Amazon S3. Untuk informasi selengkapnya, termasuk pedoman penamaan kunci objek, lihat [Menggunakan versi](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html) di Panduan *Pengguna Layanan Penyimpanan Sederhana Amazon*.  
Di konsol tersebut, properti **file Docker Compose dalam S3** menggabungkan parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key`, dan `DockerComposeFileS3Version` ini.
Wajib: `false`  
Jenis: `string`  
Pola yang valid `.+`

`DockerComposeFileDestinationPath`  
Jalur absolut dari direktori lokal yang digunakan untuk menyimpan salinan file Docker Compose. Ini harus berupa direktori yang sudah ada. Pengguna yang ditentukan untuk `DockerUserId` harus memiliki izin untuk membuat file dalam direktori ini. Untuk informasi selengkapnya, lihat [Menyiapkan pengguna Docker di inti AWS IoT Greengrass](#docker-app-connector-linux-user).  
Direktori ini menyimpan file Docker Compose Anda dan kredensial untuk citra Docker Anda dari repositori privat. Ini adalah tanggung jawab Anda untuk mengamankan direktori ini. Untuk informasi selengkapnya, lihat [Catatan keamanan](#docker-app-connector-security).
Nama tampilan di AWS IoT konsol: **Jalur direktori untuk file Tulis lokal**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid `\/.*\/?`  
Contoh: `/home/username/myCompose`

`DockerUserId`  
UID dari pengguna Linux yang konektor berjalan sebagai. Pengguna ini harus milik grup Linux `docker` pada perangkat core dan memiliki izin menulis ke direktori `DockerComposeFileDestinationPath` ini. Untuk informasi selengkapnya, lihat [Mengatur pengguna Docker pada core](#docker-app-connector-linux-user).  
<a name="avoid-running-as-root"></a>Kami merekomendasikan bahwa Anda menghindari berjalan sebagai root kecuali benar-benar diperlukan. Jika Anda menentukan pengguna root, Anda harus mengizinkan fungsi Lambda untuk menjalankan sebagai root pada AWS IoT Greengrass core. Untuk informasi selengkapnya, lihat [Menjalankan fungsi Lambda sebagai root](lambda-group-config.md#lambda-running-as-root).
Nama tampilan di AWS IoT konsol: ID **pengguna Docker**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^[0-9]{1,5}$`

`AWSSecretsArnList`  
Amazon Resource Names (ARNs) dari rahasia AWS Secrets Manager yang berisi informasi login yang digunakan untuk mengakses gambar Docker Anda di repositori pribadi. Untuk informasi selengkapnya, lihat [Mengakses gambar Docker dari repositori pribadi](#access-private-repositories).  
Nama tampilan di AWS IoT konsol: **Kredensial untuk** repositori pribadi  
Diperlukan:`false`. Parameter ini diperlukan untuk mengakses citra Docker yang dipertahankan dalam repositori privat.  
Jenis: `array` dari `string`  
Pola yang valid: `[( ?,? ?"(arn:(aws(-[a-z]+)):secretsmanager:[a-z0-9-]+:[0-9]{12}:secret:([a-zA-Z0-9\]+/)[a-zA-Z0-9/_+=,.@-]+-[a-zA-Z0-9]+)")]`

`DockerContainerStatusLogFrequency`  
Frekuensi (dalam detik) saat konektor mencatat informasi status tentang kontainer Docker yang berjalan pada core. Default-nya adalah 300 detik (5 menit).  
Nama tampilan di AWS IoT konsol: **Frekuensi pencatatan**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^[1-9]{1}[0-9]{0,3}$`

`ForceDeploy`  
Mengindikasikan apakah akan memaksa deployment Docker jika gagal karena pembersihan yang tidak benar dari deployment terakhir. Nilai default-nya adalah `False`.  
Nama tampilan di AWS IoT konsol: **Paksa penerapan**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^(true|false)$`

`DockerPullBeforeUp`  
Menunjukkan apakah deployer harus dijalankan `docker-compose pull` sebelum menjalankan `docker-compose up` pull-down-up perilaku. Nilai default-nya adalah `True`.  
Nama tampilan di AWS IoT konsol: **Docker Pull Before Up**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^(true|false)$`

------
#### [ Versions 2 - 4 ]<a name="docker-app-connector-parameters-v1"></a>

`DockerComposeFileS3Bucket`  
Nama bucket S3 yang berisi file Docker Compose Anda. Saat membuat bucket, pastikan untuk mengikuti [aturan nama bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html) yang dijelaskan dalam *Panduan Pengguna Layanan Penyimpanan Sederhana Amazon*.  
Nama tampilan di AWS IoT konsol: **File Docker Compose** di S3  
Di konsol tersebut, properti **file Docker Compose dalam S3** menggabungkan parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key`, dan `DockerComposeFileS3Version` ini.
Wajib: `true`  
Jenis: `string`  
Pola yang valid `[a-zA-Z0-9\\-\\.]{3,63}`

`DockerComposeFileS3Key`  
Kunci objek untuk file Docker Compose Anda dalam Amazon S3. Untuk informasi selengkapnya, termasuk pedoman penamaan kunci [objek, lihat Kunci objek dan metadata](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html) di Panduan *Pengguna Layanan Penyimpanan Sederhana Amazon*.  
Di konsol tersebut, properti **file Docker Compose dalam S3** menggabungkan parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key`, dan `DockerComposeFileS3Version` ini.
Wajib: `true`  
Jenis: `string`  
Pola yang valid `.+`

`DockerComposeFileS3Version`  
Versi objek untuk file Docker Compose Anda dalam Amazon S3. Untuk informasi selengkapnya, termasuk pedoman penamaan kunci objek, lihat [Menggunakan versi](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html) di Panduan *Pengguna Layanan Penyimpanan Sederhana Amazon*.  
Di konsol tersebut, properti **file Docker Compose dalam S3** menggabungkan parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key`, dan `DockerComposeFileS3Version` ini.
Wajib: `false`  
Jenis: `string`  
Pola yang valid `.+`

`DockerComposeFileDestinationPath`  
Jalur absolut dari direktori lokal yang digunakan untuk menyimpan salinan file Docker Compose. Ini harus berupa direktori yang sudah ada. Pengguna yang ditentukan untuk `DockerUserId` harus memiliki izin untuk membuat file dalam direktori ini. Untuk informasi selengkapnya, lihat [Menyiapkan pengguna Docker di inti AWS IoT Greengrass](#docker-app-connector-linux-user).  
Direktori ini menyimpan file Docker Compose Anda dan kredensial untuk citra Docker Anda dari repositori privat. Ini adalah tanggung jawab Anda untuk mengamankan direktori ini. Untuk informasi selengkapnya, lihat [Catatan keamanan](#docker-app-connector-security).
Nama tampilan di AWS IoT konsol: **Jalur direktori untuk file Tulis lokal**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid `\/.*\/?`  
Contoh: `/home/username/myCompose`

`DockerUserId`  
UID dari pengguna Linux yang konektor berjalan sebagai. Pengguna ini harus milik grup Linux `docker` pada perangkat core dan memiliki izin menulis ke direktori `DockerComposeFileDestinationPath` ini. Untuk informasi selengkapnya, lihat [Mengatur pengguna Docker pada core](#docker-app-connector-linux-user).  
<a name="avoid-running-as-root"></a>Kami merekomendasikan bahwa Anda menghindari berjalan sebagai root kecuali benar-benar diperlukan. Jika Anda menentukan pengguna root, Anda harus mengizinkan fungsi Lambda untuk menjalankan sebagai root pada AWS IoT Greengrass core. Untuk informasi selengkapnya, lihat [Menjalankan fungsi Lambda sebagai root](lambda-group-config.md#lambda-running-as-root).
Nama tampilan di AWS IoT konsol: ID **pengguna Docker**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^[0-9]{1,5}$`

`AWSSecretsArnList`  
Amazon Resource Names (ARNs) dari rahasia AWS Secrets Manager yang berisi informasi login yang digunakan untuk mengakses gambar Docker Anda di repositori pribadi. Untuk informasi selengkapnya, lihat [Mengakses gambar Docker dari repositori pribadi](#access-private-repositories).  
Nama tampilan di AWS IoT konsol: **Kredensial untuk** repositori pribadi  
Diperlukan:`false`. Parameter ini diperlukan untuk mengakses citra Docker yang dipertahankan dalam repositori privat.  
Jenis: `array` dari `string`  
Pola yang valid: `[( ?,? ?"(arn:(aws(-[a-z]+)):secretsmanager:[a-z0-9-]+:[0-9]{12}:secret:([a-zA-Z0-9\]+/)[a-zA-Z0-9/_+=,.@-]+-[a-zA-Z0-9]+)")]`

`DockerContainerStatusLogFrequency`  
Frekuensi (dalam detik) saat konektor mencatat informasi status tentang kontainer Docker yang berjalan pada core. Default-nya adalah 300 detik (5 menit).  
Nama tampilan di AWS IoT konsol: **Frekuensi pencatatan**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^[1-9]{1}[0-9]{0,3}$`

`ForceDeploy`  
Mengindikasikan apakah akan memaksa deployment Docker jika gagal karena pembersihan yang tidak benar dari deployment terakhir. Nilai default-nya adalah `False`.  
Nama tampilan di AWS IoT konsol: **Paksa penerapan**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^(true|false)$`

------
#### [ Version 1 ]<a name="docker-app-connector-parameters-v1"></a>

`DockerComposeFileS3Bucket`  
Nama bucket S3 yang berisi file Docker Compose Anda. Saat membuat bucket, pastikan untuk mengikuti [aturan nama bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html) yang dijelaskan dalam *Panduan Pengguna Layanan Penyimpanan Sederhana Amazon*.  
Nama tampilan di AWS IoT konsol: **File Docker Compose** di S3  
Di konsol tersebut, properti **file Docker Compose dalam S3** menggabungkan parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key`, dan `DockerComposeFileS3Version` ini.
Wajib: `true`  
Jenis: `string`  
Pola yang valid `[a-zA-Z0-9\\-\\.]{3,63}`

`DockerComposeFileS3Key`  
Kunci objek untuk file Docker Compose Anda dalam Amazon S3. Untuk informasi selengkapnya, termasuk pedoman penamaan kunci [objek, lihat Kunci objek dan metadata](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html) di Panduan *Pengguna Layanan Penyimpanan Sederhana Amazon*.  
Di konsol tersebut, properti **file Docker Compose dalam S3** menggabungkan parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key`, dan `DockerComposeFileS3Version` ini.
Wajib: `true`  
Jenis: `string`  
Pola yang valid `.+`

`DockerComposeFileS3Version`  
Versi objek untuk file Docker Compose Anda dalam Amazon S3. Untuk informasi selengkapnya, termasuk pedoman penamaan kunci objek, lihat [Menggunakan versi](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html) di Panduan *Pengguna Layanan Penyimpanan Sederhana Amazon*.  
Di konsol tersebut, properti **file Docker Compose dalam S3** menggabungkan parameter `DockerComposeFileS3Bucket`, `DockerComposeFileS3Key`, dan `DockerComposeFileS3Version` ini.
Wajib: `false`  
Jenis: `string`  
Pola yang valid `.+`

`DockerComposeFileDestinationPath`  
Jalur absolut dari direktori lokal yang digunakan untuk menyimpan salinan file Docker Compose. Ini harus berupa direktori yang sudah ada. Pengguna yang ditentukan untuk `DockerUserId` harus memiliki izin untuk membuat file dalam direktori ini. Untuk informasi selengkapnya, lihat [Menyiapkan pengguna Docker di inti AWS IoT Greengrass](#docker-app-connector-linux-user).  
Direktori ini menyimpan file Docker Compose Anda dan kredensial untuk citra Docker Anda dari repositori privat. Ini adalah tanggung jawab Anda untuk mengamankan direktori ini. Untuk informasi selengkapnya, lihat [Catatan keamanan](#docker-app-connector-security).
Nama tampilan di AWS IoT konsol: **Jalur direktori untuk file Tulis lokal**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid `\/.*\/?`  
Contoh: `/home/username/myCompose`

`DockerUserId`  
UID dari pengguna Linux yang konektor berjalan sebagai. Pengguna ini harus milik grup Linux `docker` pada perangkat core dan memiliki izin menulis ke direktori `DockerComposeFileDestinationPath` ini. Untuk informasi selengkapnya, lihat [Mengatur pengguna Docker pada core](#docker-app-connector-linux-user).  
<a name="avoid-running-as-root"></a>Kami merekomendasikan bahwa Anda menghindari berjalan sebagai root kecuali benar-benar diperlukan. Jika Anda menentukan pengguna root, Anda harus mengizinkan fungsi Lambda untuk menjalankan sebagai root pada AWS IoT Greengrass core. Untuk informasi selengkapnya, lihat [Menjalankan fungsi Lambda sebagai root](lambda-group-config.md#lambda-running-as-root).
Nama tampilan di AWS IoT konsol: ID **pengguna Docker**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^[0-9]{1,5}$`

`AWSSecretsArnList`  
Amazon Resource Names (ARNs) dari rahasia AWS Secrets Manager yang berisi informasi login yang digunakan untuk mengakses gambar Docker Anda di repositori pribadi. Untuk informasi selengkapnya, lihat [Mengakses gambar Docker dari repositori pribadi](#access-private-repositories).  
Nama tampilan di AWS IoT konsol: **Kredensial untuk** repositori pribadi  
Diperlukan:`false`. Parameter ini diperlukan untuk mengakses citra Docker yang dipertahankan dalam repositori privat.  
Jenis: `array` dari `string`  
Pola yang valid: `[( ?,? ?"(arn:(aws(-[a-z]+)):secretsmanager:[a-z0-9-]+:[0-9]{12}:secret:([a-zA-Z0-9\]+/)[a-zA-Z0-9/_+=,.@-]+-[a-zA-Z0-9]+)")]`

`DockerContainerStatusLogFrequency`  
Frekuensi (dalam detik) saat konektor mencatat informasi status tentang kontainer Docker yang berjalan pada core. Default-nya adalah 300 detik (5 menit).  
Nama tampilan di AWS IoT konsol: **Frekuensi pencatatan**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^[1-9]{1}[0-9]{0,3}$`

------

### Buat Contoh Konektor (AWS CLI)
<a name="docker-app-connector-create"></a>

Perintah CLI berikut membuat `ConnectorDefinition` dengan versi awal yang berisi konektor deployment aplikasi Docker Greengrass.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyDockerAppplicationDeploymentConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/5",
            "Parameters": {
                "DockerComposeFileS3Bucket": "amzn-s3-demo-bucket",
                "DockerComposeFileS3Key": "production-docker-compose.yml",
                "DockerComposeFileS3Version": "123",
                "DockerComposeFileDestinationPath": "/home/username/myCompose",
                "DockerUserId": "1000",
                "AWSSecretsArnList": "[\"arn:aws:secretsmanager:region:account-id:secret:greengrass-secret1-hash\",\"arn:aws:secretsmanager:region:account-id:secret:greengrass-secret2-hash\"]",
                "DockerContainerStatusLogFrequency": "30",
                "ForceDeploy": "True",
                "DockerPullBeforeUp": "True"
            }
        }
    ]
}'
```

**catatan**  
Fungsi Lambda dalam konektor mempunyai siklus hidup yang [berumur panjang](lambda-functions.md#lambda-lifecycle) ini.

## Data input
<a name="docker-app-connector-data-input"></a>

Konektor ini tidak memerlukan atau menerima data input.

## Data output
<a name="docker-app-connector-data-output"></a>

Konektor ini menerbitkan status `docker-compose up` perintah sebagai data output.

<a name="topic-filter"></a>**Filter topik dalam langganan**  
`dockerapplicationdeploymentconnector/message/status`

**Contoh keluaran: Sukses**  

```
{
  "status":"success",
  "GreengrassDockerApplicationDeploymentStatus":"Successfully triggered docker-compose up", 
  "S3Bucket":"amzn-s3-demo-bucket",
  "ComposeFileName":"production-docker-compose.yml",
  "ComposeFileVersion":"123"
}
```

**Contoh keluaran: Kegagalan**  

```
{
  "status":"fail",
  "error_message":"description of error",
  "error":"InvalidParameter"
}
```
Jenis kesalahan dapat berupa `InvalidParameter` atau `InternalError`.

## Menyiapkan pengguna Docker di inti AWS IoT Greengrass
<a name="docker-app-connector-linux-user"></a>

Konektor deployment aplikasi Docker Greengrass berjalan sebagai pengguna yang Anda tentukan untuk `DockerUserId` parameter. Jika Anda tidak menentukan nilai, konektor berjalan sebagai `ggc_user`, yang merupakan default identitas akses Greengrass.

Untuk mengizinkan konektor berinteraksi dengan Docker daemon, pengguna Docker harus milik grup Linux `docker` pada core. Pengguna Docker juga harus memiliki izin menulis ke direktori `DockerComposeFileDestinationPath` ini. Di sinilah konektor menyimpan file lokal `docker-compose.yml` dan kredensial Docker Anda.

**catatan**  
Kami merekomendasikan Anda membuat pengguna Linux daripada menggunakan default `ggc_user`. Jika tidak, fungsi Lambda dalam grup Greengrass dapat mengakses file Compose dan kredensial Docker.
<a name="avoid-running-as-root"></a>Kami merekomendasikan bahwa Anda menghindari berjalan sebagai root kecuali benar-benar diperlukan. Jika Anda menentukan pengguna root, Anda harus mengizinkan fungsi Lambda untuk menjalankan sebagai root pada AWS IoT Greengrass core. Untuk informasi selengkapnya, lihat [Menjalankan fungsi Lambda sebagai root](lambda-group-config.md#lambda-running-as-root).

1. Buat pengguna. Anda dapat menjalankan perintah `useradd` dan termasuk opsional pada pilihan `-u` untuk menetapkan UID. Contoh:

   ```
   sudo useradd -u 1234 user-name
   ```

1. Tambahkan pengguna ke `docker` grup pada core. Contoh:

   ```
   sudo usermod -aG docker user-name
   ```

   Untuk informasi lebih lanjut, termasuk cara membuat `docker` grup, lihat [Mengelola Docker sebagai pengguna non-root](https://docs.docker.com/install/linux/linux-postinstall/#manage-docker-as-a-non-root-user) dalam dokumentasi Docker.

1. Berikan izin pengguna untuk menulis ke direktori yang ditentukan untuk `DockerComposeFileDestinationPath` parameter. Contoh:

   1. Untuk mengatur pengguna sebagai pemilik direktori. Contoh ini menggunakan UID dari langkah 1.

      ```
      chown 1234 docker-compose-file-destination-path
      ```

   1. Untuk memberikan izin baca dan tulis kepada pemilik.

      ```
      chmod 700 docker-compose-file-destination-path
      ```

      Untuk informasi lebih lanjut, lihat [Cara mengelola File dan Folder Izin dalam Linux](https://www.linux.com/tutorials/how-manage-file-and-folder-permissions-linux/) dalam dokumentasi Linux Foundation.

   1. Jika Anda tidak menetapkan UID ketika membuat pengguna, atau jika Anda menggunakan pengguna yang sudah ada, jalankan `id` perintah untuk mencari UID.

      ```
      id -u user-name
      ```

      Anda menggunakan UID untuk mengonfigurasi `DockerUserId` parameter untuk konektor.

## Informasi penggunaan
<a name="docker-app-connector-usage-info"></a>

Ketika Anda menggunakan konektor deployment aplikasi Docker Greengrass, Anda harus mengetahui informasi penggunaan spesifik implementasi berikut.
+ **Awalan tetap untuk nama proyek.** Konektor prepends `greengrassdockerapplicationdeployment` awalan untuk nama-nama kontainer Docker yang memulai. Konektor menggunakan awalan ini sebagai nama proyek dalam perintah `docker-compose` yang berjalan.
+ **Perilaku logging.** Konektor menulis informasi status dan informasi penyelesaian masalah ke file log. Anda dapat mengonfigurasi AWS IoT Greengrass untuk mengirim CloudWatch log ke Log dan menulis log secara lokal. Untuk informasi selengkapnya, lihat [Pencatatan untuk konektor](connectors.md#connectors-logging). Ini adalah jalur ke log lokal untuk konektor:

  ```
  /greengrass-root/ggc/var/log/user/region/aws/DockerApplicationDeployment.log
  ```

  Anda harus memiliki izin root untuk mengakses log lokal.
+ **Memperbarui gambar Docker.** Docker menyimpan gambar pada perangkat core. Jika Anda memperbarui gambar Docker dan ingin menerapkankan perubahan ke perangkat core, pastikan untuk mengubah tag untuk gambar dalam file Compose. Perubahan membawa efek setelah grup Greengrass diterapkan.
+ **Batas waktu 10 menit untuk operasi pembersihan.** Ketika Greengrass daemon berhenti selama restart, `docker-compose down` perintah dimulai. Semua kontainer Docker memiliki maksimum 10 menit setelah `docker-compose down` dimulai untuk melakukan operasi pembersihan apa pun. Jika pembersihan tidak selesai dalam 10 menit, Anda harus membersihkan kontainer yang tersisa secara manual. Untuk informasi lebih lanjut, lihat [docker rm](https://docs.docker.com/engine/reference/commandline/rm/) dalam dokumentasi Docker CLI.
+ **Menjalankan perintah Docker.** Untuk menyelesaikan masalah, Anda dapat menjalankan perintah Docker dalam jendela terminal pada perangkat core. Sebagai contoh, jalankan perintah berikut untuk melihat Docker kontainer yang dimulai oleh konektor:

  ```
  docker ps --filter name="greengrassdockerapplicationdeployment"
  ```
+ **ID sumber daya cadangan.** Konektor menggunakan `DOCKER_DEPLOYER_SECRET_RESOURCE_RESERVED_ID_index` ID untuk sumber daya Greengrass me buat dalam grup Greengrass. Sumber daya IDs harus unik dalam grup, jadi jangan tetapkan ID sumber daya yang mungkin bertentangan dengan ID sumber daya cadangan ini.
+ **Mode offline.** Ketika Anda mengatur `DockerOfflineMode` parameter konfigurasi untuk `True`, maka konektor Docker dapat beroperasi dalam *mode offline*. Hal ini dapat terjadi ketika deployment grup Greengrass restart sementara perangkat core offline, dan konektor tidak dapat membuat koneksi ke Amazon S3 atau Amazon ECR untuk mengambil file Docker Compose.

  Dengan mode offline diaktifkan, konektor akan mencoba mengunduh file Compose, dan menjalankan `docker login` perintah seperti itu akan untuk restart normal. Jika upaya ini gagal, maka konektor mencari dipertahankan secara lokal file Compose dalam folder yang ditentukan menggunakan `DockerComposeFileDestinationPath` parameter. Jika ada file Compose lokal, maka konektor mengikuti urutan normal `docker-compose` perintah dan menarik dari gambar lokal. Jika menulis file atau gambar lokal tidak ada, maka konektor gagal. Perilaku parameter `ForceDeploy` dan `StopContainersOnNewDeployment` tetap sama dalam mode offline. 

## Berkomunikasi dengan kontainer Docker
<a name="docker-app-connector-communicating"></a>

AWS IoT Greengrass mendukung saluran komunikasi berikut antara komponen Greengrass dan wadah Docker:
+ Fungsi Greengrass Lambda dapat menggunakan APIs REST untuk berkomunikasi dengan proses dalam wadah Docker. Anda dapat mengatur server dalam kontainer Docker yang membuka port. Fungsi Lambda dapat berkomunikasi dengan kontainer dalam port ini.
+ Proses dalam kontainer Docker dapat bertukar pesan MQTT melalui broker pesan Greengrass lokal. Anda dapat mengatur wadah Docker sebagai perangkat klien di grup Greengrass dan kemudian membuat langganan untuk memungkinkan penampung berkomunikasi dengan fungsi Greengrass Lambda, perangkat klien, dan konektor lain dalam grup, atau dengan dan layanan bayangan lokal. AWS IoT Untuk informasi selengkapnya, lihat [Mengonfigurasi komunikasi MQTT dengan kontainer Docker](#docker-app-connector-mqtt-communication).
+ Fungsi Greengrass Lambda dapat memperbarui file bersama untuk menyampaikan informasi ke kontainer Docker. Anda dapat menggunakan file menulis untuk mengikat mount jalur file bersama untuk kontainer Docker.

### Mengonfigurasi komunikasi MQTT dengan kontainer Docker
<a name="docker-app-connector-mqtt-communication"></a>

Anda dapat mengonfigurasi wadah Docker sebagai perangkat klien dan menambahkannya ke grup Greengrass. Kemudian, Anda dapat membuat langganan yang mengizinkan komunikasi MQTT antara kontainer Docker dan komponen Greengrass atau AWS IoT. Dalam prosedur berikut, Anda membuat langganan yang mengizinkan perangkat kontainer Docker untuk menerima bayangan pembaruan pesan dari layanan bayangan lokal. Anda dapat mengikuti pola ini untuk membuat langganan lainnya.

**catatan**  
Prosedur ini mengasumsikan bahwa Anda telah membuat grup Greengrass dan core Greengrass (v1.10 atau yang lebih baru). Untuk informasi tentang pembuatan grup dan core Greengrass, lihat [Memulai dengan AWS IoT Greengrass](gg-gs.md).

**Untuk mengonfigurasi wadah Docker sebagai perangkat klien dan menambahkannya ke grup Greengrass**

1. Buat folder pada perangkat inti untuk menyimpan sertifikat dan kunci yang digunakan untuk mengautentikasi perangkat Greengrass.

   Jalur file harus dipasang pada kontainer Docker Anda ingin memulai. Potongan berikut menunjukkan cara me-mount jalur file dalam file Compose Anda. Dalam contoh ini, *path-to-device-certs* mewakili folder yang Anda buat di langkah ini.

   ```
   version: '3.3'
   services:
     myService:
       image: user-name/repo:image-tag
       volumes:
         -  /path-to-device-certs/:/path-accessible-in-container
   ```

1. <a name="console-gg-groups"></a>**Di panel navigasi AWS IoT konsol, di bawah **Kelola**, perluas perangkat **Greengrass**, lalu pilih Grup (V1).**

1. <a name="group-choose-target-group"></a>Pilih grup target.

1. <a name="gg-group-add-device"></a>Pada halaman konfigurasi grup, pilih **Perangkat klien**, lalu pilih **Associate**.

1. <a name="gg-group-create-device"></a>Di **Mengaitkan perangkat klien dengan modal grup ini**, pilih **Buat AWS IoT hal baru**.

   Halaman **Buat hal-hal** terbuka di tab baru.

1. <a name="gg-group-create-single-thing"></a>Pada halaman **Create things**, pilih **Create single thing**, lalu pilih **Next**.

1. Pada halaman **Tentukan properti benda**, masukkan nama untuk perangkat, lalu pilih **Berikutnya**.

1. <a name="gg-group-create-device-configure-certificate"></a>Pada halaman **Konfigurasi sertifikat perangkat**, pilih **Berikutnya**.

1. <a name="gg-group-create-device-attach-policy"></a>Pada halaman **Lampirkan kebijakan ke sertifikat**, lakukan salah satu hal berikut:
   + Pilih kebijakan yang ada yang memberikan izin yang diperlukan perangkat klien, lalu pilih **Buat** sesuatu.

     Modal terbuka di mana Anda dapat mengunduh sertifikat dan kunci yang digunakan perangkat untuk terhubung ke AWS Cloud dan inti.
   + Buat dan lampirkan kebijakan baru yang memberikan izin perangkat klien. Lakukan hal-hal berikut:

     1. Pilih **Buat kebijakan**.

        Halaman **Buat kebijakan** terbuka di tab baru.

     1. Pada halaman **Buat kebijakan**, lakukan hal berikut:

        1. Untuk **nama Kebijakan**, masukkan nama yang menjelaskan kebijakan, seperti**GreengrassV1ClientDevicePolicy**.

        1. Pada tab **Pernyataan kebijakan**, di bawah **Dokumen kebijakan**, pilih **JSON**.

        1. Masukkan dokumen kebijakan berikut. Kebijakan ini memungkinkan perangkat klien untuk menemukan inti Greengrass dan berkomunikasi pada semua topik MQTT. Untuk informasi tentang cara membatasi akses kebijakan ini, lihat[Otentikasi dan otorisasi perangkat untuk AWS IoT Greengrass](device-auth.md).

------
#### [ JSON ]

****  

           ```
           {
             "Version":"2012-10-17",		 	 	 
             "Statement": [
               {
                 "Effect": "Allow",
                 "Action": [
                   "iot:Publish",
                   "iot:Subscribe",
                   "iot:Connect",
                   "iot:Receive"
                 ],
                 "Resource": [
                   "*"
                 ]
               },
               {
                 "Effect": "Allow",
                 "Action": [
                   "greengrass:*"
                 ],
                 "Resource": [
                   "*"
                 ]
               }
             ]
           }
           ```

------

        1. Pilih **Buat** untuk membuat kebijakan.

     1. Kembali ke tab browser dengan halaman **Lampirkan kebijakan ke sertifikat** terbuka. Lakukan hal-hal berikut:

        1. Dalam daftar **Kebijakan**, pilih kebijakan yang Anda buat, seperti **GreengrassV1ClientDevicePolicy**.

           Jika kebijakan tidak terlihat, pilih tombol refresh.

        1. Pilih **Buat sesuatu**.

           Modal terbuka di mana Anda dapat mengunduh sertifikat dan kunci yang digunakan perangkat untuk terhubung ke AWS Cloud dan inti.

1. <a name="gg-group-create-device-download-certs"></a>Dalam modal **Unduh sertifikat dan kunci**, unduh sertifikat perangkat.
**penting**  
Sebelum Anda memilih **Selesai**, unduh sumber daya keamanan.

   Lakukan hal-hal berikut:

   1. Untuk **sertifikat Perangkat**, pilih **Unduh** untuk mengunduh sertifikat perangkat.

   1. Untuk **file kunci Publik**, pilih **Unduh** untuk mengunduh kunci publik untuk sertifikat.

   1. Untuk **file kunci pribadi**, pilih **Unduh** untuk mengunduh file kunci pribadi untuk sertifikat.

   1. Review [Autentikasi Server](https://docs.aws.amazon.com/iot/latest/developerguide/server-authentication.html) dalam *AWS IoT Panduan Developer* dan memilih root sertifikat CA yang sesuai. Kami merekomendasikan Anda menggunakan Amazon Trust Services (ATS) titik akhir dan ATS root sertifikat CA. Di bawah **sertifikat Root CA**, pilih **Unduh** untuk sertifikat CA root.

   1. Pilih **Selesai**.

   Catat ID sertifikat yang umum dalam nama file untuk sertifikat dan kunci perangkat. Anda membutuhkannya nanti.

1. Salin sertifikat dan kunci ke folder yang Anda buat di langkah 1.

Selanjutnya, buat langganan dalam grup. Untuk contoh ini, Anda buat langganan mengizinkan perangkat kontainer Docker untuk menerima pesan MQTT dari layanan bayangan lokal.

**catatan**  
Ukuran maksimum dokumen bayangan adalah 8 KB. Untuk informasi lebih lanjut, lihat [AWS IoT kuota](https://docs.aws.amazon.com/iot/latest/developerguide/limits-iot.html) dalam *AWS IoT Panduan Developer*.

**Untuk membuat langganan yang mengizinkan perangkat kontainer Docker menerima pesan MQTT dari layanan bayangan lokal**

1. <a name="shared-subscriptions-addsubscription"></a>Pada halaman konfigurasi grup, pilih tab **Langganan**, lalu pilih **Tambah Langganan**.

1. Pada halaman **Pilih sumber dan target Anda** ini, konfigurasikan sumber dan target, sebagai berikut:

   1. Untuk **Pilihan sumber**, pilih **Layanan**, dan kemudian pilih **Layanan Bayangan Lokal**.

   1. Untuk **Pilih target**, pilih **Perangkat**, kemudian pilih perangkat Anda.

   1. Pilih **Berikutnya**.

   1. Pada halaman **Filter data Anda dengan topik** ini, untuk **Filter topik**, pilih **\$1aws/things/*MyDockerDevice*/shadow/update/accepted**, kemudian pilih **Selanjutnya**. Ganti *MyDockerDevice* dengan nama perangkat yang Anda buat sebelumnya.

   1. Pilih **Selesai**.

Sertakan potongan kode berikut dalam gambar Docker yang Anda referensi dalam file Compose. Ini adalah kode perangkat Greengrass. Juga, tambahkan kode dalam kontainer Docker Anda memulai perangkat Greengrass dalam kontainer. Ini dapat berjalan sebagai proses terpisah dalam gambar atau dalam thread terpisah.

```
import os
import sys
import time
import uuid

from AWSIoTPythonSDK.core.greengrass.discovery.providers import DiscoveryInfoProvider
from AWSIoTPythonSDK.exception.AWSIoTExceptions import DiscoveryInvalidRequestException
from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient

# Replace thingName with the name you registered for the Docker device.
thingName = "MyDockerDevice"
clientId = thingName

# Replace host with the IoT endpoint for your &AWS-account;.
host = "myPrefix.iot.region.amazonaws.com"

# Replace topic with the topic where the Docker container subscribes.
topic = "$aws/things/MyDockerDevice/shadow/update/accepted"

# Replace these paths based on the download location of the certificates for the Docker container.
rootCAPath = "/path-accessible-in-container/AmazonRootCA1.pem"
certificatePath = "/path-accessible-in-container/certId-certificate.pem.crt"
privateKeyPath = "/path-accessible-in-container/certId-private.pem.key"


# Discover Greengrass cores.
discoveryInfoProvider = DiscoveryInfoProvider()
discoveryInfoProvider.configureEndpoint(host)
discoveryInfoProvider.configureCredentials(rootCAPath, certificatePath, privateKeyPath)
discoveryInfoProvider.configureTimeout(10)  # 10 seconds.

GROUP_CA_PATH = "./groupCA/"
MQTT_QOS = 1

discovered = False
groupCA = None
coreInfo = None

try:
    # Get discovery info from AWS IoT.
    discoveryInfo = discoveryInfoProvider.discover(thingName)
    caList = discoveryInfo.getAllCas()
    coreList = discoveryInfo.getAllCores()

    # Use first discovery result.
    groupId, ca = caList[0]
    coreInfo = coreList[0]

    # Save the group CA to a local file.
    groupCA = GROUP_CA_PATH + groupId + "_CA_" + str(uuid.uuid4()) + ".crt"
    if not os.path.exists(GROUP_CA_PATH):
        os.makedirs(GROUP_CA_PATH)
    groupCAFile = open(groupCA, "w")
    groupCAFile.write(ca)
    groupCAFile.close()
    discovered = True
except DiscoveryInvalidRequestException as e:
    print("Invalid discovery request detected!")
    print("Type: %s" % str(type(e)))
    print("Error message: %s" % str(e))
    print("Stopping...")
except BaseException as e:
    print("Error in discovery!")
    print("Type: %s" % str(type(e)))
    print("Error message: %s" % str(e))
    print("Stopping...")

myAWSIoTMQTTClient = AWSIoTMQTTClient(clientId)
myAWSIoTMQTTClient.configureCredentials(groupCA, privateKeyPath, certificatePath)


# Try to connect to the Greengrass core.
connected = False
for connectivityInfo in coreInfo.connectivityInfoList:
    currentHost = connectivityInfo.host
    currentPort = connectivityInfo.port
    myAWSIoTMQTTClient.configureEndpoint(currentHost, currentPort)
    try:
        myAWSIoTMQTTClient.connect()
        connected = True
    except BaseException as e:
        print("Error in connect!")
        print("Type: %s" % str(type(e)))
        print("Error message: %s" % str(e))
    if connected:
        break

if not connected:
    print("Cannot connect to core %s. Exiting..." % coreInfo.coreThingArn)
    sys.exit(-2)

# Handle the MQTT message received from GGShadowService.
def customCallback(client, userdata, message):
    print("Received an MQTT message")
    print(message)

# Subscribe to the MQTT topic.
myAWSIoTMQTTClient.subscribe(topic, MQTT_QOS, customCallback)

# Keep the process alive to listen for messages.
while True:
    time.sleep(1)
```

## Catatan keamanan
<a name="docker-app-connector-security"></a>

Ketika Anda menggunakan konektor deployment aplikasi Docker Greengrass, perhatikan pertimbangan keamanan berikut.

  
**Penyimpanan lokal file Docker Compose**  
Konektor menyimpan salinan file Compose Anda dalam direktori yang ditentukan untuk `DockerComposeFileDestinationPath` parameter.  
Ini adalah tanggung jawab Anda untuk mengamankan direktori ini. Anda harus menggunakan izin sistem file untuk membatasi akses ke direktori.

  
**Penyimpanan lokal kredenal Docker**  
Jika citra Docker Anda dipertahankan dalam repositori privat, konektor menyimpan kredensial Docker Anda dalam direktori yang ditentukan untuk `DockerComposeFileDestinationPath` Parameter.  
Ini adalah tanggung jawab Anda untuk mengamankan kredensial ini. Sebagai contoh, Anda harus menggunakan [pembantu-kredensial](https://docs.docker.com/engine/reference/commandline/login/#credentials-store) pada perangkat core ketika Anda menginstal Docker Engine.

  
**Instal Docker Engine dari sumber tepercaya**  
Anda bertanggung jawab untuk menginstal Docker Engine dari sumber terpercaya. Konektor ini menggunakan Docker daemon pada perangkat core untuk mengakses aset Docker Anda dan mengelola kontainer Docker.

  
**Lingkup izin peran grup Greengrass**  
Izin yang Anda tambahkan dalam peran grup Greengrass dapat diasumsikan oleh semua fungsi Lambda dan konektor dalam grup Greengrass. Konektor ini memerlukan akses ke file Docker Anda yang dipertahankan dalam bucket S3. Hal ini juga membutuhkan akses ke token otorisasi Amazon ECR Anda jika gambar Docker Anda dipertahankan dalam repositori pribadi dalam Amazon ECR.

## Lisensi
<a name="docker-app-connector-license"></a>

Konektor deployment aplikasi Docker Greengrass termasuk perangkat lunak/lisensi pihak ketiga berikut:<a name="boto-3-licenses"></a>
+ [AWS SDK untuk Python (Boto3)](https://pypi.org/project/boto3/)/Lisensi 2.0 Apache
+ [botocore](https://pypi.org/project/botocore/)/Apache License 2.0
+ [dateutil](https://pypi.org/project/python-dateutil/1.4/)/PSF License
+ [docutils](https://pypi.org/project/docutils/)/BSD License, Lisensi Publik Umum (GPL) GNU, Lisensi Dasar Perangkat Lunak Python, Domain Publik
+ [jmespath](https://pypi.org/project/jmespath/)/MIT License
+ [s3transfer](https://pypi.org/project/s3transfer/)/Apache License 2.0
+ [urllib3](https://pypi.org/project/urllib3/)/Lisensi MIT

Konektor ini dirilis di bawah [Perjanjian Lisensi Perangkat lunak core Greengrass](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Changelog
<a name="docker-app-connector-changelog"></a>

Tabel berikut menjelaskan perubahan dalam setiap versi konektor.


|  Versi  |  Perubahan  | 
| --- | --- | 
|  7  |  Ditambahkan `DockerOfflineMode` untuk menggunakan file Docker Compose yang ada saat AWS IoT Greengrass mulai offline. Diimplementasikan coba lagi untuk `docker login` perintah. Support untuk 32-bit UIDs.   | 
|  6  |  Ditambahkan `StopContainersOnNewDeployment` untuk menimpa kontainer membersihkan ketika deployment baru dibuat atau GC berhenti. Mekanisme shutdown dan start up yang lebih aman. YAML validation bug fix.  | 
|  5  |  Gambar ditarik sebelum menjalankan `docker-compose down`.  | 
|  4  |  Menambahkan pull-before-up perilaku untuk memperbarui gambar Docker.  | 
|  3  |  Diperbaiki masalah dengan menemukan variabel lingkungan.  | 
|  2  |  Ditambahkan `ForceDeploy` parameter.  | 
|  1  |  Pelepasan awal.  | 

<a name="one-conn-version"></a>Sebuah grup Greengrass dapat berisi hanya satu versi konektor pada suatu waktu. Untuk informasi lebih lanjut tentang pembaruan versi konektor, lihat [Versi upgrade konektor](connectors.md#upgrade-connector-versions).

## Lihat juga
<a name="docker-app-connector-see-also"></a>
+ [Integrasikan dengan layanan dan protokol menggunakan konektor Greengrass](connectors.md)
+ [Memulai dengan konektor Greengrass (konsol)](connectors-console.md)
+ [Memulai dengan konektor Greengrass (CLI)](connectors-cli.md)

# Konektor IoT Analytics
<a name="iot-analytics-connector"></a>

**Awas**  <a name="connectors-extended-life-phase-warning"></a>
Konektor ini telah pindah ke *fase umur yang diperpanjang*, dan AWS IoT Greengrass tidak akan merilis pembaruan yang menyediakan fitur, penyempurnaan pada fitur yang ada, patch keamanan, atau perbaikan bug. Untuk informasi selengkapnya, lihat [AWS IoT Greengrass Version 1 kebijakan pemeliharaan](maintenance-policy.md).

Konektor IoT Analytics mengirimkan data AWS IoT Analytics perangkat lokal ke. [Anda dapat menggunakan konektor ini sebagai hub pusat untuk mengumpulkan data dari sensor pada perangkat inti Greengrass dan dari perangkat klien yang terhubung.](what-is-gg.md#greengrass-devices) Konektor mengirimkan data ke AWS IoT Analytics saluran di saat ini Akun AWS dan Wilayah. Hal ini dapat mengirim data ke saluran tujuan default dan saluran yang secara dinamis ditentukan.

**catatan**  
AWS IoT Analytics adalah layanan yang dikelola sepenuhnya yang memungkinkan Anda mengumpulkan, menyimpan, memproses, dan menanyakan data IoT. Pada tahun AWS IoT Analytics, data dapat dianalisis dan diproses lebih lanjut. Sebagai contoh, ini dapat digunakan untuk melatih model ML untuk memantau kondisi mesin atau untuk menguji strategi pemodelan baru. Untuk informasi lebih lanjut, lihat [Apa itu AWS IoT Analytics?](https://docs.aws.amazon.com/iotanalytics/latest/userguide/welcome.html) dalam *AWS IoT Analytics User Guide*.

Konektor menerima data yang diformat dan tidak diformat pada [input topik MQTT](#iot-analytics-connector-data-input). Mendukung dua topik yang telah ditetapkan dalam mana saluran tujuan ditentukan inline. Hal ini juga dapat menerima pesan pada topik yang ditetapkan pelanggan yang [dikonfigurasi dalam langganan](connectors.md#connectors-inputs-outputs). Ini dapat digunakan untuk merutekan pesan dari perangkat klien yang mempublikasikan ke topik tetap atau menangani data yang tidak terstruktur atau bergantung pada tumpukan dari perangkat yang dibatasi sumber daya.

Konektor ini menggunakan [https://docs.aws.amazon.com/iotanalytics/latest/userguide/api.html#cli-iotanalytics-batchputmessage](https://docs.aws.amazon.com/iotanalytics/latest/userguide/api.html#cli-iotanalytics-batchputmessage)API untuk mengirim data (sebagai string yang disandikan JSON atau base64) ke saluran tujuan. Konektor dapat memproses data mentah ke dalam format yang sesuai dengan persyaratan API. Konektor buffer pesan input dalam per-channel antrian dan asynchronously memproses batch. Ini menyediakan parameter yang mengizinkan Anda untuk mengontrol antrian dan perilaku batching dan membatasi konsumsi memori. Sebagai contoh, Anda dapat mengonfigurasi ukuran antrian maksimum, interval batch, ukuran memori, dan jumlah saluran aktif.

Konektor ini memiliki versi berikut.


| Versi | ARN | 
| --- | --- | 
| 4 | `arn:aws:greengrass:region::/connectors/IoTAnalytics/versions/4` | 
| 3 | `arn:aws:greengrass:region::/connectors/IoTAnalytics/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/IoTAnalytics/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/IoTAnalytics/versions/1` | 

Untuk informasi tentang perubahan versi, lihat [Changelog](#iot-analytics-connector-changelog).

## Persyaratan
<a name="iot-analytics-connector-req"></a>

Konektor ini memiliki persyaratan sebagai berikut:

------
#### [ Version 3 - 4 ]
+ <a name="conn-req-ggc-v1.9.3"></a>AWS IoT Greengrass Perangkat lunak inti v1.9.3 atau yang lebih baru.
+ <a name="conn-req-py-3.7-and-3.8"></a>[Python](https://www.python.org/) versi 3.7 atau 3.8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
**catatan**  <a name="use-runtime-py3.8"></a>
Untuk menggunakan Python 3.8, jalankan perintah berikut untuk membuat link simbolik dari folder instalasi default Python 3.7 ke binari Python 3.8 yang diinstal.  

  ```
  sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7
  ```
Ini mengonfigurasi perangkat Anda untuk memenuhi persyaratan Python untuk AWS IoT Greengrass.
+ <a name="conn-iot-analytics-req-regions"></a>Konektor ini hanya dapat digunakan dalam Wilayah Amazon Web Services di mana kedua [AWS IoT Greengrass](https://docs.aws.amazon.com/general/latest/gr/greengrass.html) dan [AWS IoT Analytics](https://docs.aws.amazon.com/general/latest/gr/iot-analytics.html) didukung.
+ <a name="conn-iot-analytics-req-ita-config"></a>Semua AWS IoT Analytics entitas dan alur kerja terkait dibuat dan dikonfigurasi. Entitas termasuk saluran, alur, penyimpanan data, dan set data. Untuk informasi lebih lanjut, lihat [AWS CLI](https://docs.aws.amazon.com/iotanalytics/latest/userguide/getting-started.html) atau prosedur [konsol](https://docs.aws.amazon.com/iotanalytics/latest/userguide/quickstart.html) dalam *AWS IoT Analytics Panduan Pengguna*.
**catatan**  
 AWS IoT Analytics Saluran tujuan harus menggunakan akun yang sama dan Wilayah AWS sama dengan konektor ini.
+ <a name="conn-iot-analytics-req-iam-policy"></a>Pada [Peran grup Greengrass](group-role.md) dikonfigurasi untuk mengizinkan `iotanalytics:BatchPutMessage` tindakan dalam saluran tujuan, seperti yang ditunjukkan dalam kebijakan IAM berikut. Saluran harus dalam arus Akun AWS dan Wilayah.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "Stmt1528133056761",
              "Action": [
                  "iotanalytics:BatchPutMessage"
              ],
              "Effect": "Allow",
              "Resource": [
              "arn:aws:iotanalytics:us-east-1:123456789012:channel/channel_1_name",
      "arn:aws:iotanalytics:us-east-1:123456789012:channel/channel_2_name"
              ]
          }
      ]
  }
  ```

------

  <a name="set-up-group-role"></a>Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat [Mengelola peran grup Greengrass (konsol)](group-role.md#manage-group-role-console) atau [Mengelola peran grup Greengrass (CLI)](group-role.md#manage-group-role-cli).

------
#### [ Versions 1 - 2 ]
+ <a name="conn-req-ggc-v1.7.0"></a>AWS IoT Greengrass Perangkat lunak inti v1.7 atau yang lebih baru.
+ [Python](https://www.python.org/) versi 2.7 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
+ <a name="conn-iot-analytics-req-regions"></a>Konektor ini hanya dapat digunakan dalam Wilayah Amazon Web Services di mana kedua [AWS IoT Greengrass](https://docs.aws.amazon.com/general/latest/gr/greengrass.html) dan [AWS IoT Analytics](https://docs.aws.amazon.com/general/latest/gr/iot-analytics.html) didukung.
+ <a name="conn-iot-analytics-req-ita-config"></a>Semua AWS IoT Analytics entitas dan alur kerja terkait dibuat dan dikonfigurasi. Entitas termasuk saluran, alur, penyimpanan data, dan set data. Untuk informasi lebih lanjut, lihat [AWS CLI](https://docs.aws.amazon.com/iotanalytics/latest/userguide/getting-started.html) atau prosedur [konsol](https://docs.aws.amazon.com/iotanalytics/latest/userguide/quickstart.html) dalam *AWS IoT Analytics Panduan Pengguna*.
**catatan**  
 AWS IoT Analytics Saluran tujuan harus menggunakan akun yang sama dan Wilayah AWS sama dengan konektor ini.
+ <a name="conn-iot-analytics-req-iam-policy"></a>Pada [Peran grup Greengrass](group-role.md) dikonfigurasi untuk mengizinkan `iotanalytics:BatchPutMessage` tindakan dalam saluran tujuan, seperti yang ditunjukkan dalam kebijakan IAM berikut. Saluran harus dalam arus Akun AWS dan Wilayah.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "Stmt1528133056761",
              "Action": [
                  "iotanalytics:BatchPutMessage"
              ],
              "Effect": "Allow",
              "Resource": [
              "arn:aws:iotanalytics:us-east-1:123456789012:channel/channel_1_name",
      "arn:aws:iotanalytics:us-east-1:123456789012:channel/channel_2_name"
              ]
          }
      ]
  }
  ```

------

  <a name="set-up-group-role"></a>Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat [Mengelola peran grup Greengrass (konsol)](group-role.md#manage-group-role-console) atau [Mengelola peran grup Greengrass (CLI)](group-role.md#manage-group-role-cli).

------

## Parameter
<a name="iot-analytics-connector-param"></a>

`MemorySize`  
Jumlah memori (dalam KB) untuk mengalokasikan ke konektor ini.  
Nama tampilan di AWS IoT konsol: **Ukuran memori**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^[0-9]+$`

`PublishRegion`  
Di Wilayah AWS mana AWS IoT Analytics saluran Anda dibuat. Gunakan Wilayah yang sama dengan konektornya.  
Ini juga harus sesuai dengan Wilayah untuk saluran yang ditentukan dalam [peran grup](#iot-analytics-connector-req).
Nama tampilan di AWS IoT konsol: **Publikasikan wilayah**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^$|([a-z]{2}-[a-z]+-\\d{1})`

`PublishInterval`  
Interval (dalam detik) untuk menerbitkan sekumpulan data yang diterima ke AWS IoT Analytics.  
Nama tampilan di AWS IoT konsol: **Publikasikan interval**  
Wajib: `false`  
Jenis: `string`  
Nilai default: `1`  
Pola yang valid: `$|^[0-9]+$`

`IotAnalyticsMaxActiveChannels`  
Jumlah maksimum AWS IoT Analytics saluran yang secara aktif diperhatikan oleh konektor. Ini harus lebih besar dari 0, dan setidaknya sama dengan jumlah saluran yang Anda harapkan konektor untuk menerbitkankan ke pada waktu tertentu.  
Anda dapat menggunakan parameter ini untuk membatasi konsumsi memori dengan membatasi jumlah antrian yang konektor dapat mengelola pada waktu tertentu. Antrian dihapus ketika semua pesan antrian dikirim.  
Nama tampilan di AWS IoT konsol: **Jumlah maksimum saluran aktif**  
Wajib: `false`  
Jenis: `string`  
Nilai default: `50`  
Pola yang valid: `^$|^[1-9][0-9]*$`

`IotAnalyticsQueueDropBehavior`  
Perilaku untuk batal pesan dari antrian saluran ketika antrian penuh.  
Nama tampilan di AWS IoT konsol: Perilaku **penurunan antrian**  
Wajib: `false`  
Jenis: `string`  
Nilai yang valid: `DROP_NEWEST` or `DROP_OLDEST`  
Nilai default: `DROP_NEWEST`  
Pola yang valid: `^DROP_NEWEST$|^DROP_OLDEST$`

`IotAnalyticsQueueSizePerChannel`  
Jumlah maksimum pesan untuk mempertahankan dalam memori (per saluran) sebelum pesan dikirim atau dibatalkan. Ini harus lebih besar dari 0.  
Nama tampilan di AWS IoT konsol: **Ukuran antrian maksimum per saluran**  
Wajib: `false`  
Jenis: `string`  
Nilai default: `2048`  
Pola yang valid: `^$|^[1-9][0-9]*$`

`IotAnalyticsBatchSizePerChannel`  
Jumlah maksimum pesan untuk dikirim ke AWS IoT Analytics saluran dalam satu permintaan batch. Ini harus lebih besar dari 0.  
Nama tampilan di AWS IoT konsol: **Jumlah maksimum pesan ke batch per saluran**  
Wajib: `false`  
Jenis: `string`  
Nilai default: `5`  
Pola yang valid: `^$|^[1-9][0-9]*$`

`IotAnalyticsDefaultChannelName`  
Nama AWS IoT Analytics saluran yang digunakan konektor ini untuk pesan yang dikirim ke topik input yang ditentukan pelanggan.  
Nama tampilan di AWS IoT konsol: **Nama saluran default**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^[a-zA-Z0-9_]$`

`IsolationMode`  <a name="IsolationMode"></a>
Mode [kontainerisasi](connectors.md#connector-containerization) untuk konektor ini. Defaultnya adalah`GreengrassContainer`, yang berarti konektor berjalan di lingkungan runtime yang terisolasi di dalam AWS IoT Greengrass container.  
Pengaturan kontainerisasi default untuk grup tidak berlaku untuk konektor.
Nama tampilan di AWS IoT konsol: **Mode isolasi kontainer**  
Wajib: `false`  
Jenis: `string`  
Nilai yang valid: `GreengrassContainer` or `NoContainer`  
Pola yang valid: `^NoContainer$|^GreengrassContainer$`

### Buat Contoh Konektor (AWS CLI)
<a name="iot-analytics-connector-create"></a>

Perintah CLI berikut membuat `ConnectorDefinition` dengan versi awal yang berisi konektor IoT Analytics.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyIoTAnalyticsApplication",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/IoTAnalytics/versions/3",
            "Parameters": {
                "MemorySize": "65535",
                "PublishRegion": "us-west-1",
                "PublishInterval": "2",
                "IotAnalyticsMaxActiveChannels": "25",
                "IotAnalyticsQueueDropBehavior": "DROP_OLDEST",
                "IotAnalyticsQueueSizePerChannel": "1028",
                "IotAnalyticsBatchSizePerChannel": "5",
                "IotAnalyticsDefaultChannelName": "my_channel"
            }
        }
    ]
}'
```

**catatan**  
Fungsi Lambda dalam konektor mempunyai siklus hidup yang [berumur panjang](lambda-functions.md#lambda-lifecycle) ini.

Di AWS IoT Greengrass konsol, Anda dapat menambahkan konektor dari halaman **Konektor** grup. Untuk informasi selengkapnya, lihat [Memulai dengan konektor Greengrass (konsol)](connectors-console.md).

## Data input
<a name="iot-analytics-connector-data-input"></a>

Konektor ini menerima data pada topik MQTT yang telah ditetapkan dan ditetapkan pelanggan. Penerbit dapat berupa perangkat klien, fungsi Lambda, atau konektor lainnya.

Topik yang telah ditetapkan  
Konektor mendukung berikut dua terstruktur MQTT topik yang mengizinkan penerbit untuk menentukan nama saluran inline.  
+ Sebuah [pesan yang telah diformat](#iot-analytics-connector-data-input-json) pada `iotanalytics/channels/+/messages/put` topik. Data IoT dalam pesan input ini harus diformat sebagai JSON atau base64-encoded string.
+ Pesan yang belum diformat pada `iotanalytics/channels/+/messages/binary/put` topik. Pesan input yang diterima pada topik ini diperlakukan sebagai data biner dan dapat berisi jenis data.

  Untuk menerbitkankan ke topik yang telah ditetapkan, ganti `+` wildcard dengan nama saluran. Contoh:

  ```
  iotanalytics/channels/my_channel/messages/put
  ```

Topik yang ditetapkan pelanggan  
Konektor mendukung `#` topik sintaks, yang mengizinkan untuk menerima pesan input pada setiap topik MQTT yang Anda konfigurasi dalam langganan. Kami menyarankan Anda menentukan jalur topik alih-alih hanya menggunakan `#` wildcard dalam langganan Anda. Pesan ini dikirim ke saluran default yang Anda tentukan untuk konektor.  
Pesan input pada topik yang ditetapkan pelanggan diperlakukan sebagai data biner. Mereka dapat menggunakan format pesan dan dapat berisi jenis data. Anda dapat menggunakan topik yang ditetapkan pelanggan untuk merutekan pesan dari perangkat yang diterbitkankan ke topik tetap. Anda juga dapat menggunakannya untuk menerima data input dari perangkat klien yang tidak dapat memproses data menjadi pesan yang diformat untuk dikirim ke konektor.  
Untuk informasi lebih lanjut tentang langganan dan topik MQTT, lihat [Input dan output](connectors.md#connectors-inputs-outputs).

Peran grup harus mengizinkan tindakan `iotanalytics:BatchPutMessage` pada semua bucket tujuan. Untuk informasi selengkapnya, lihat [Persyaratan](#iot-analytics-connector-req).

**Filter topik:** `iotanalytics/channels/+/messages/put`  <a name="iot-analytics-connector-data-input-json"></a>
Gunakan topik ini untuk mengirim pesan yang diformat ke konektor dan secara dinamis menentukan saluran tujuan. Topik ini juga mengizinkan Anda untuk menentukan ID yang dikembalikan dalam output respon. Konektor memverifikasi IDs yang unik untuk setiap pesan dalam `BatchPutMessage` permintaan keluar yang dikirimkannya. AWS IoT Analytics Pesan yang memiliki ID duplikat dibatalkan.  
Data input yang dikirim ke topik ini harus menggunakan format pesan berikut.    
**Properti pesan**    
`request`  
Data untuk mengirim ke saluran tertentu.  
Wajib: `true`  
Jenis: `object` yang mencakup properti berikut:    
`message`  
Perangkat atau sensor data sebagai JSON atau base64-encoded string.  
Wajib: `true`  
Jenis: `string`  
`id`  
ID arbitrer untuk permintaan. Properti ini digunakan untuk memetakan permintaan input untuk respons output. Ketika ditentukan, `id` properti dalam objek respon diatur ke nilai ini. Jika Anda menghilangkan properti ini, konektor menghasilkan ID.  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `.*`  
**Contoh masukan**  

```
{
    "request": {
        "message" : "{\"temp\":23.33}"
    },
    "id" : "req123"
}
```

**Filter topik:** `iotanalytics/channels/+/messages/binary/put`  
Gunakan topik ini untuk mengirim pesan yang tidak diformat ke konektor dan secara dinamis menentukan saluran tujuan.  
Data konektor tidak mengurai pesan input yang diterima pada topik ini. Ini memperlakukan mereka sebagai data biner. Sebelum mengirim pesan ke AWS IoT Analytics, konektor mengkodekan dan memformatnya agar sesuai dengan persyaratan `BatchPutMessage` API:  
+ Konektor base64-encodes data mentah dan termasuk muatan dikodekan dalam permintaan `BatchPutMessage` outbound.
+ Konektor menghasilkan dan menetapkan ID untuk setiap pesan input.
**catatan**  
Output respons konektor tidak menyertakan korelasi ID untuk pesan input ini.  
**Properti pesan**  
Tidak ada.

**Filter topik:** `#`  
Gunakan topik ini untuk mengirim format pesan apa pun ke saluran default. Ini sangat berguna ketika perangkat klien Anda mempublikasikan ke topik tetap atau ketika Anda ingin mengirim data ke saluran default dari perangkat klien yang tidak dapat memproses data ke dalam [format pesan yang didukung](#iot-analytics-connector-data-input-json) konektor.  
Anda menentukan sintaks topik dalam langganan yang Anda buat untuk menyambung konektor ini ke sumber data. Kami menyarankan Anda menentukan jalur topik alih-alih hanya menggunakan `#` wildcard dalam langganan Anda.  
Data konektor tidak mengurai pesan yang diterbitkan untuk topik input ini. Semua pesan input diperlakukan sebagai data biner. Sebelum mengirim pesan ke AWS IoT Analytics, konektor mengkodekan dan memformatnya agar sesuai dengan persyaratan `BatchPutMessage` API:  
+ Konektor base64-encodes data mentah dan termasuk muatan dikodekan dalam permintaan `BatchPutMessage` outbound.
+ Konektor menghasilkan dan menetapkan ID untuk setiap pesan input.
**catatan**  
Output respons konektor tidak menyertakan korelasi ID untuk pesan input ini.  
**Properti pesan**  
Tidak ada.

## Data output
<a name="iot-analytics-connector-data-output"></a>

Konektor ini menerbitkan informasi status sebagai data output pada topik MQTT. Informasi ini berisi respons yang dikembalikan oleh AWS IoT Analytics untuk setiap pesan masukan yang diterima dan dikirim AWS IoT Analytics.

<a name="topic-filter"></a>**Filter topik dalam langganan**  
`iotanalytics/messages/put/status`

**Contoh keluaran: Sukses**  

```
{
    "response" : {
        "status" : "success"
    },
    "id" : "req123"
}
```

**Contoh keluaran: Kegagalan**  

```
{
    "response" : {
        "status" : "fail",
        "error" : "ResourceNotFoundException",
        "error_message" : "A resource with the specified name could not be found."
    },
    "id" : "req123"
}
```
Jika konektor mendeteksi kesalahan yang dapat diulang (sebagai contoh, kesalahan koneksi), konektor mengulang lagi publikasinya dalam batch berikutnya. Backoff eksponensial ditangani oleh SDK. AWS Permintaan dengan kesalahan retryable ditambahkan kembali ke antrean saluran untuk penerbitan lebih lanjut sesuai dengan `IotAnalyticsQueueDropBehavior` parameter.

## Contoh Penggunaan
<a name="iot-analytics-connector-usage"></a>

<a name="connectors-setup-intro"></a>Gunakan langkah-langkah tingkat tinggi berikut untuk mengatur contoh fungsi Lambda Python 3.7 yang dapat Anda gunakan untuk mencoba konektor.

**catatan**  <a name="connectors-setup-get-started-topics"></a>
Jika Anda menggunakan waktu aktif Python lainnya, Anda dapat membuat symlink dari Python3.x ke Python 3.7.
Topik [Memulai dengan konektor (konsol)](connectors-console.md) dan [Memulai dengan konektor (CLI)](connectors-cli.md) berisi langkah-langkah terperinci yang menunjukkan cara mengonfigurasi dan men-deploy contoh konektor Notifikasi Twilio.

1. Pastikan Anda memenuhi [persyaratan](#iot-analytics-connector-req) untuk konektor.

   <a name="set-up-group-role"></a>Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat [Mengelola peran grup Greengrass (konsol)](group-role.md#manage-group-role-console) atau [Mengelola peran grup Greengrass (CLI)](group-role.md#manage-group-role-cli).

1. <a name="connectors-setup-function"></a>Buat dan terbitkan fungsi Lambda yang mengirimkan data input ke konektor.

   Simpan [kode contoh](#iot-analytics-connector-usage-example) sebagai file PY. <a name="connectors-setup-function-sdk"></a>Unduh dan unzip [AWS IoT Greengrass Core SDK for Python](lambda-functions.md#lambda-sdks-core). Kemudian, buat paket zip yang berisi file PY dan folder `greengrasssdk` dalam tingkat root. Paket zip ini adalah paket deployment yang Anda unggah ke AWS Lambda.

   <a name="connectors-setup-function-publish"></a>Setelah Anda membuat fungsi Lambda Python 3.7, terbitkankan versi fungsi dan buat alias.

1. Konfigurasikan grup Greengrass Anda.

   1. <a name="connectors-setup-gg-function"></a>Tambahkan fungsi Lambda dengan aliasnya (direkomendasikan). Konfigurasikan siklus hidup Lambda sebagai berumur panjang (atau `"Pinned": true` dalam CLI).

   1. Tambahkan konektor dan konfigurasikan [parameter](#iot-analytics-connector-param).

   1. Tambahkan langganan yang mengizinkan konektor untuk menerima [data input](#iot-analytics-connector-data-input) dan mengirim [data output](#iot-analytics-connector-data-output) pada filter topik yang didukung.
      + <a name="connectors-setup-subscription-input-data"></a>Atur fungsi Lambda sebagai sumber, konektor sebagai target, dan gunakan filter topik input yang mendukung.
      + <a name="connectors-setup-subscription-output-data"></a>Atur konektor sebagai sumber, AWS IoT Core sebagai target, dan gunakan filter topik input yang mendukung. Anda menggunakan langganan ini untuk melihat pesan status di AWS IoT konsol.

1. <a name="connectors-setup-deploy-group"></a>Men-deploy grup.

1. <a name="connectors-setup-test-sub"></a>Di AWS IoT konsol, pada halaman **Uji**, berlangganan topik data keluaran untuk melihat pesan status dari konektor. Contoh fungsi Lambda yang berumur panjang dan mulai mengirim pesan segera setelah grup dalam-deploy.

   Setelah selesai pengujian, Anda dapat mengatur siklus hidup Lambda ke sesuai permintaan (atau `"Pinned": false` dalam CLI) dan men-deploy grup. Ini menghentikan fungsi dari mengirim pesan.

### Contoh
<a name="iot-analytics-connector-usage-example"></a>

Contoh fungsi Lambda berikut mengirimkan pesan input ke konektor.

```
import greengrasssdk
import time
import json
 
iot_client = greengrasssdk.client('iot-data')
send_topic = 'iotanalytics/channels/my_channel/messages/put'
 
def create_request_with_all_fields():
    return  {
        "request": {
            "message" : "{\"temp\":23.33}"
        },
        "id" : "req_123"
    }
 
def publish_basic_message():
    messageToPublish = create_request_with_all_fields()
    print("Message To Publish: ", messageToPublish)
    iot_client.publish(topic=send_topic,
        payload=json.dumps(messageToPublish))
 
publish_basic_message()
 
def lambda_handler(event, context):
    return
```

## Batas
<a name="iot-analytics-connector-limits"></a>

Konektor ini tunduk pada batas berikut.
+ Semua batasan yang diberlakukan oleh AWS SDK untuk Python (Boto3) untuk AWS IoT Analytics [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/iotanalytics.html#IoTAnalytics.Client.batch_put_message](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/iotanalytics.html#IoTAnalytics.Client.batch_put_message)tindakan.
+ Semua kuota yang diberlakukan oleh AWS IoT Analytics [ BatchPutMessage](https://docs.aws.amazon.com/iotanalytics/latest/userguide/api.html#cli-iotanalytics-batchputmessage)API. Untuk informasi selengkapnya, lihat [Service Quotas](https://docs.aws.amazon.com/general/latest/gr/iot-analytics.html#limits_iot_analytics) AWS IoT Analytics di bagian. *Referensi Umum AWS*
  + 100.000 pesan per detik per saluran.
  + 100 pesan per batch.
  + 128 KB per pesan.

  API ini menggunakan nama saluran (bukan saluran ARNs), jadi pengiriman data ke saluran lintas wilayah atau lintas akun tidak didukung.
+ Semua kuota yang diberlakukan oleh AWS IoT Greengrass Core. Untuk informasi selengkapnya, lihat [Service Quotas](https://docs.aws.amazon.com/general/latest/gr/greengrass.html#limits_greengrass) untuk AWS IoT Greengrass inti dalam. *Referensi Umum AWS*

  Kuota berikut mungkin berlaku secara khusus:
  + Ukuran maksimum pesan yang dikirim oleh perangkat adalah 128 KB.
  + Ukuran antrian pesan maksimum dalam router core Greengrass adalah 2,5 MB.
  + Panjang maksimum string topik adalah 256 byte karakter yang dikodekan UTF-8.

## Lisensi
<a name="iot-analytics-connector-license"></a>

Konektor IoT Analytics mencakup perangkat lunak/lisensi pihak ketiga berikut ini:<a name="boto-3-licenses"></a>
+ [AWS SDK untuk Python (Boto3)](https://pypi.org/project/boto3/)/Lisensi 2.0 Apache
+ [botocore](https://pypi.org/project/botocore/)/Apache License 2.0
+ [dateutil](https://pypi.org/project/python-dateutil/1.4/)/PSF License
+ [docutils](https://pypi.org/project/docutils/)/BSD License, Lisensi Publik Umum (GPL) GNU, Lisensi Dasar Perangkat Lunak Python, Domain Publik
+ [jmespath](https://pypi.org/project/jmespath/)/MIT License
+ [s3transfer](https://pypi.org/project/s3transfer/)/Apache License 2.0
+ [urllib3](https://pypi.org/project/urllib3/)/Lisensi MIT

Konektor ini dirilis di bawah [Perjanjian Lisensi Perangkat lunak core Greengrass](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Changelog
<a name="iot-analytics-connector-changelog"></a>

Tabel berikut menjelaskan perubahan dalam setiap versi konektor.


| Versi | Perubahan | 
| --- | --- | 
| 4 | Tambahkan `IsolationMode` parameter untuk mengonfigurasi mode kontainerisasi untuk konektor. | 
| 3 | <a name="upgrade-runtime-py3.7"></a>Memperbarui waktu aktif Lambda untuk Python 3.7, yang mengubah persyaratan waktu aktif. | 
| 2 | Perbaiki untuk mengurangi pencatatan berlebihan. | 
| 1 | Pelepasan awal.  | 

<a name="one-conn-version"></a>Sebuah grup Greengrass dapat berisi hanya satu versi konektor pada suatu waktu. Untuk informasi lebih lanjut tentang pembaruan versi konektor, lihat [Versi upgrade konektor](connectors.md#upgrade-connector-versions).

## Lihat juga
<a name="iot-analytics-connector-see-also"></a>
+ [Integrasikan dengan layanan dan protokol menggunakan konektor Greengrass](connectors.md)
+ [Memulai dengan konektor Greengrass (konsol)](connectors-console.md)
+ [Memulai dengan konektor Greengrass (CLI)](connectors-cli.md)
+  [Apa itu AWS IoT Analytics?](https://docs.aws.amazon.com/iotanalytics/latest/userguide/welcome.html) di *Panduan AWS IoT Analytics Pengguna*

# Konektor Adaptor Protokol IP Ethernet IoT
<a name="ethernet-ip-connector"></a>

[Konektor](connectors.md) Adaptor Protokol IP Ethernet IoT mengumpulkan data dari perangkat lokal menggunakan protokol Ethernet/IP. Anda dapat menggunakan konektor ini untuk mengumpulkan data dari beberapa perangkat dan menerbitkannyanya ke `StreamManager` aliran pesan. 

Anda juga dapat menggunakan konektor ini dengan konektor IoT dan gateway SiteWise IoT Anda. SiteWise Gateway Anda harus menyediakan konfigurasi untuk konektor. Untuk informasi selengkapnya, lihat [Mengkonfigurasi sumber Ethernet/IP (EIP) di](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/configure-eip-source.html) panduan pengguna IoT. SiteWise 

**catatan**  
Konektor ini berjalan dalam mode [Tanpa isolasi kontainer](lambda-group-config.md#no-container-mode), sehingga Anda dapat menerapkannya ke AWS IoT Greengrass grup yang berjalan di wadah Docker. 

Konektor ini memiliki versi berikut.


| Versi | ARN | 
| --- | --- | 
| 2 (disarankan) | `arn:aws:greengrass:region::/connectors/IoTEIPProtocolAdaptor/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/IoTEIPProtocolAdaptor/versions/1` | 

Untuk informasi tentang perubahan versi, lihat [Changelog](#ethernet-ip-connector-changelog).

## Persyaratan
<a name="ethernet-ip-connector-req"></a>

Konektor ini memiliki persyaratan sebagai berikut:

------
#### [ Version 1 and 2 ]
+ AWS IoT Greengrass Perangkat lunak inti v1.10.2 atau yang lebih baru.
+ Manajer aliran diaktifkan di AWS IoT Greengrass grup.
+ Java 8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan `PATH` ini.
+ Minimal 256 MB RAM tambahan. Persyaratan ini merupakan tambahan untuk persyaratan memori AWS IoT Greengrass Core.

**catatan**  
 Konektor ini hanya tersedia dalam Wilayah berikut:   
cn-north-1
ap-southeast-1
ap-southeast-2
eu-central-1
eu-west-1
us-east-1
us-west-2

------

## Parameter Konektor
<a name="ethernet-ip-connector-param"></a>

Konektor ini mendukung parameter berikut:

`LocalStoragePath`  
Direktori pada AWS IoT Greengrass host tempat SiteWise konektor IoT dapat menulis data persisten. Direktori default adalah `/var/sitewise`.  
Nama tampilan di AWS IoT konsol: **Jalur penyimpanan lokal**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^\s*$|\/.`

`ProtocolAdapterConfiguration`  
Set konfigurasi kolektor Ethernet/IP yang konektor mengumpulkan data dari atau terhubung ke. Ini bisa menjadi daftar kosong.  
Nama tampilan di AWS IoT konsol: **Konfigurasi Adaptor Protokol**  
Wajib: `true`  
Jenis: Sebuah string JSON terbentuk yang mendefinisikan himpunan konfigurasi umpan balik yang didukung.

 Berikut ini adalah contoh dari `ProtocolAdapterConfiguration`: 

```
{
    "sources": [
        {
            "type": "EIPSource",
            "name": "TestSource",
            "endpoint": {
                "ipAddress": "52.89.2.42",
                "port": 44818
            },
            "destination": {
                "type": "StreamManager",
                "streamName": "MyOutput_Stream",
                "streamBufferSize": 10
            },
            "destinationPathPrefix": "EIPSource_Prefix",
            "propertyGroups": [
                {
                    "name": "DriveTemperatures",
                    "scanMode": {
                        "type": "POLL",
                        "rate": 10000
                    },
                    "tagPathDefinitions": [
                        {
                            "type": "EIPTagPath",
                            "path": "arrayREAL[0]",
                            "dstDataType": "double"
                        }
                    ]
                }
            ]
        }
    ]
}
```

### Buat Contoh Konektor (AWS CLI)
<a name="eip-connector-create"></a>

Perintah CLI berikut membuat `ConnectorDefinition` dengan versi awal yang mengandung konektor Adaptor Protokol IP Ethernet IoT.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version 
'{
    "Connectors": [
        {
            "Id": "MyIoTEIPProtocolConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/IoTEIPProtocolAdaptor/versions/2",
            "Parameters": {
                "ProtocolAdaptorConfiguration": "{ \"sources\": [{ \"type\": \"EIPSource\", \"name\": \"Source1\", \"endpoint\": { \"ipAddress\": \"54.245.77.218\", \"port\": 44818 }, \"destinationPathPrefix\": \"EIPConnector_Prefix\", \"propertyGroups\": [{ \"name\": \"Values\", \"scanMode\": { \"type\": \"POLL\", \"rate\": 2000 }, \"tagPathDefinitions\": [{ \"type\": \"EIPTagPath\", \"path\": \"arrayREAL[0]\", \"dstDataType\": \"double\" }]}]}]}",
                "LocalStoragePath": "/var/MyIoTEIPProtocolConnectorState"
            }
        }
    ]
}'
```

**catatan**  
Fungsi Lambda dalam konektor mempunyai siklus hidup yang [berumur panjang](lambda-functions.md#lambda-lifecycle) ini.

## Data input
<a name="ethernet-ip-connector-data-input"></a>

Konektor ini tidak menerima pesan MQTT sebagai data input.

## Data output
<a name="ethernet-ip-connector-data-output"></a>

Konektor ini menerbitkan data ke `StreamManager`. Anda harus mengonfigurasi aliran pesan tujuan. Pesan output dari struktur berikut:

```
{
    "alias": "string",
    "messages": [
        {
            "name": "string",
            "value": boolean|double|integer|string,
            "timestamp": number,
            "quality": "string"
        }
    ]
}
```

## Lisensi
<a name="ethernet-ip-connector-license"></a>

Konektor Adaptor Protokol IP Ethernet IoT mencakup perangkat lunak/lisensi pihak ketiga berikut:
+ [Klien Ethernet/IP](https://github.com/digitalpetri/ethernet-ip/blob/master/LICENSE)
+ [MapDB](https://github.com/jankotek/mapdb/blob/master/LICENSE.txt)
+ [Elsa](https://github.com/jankotek/elsa/blob/master/LICENSE.txt)

Konektor ini dirilis di bawah [Perjanjian Lisensi Perangkat lunak core Greengrass](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Changelog
<a name="ethernet-ip-connector-changelog"></a>

Tabel berikut menjelaskan perubahan dalam setiap versi konektor.


| Versi | Perubahan | Tanggal | 
| --- | --- | --- | 
| 2 | Versi ini berisi perbaikan bug. | Desember 23, 2021 | 
| 1 | Pelepasan awal. | 15 Desember 2020 | 

<a name="one-conn-version"></a>Sebuah grup Greengrass dapat berisi hanya satu versi konektor pada suatu waktu. Untuk informasi lebih lanjut tentang pembaruan versi konektor, lihat [Versi upgrade konektor](connectors.md#upgrade-connector-versions).

## Lihat juga
<a name="ethernet-ip-connector-see-also"></a>
+ [Integrasikan dengan layanan dan protokol menggunakan konektor Greengrass](connectors.md)
+ [Memulai dengan konektor Greengrass (konsol)](connectors-console.md)
+ [Memulai dengan konektor Greengrass (CLI)](connectors-cli.md)

# Konektor IoT SiteWise
<a name="iot-sitewise-connector"></a>

 SiteWise Konektor IoT mengirimkan data perangkat dan peralatan lokal ke properti aset di. AWS IoT SiteWise Anda dapat menggunakan konektor ini untuk mengumpulkan data dari beberapa server OPC-UA dan mempublikasikannya ke IoT. SiteWise Konektor mengirimkan data ke properti aset di saat ini Akun AWS dan Wilayah.

**catatan**  
IoT SiteWise adalah layanan yang dikelola sepenuhnya yang mengumpulkan, memproses, dan memvisualisasikan data dari perangkat dan peralatan industri. Anda dapat mengonfigurasi properti aset yang memproses data mentah yang dikirim dari konektor ini ke properti pengukuran aset Anda. Sebagai contoh, Anda dapat menentukan properti transformasi yang mengkonversi Celcius titik data suhu perangkat ke Fahrenheit, atau Anda dapat menentukan properti metrik yang menghitung suhu per jam rata-rata. Untuk informasi lebih lanjut, lihat [Apa AWS IoT SiteWise?](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/) dalam *AWS IoT SiteWise Panduan Pengguna*.

Konektor mengirimkan data ke IoT SiteWise dengan jalur aliran data OPC-UA yang dikirim dari server OPC-UA. Sebagai contoh, jalur aliran data `/company/windfarm/3/turbine/7/temperature` mungkin mewakili sensor suhu turbin \$17 dalam ladang angin \$13. Jika AWS IoT Greengrass inti kehilangan koneksi ke internet, konektor menyimpan data hingga berhasil terhubung ke file. AWS Cloud Anda dapat mengonfigurasi ukuran buffer disk maksimum yang digunakan untuk data caching. Jika ukuran cache melebihi ukuran buffer disk maksimum, konektor membuang data terlama dari antrian.

[Setelah mengonfigurasi dan menerapkan konektor SiteWise IoT, Anda dapat menambahkan gateway dan sumber OPC-UA di konsol IoT. SiteWise ](https://console.aws.amazon.com/iotsitewise/) Saat mengonfigurasi sumber di konsol, Anda dapat memfilter atau mengawali jalur aliran data OPC-UA yang dikirim oleh konektor IoT. SiteWise Untuk instruksi untuk menyelesaikan pengaturan gateway dan sumber, lihat [Menambahkan gateway](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/configure-gateway.html#add-gateway) dalam *AWS IoT SiteWise Panduan Pengguna*.

IoT SiteWise menerima data hanya dari aliran data yang telah Anda petakan ke properti pengukuran aset IoT. SiteWise Untuk memetakan aliran data ke properti aset, Anda dapat mengatur alias properti untuk setara dengan jalur aliran data OPC-UA. Untuk mempelajari tentang mendefinisikan model aset dan menciptakan aset, lihat [Pemodelan aset industri](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/industrial-asset-models) dalam *AWS IoT SiteWise Panduan Pengguna*.

**Catatan**  
Anda dapat menggunakan pengelola aliran untuk mengunggah data ke IoT SiteWise dari sumber selain server OPC-UA. Stream manager juga menyediakan dukungan disesuaikan untuk ketahanan dan manajemen bandwidth. Untuk informasi selengkapnya, lihat [Mengelola aliran data pada inti AWS IoT Greengrass](stream-manager.md).  
Konektor ini berjalan dalam mode isolasi [Tanpa kontainer](lambda-group-config.md#no-container-mode) ini, sehingga Anda dapat men-deploy ke grup Greengrass yang berjalan pada kontainer Docker.

Konektor ini memiliki versi berikut.


| Versi | ARN | 
| --- | --- | 
| 12 (disarankan) | `arn:aws:greengrass:region::/connectors/IoTSiteWise/versions/12` | 
| 11 | `arn:aws:greengrass:region::/connectors/IoTSiteWise/versions/11` | 
| 10 | `arn:aws:greengrass:region::/connectors/IoTSiteWise/versions/10` | 
| 9 | `arn:aws:greengrass:region::/connectors/IoTSiteWise/versions/9` | 
| 8 | `arn:aws:greengrass:region::/connectors/IoTSiteWise/versions/8` | 
| 7 | `arn:aws:greengrass:region::/connectors/IoTSiteWise/versions/7` | 
| 6 | `arn:aws:greengrass:region::/connectors/IoTSiteWise/versions/6` | 
| 5 | `arn:aws:greengrass:region::/connectors/IoTSiteWise/versions/5` | 
| 4 | `arn:aws:greengrass:region::/connectors/IoTSiteWise/versions/4` | 
| 3 | `arn:aws:greengrass:region::/connectors/IoTSiteWise/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/IoTSiteWise/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/IoTSiteWise/versions/1` | 

Untuk informasi tentang perubahan versi, lihat [Changelog](#iot-sitewise-connector-changelog).

## Persyaratan
<a name="iot-sitewise-connector-req"></a>

Konektor ini memiliki persyaratan sebagai berikut:

------
#### [ Version 9, 10, 11, and 12 ]

**penting**  
[Versi ini memperkenalkan persyaratan baru: Perangkat lunak AWS IoT Greengrass inti v1.10.2 dan manajer aliran.](stream-manager.md)
+ AWS IoT Greengrass Perangkat lunak inti v1.10.2.
+ <a name="conn-sitewise-req-stream-manager"></a>[Stream manager](stream-manager.md) diaktifkan pada grup Greengrass.
+ <a name="conn-sitewise-req-java-8"></a>Java 8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
+ <a name="conn-sitewise-req-regions"></a>Konektor ini hanya dapat digunakan di Wilayah Amazon Web Services di mana keduanya [AWS IoT Greengrass](https://docs.aws.amazon.com/general/latest/gr/greengrass.html)dan [IoT SiteWise didukung](https://docs.aws.amazon.com/general/latest/gr/iot-sitewise.html).
+ <a name="conn-sitewise-req-policy-v3"></a>Sebuah kebijakan IAM ditambahkan ke peran grup Greengrass. Peran ini memungkinkan AWS IoT Greengrass grup mengakses `iotsitewise:BatchPutAssetPropertyValue` tindakan pada aset akar target dan anak-anaknya, seperti yang ditunjukkan pada contoh berikut. Anda dapat menghapus `Condition` dari kebijakan untuk memungkinkan konektor mengakses semua aset IoT SiteWise Anda.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
               "Effect": "Allow",
               "Action": "iotsitewise:BatchPutAssetPropertyValue",
               "Resource": "*",
               "Condition": {
                   "StringLike": {
                       "iotsitewise:assetHierarchyPath": [
                           "/root node asset ID",
                           "/root node asset ID/*"
                       ]
                   }
               }
          }
      ]
  }
  ```

------

  Untuk informasi lebih lanjut, lihat [Menambahkan dan menghapus kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) dalam *Panduan Pengguna IAM*.

------
#### [ Versions 6, 7, and 8 ]

**penting**  
[Versi ini memperkenalkan persyaratan baru: Perangkat lunak AWS IoT Greengrass inti v1.10.0 dan manajer aliran.](stream-manager.md)
+ <a name="conn-sitewise-req-ggc-1010"></a>AWS IoT Greengrass Perangkat lunak inti v1.10.0.
+ <a name="conn-sitewise-req-stream-manager"></a>[Stream manager](stream-manager.md) diaktifkan pada grup Greengrass.
+ <a name="conn-sitewise-req-java-8"></a>Java 8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
+ <a name="conn-sitewise-req-regions"></a>Konektor ini hanya dapat digunakan di Wilayah Amazon Web Services di mana keduanya [AWS IoT Greengrass](https://docs.aws.amazon.com/general/latest/gr/greengrass.html)dan [IoT SiteWise didukung](https://docs.aws.amazon.com/general/latest/gr/iot-sitewise.html).
+ <a name="conn-sitewise-req-policy-v3"></a>Sebuah kebijakan IAM ditambahkan ke peran grup Greengrass. Peran ini memungkinkan AWS IoT Greengrass grup mengakses `iotsitewise:BatchPutAssetPropertyValue` tindakan pada aset akar target dan anak-anaknya, seperti yang ditunjukkan pada contoh berikut. Anda dapat menghapus `Condition` dari kebijakan untuk memungkinkan konektor mengakses semua aset IoT SiteWise Anda.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
               "Effect": "Allow",
               "Action": "iotsitewise:BatchPutAssetPropertyValue",
               "Resource": "*",
               "Condition": {
                   "StringLike": {
                       "iotsitewise:assetHierarchyPath": [
                           "/root node asset ID",
                           "/root node asset ID/*"
                       ]
                   }
               }
          }
      ]
  }
  ```

------

  Untuk informasi lebih lanjut, lihat [Menambahkan dan menghapus kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) dalam *Panduan Pengguna IAM*.

------
#### [ Version 5 ]
+ <a name="conn-sitewise-req-ggc-194"></a>AWS IoT Greengrass Perangkat lunak inti v1.9.4.
+ <a name="conn-sitewise-req-java-8"></a>Java 8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
+ <a name="conn-sitewise-req-regions"></a>Konektor ini hanya dapat digunakan di Wilayah Amazon Web Services di mana keduanya [AWS IoT Greengrass](https://docs.aws.amazon.com/general/latest/gr/greengrass.html)dan [IoT SiteWise didukung](https://docs.aws.amazon.com/general/latest/gr/iot-sitewise.html).
+ <a name="conn-sitewise-req-policy-v3"></a>Sebuah kebijakan IAM ditambahkan ke peran grup Greengrass. Peran ini memungkinkan AWS IoT Greengrass grup mengakses `iotsitewise:BatchPutAssetPropertyValue` tindakan pada aset akar target dan anak-anaknya, seperti yang ditunjukkan pada contoh berikut. Anda dapat menghapus `Condition` dari kebijakan untuk memungkinkan konektor mengakses semua aset IoT SiteWise Anda.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
               "Effect": "Allow",
               "Action": "iotsitewise:BatchPutAssetPropertyValue",
               "Resource": "*",
               "Condition": {
                   "StringLike": {
                       "iotsitewise:assetHierarchyPath": [
                           "/root node asset ID",
                           "/root node asset ID/*"
                       ]
                   }
               }
          }
      ]
  }
  ```

------

  Untuk informasi lebih lanjut, lihat [Menambahkan dan menghapus kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) dalam *Panduan Pengguna IAM*.

------
#### [ Version 4 ]
+ <a name="conn-sitewise-req-ggc-1010"></a>AWS IoT Greengrass Perangkat lunak inti v1.10.0.
+ <a name="conn-sitewise-req-java-8"></a>Java 8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
+ <a name="conn-sitewise-req-regions"></a>Konektor ini hanya dapat digunakan di Wilayah Amazon Web Services di mana keduanya [AWS IoT Greengrass](https://docs.aws.amazon.com/general/latest/gr/greengrass.html)dan [IoT SiteWise didukung](https://docs.aws.amazon.com/general/latest/gr/iot-sitewise.html).
+ <a name="conn-sitewise-req-policy-v3"></a>Sebuah kebijakan IAM ditambahkan ke peran grup Greengrass. Peran ini memungkinkan AWS IoT Greengrass grup mengakses `iotsitewise:BatchPutAssetPropertyValue` tindakan pada aset akar target dan anak-anaknya, seperti yang ditunjukkan pada contoh berikut. Anda dapat menghapus `Condition` dari kebijakan untuk memungkinkan konektor mengakses semua aset IoT SiteWise Anda.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
               "Effect": "Allow",
               "Action": "iotsitewise:BatchPutAssetPropertyValue",
               "Resource": "*",
               "Condition": {
                   "StringLike": {
                       "iotsitewise:assetHierarchyPath": [
                           "/root node asset ID",
                           "/root node asset ID/*"
                       ]
                   }
               }
          }
      ]
  }
  ```

------

  Untuk informasi lebih lanjut, lihat [Menambahkan dan menghapus kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) dalam *Panduan Pengguna IAM*.

------
#### [ Version 3 ]
+ <a name="conn-sitewise-req-ggc-194"></a>AWS IoT Greengrass Perangkat lunak inti v1.9.4.
+ <a name="conn-sitewise-req-java-8"></a>Java 8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
+ <a name="conn-sitewise-req-regions"></a>Konektor ini hanya dapat digunakan di Wilayah Amazon Web Services di mana keduanya [AWS IoT Greengrass](https://docs.aws.amazon.com/general/latest/gr/greengrass.html)dan [IoT SiteWise didukung](https://docs.aws.amazon.com/general/latest/gr/iot-sitewise.html).
+ <a name="conn-sitewise-req-policy-v3"></a>Sebuah kebijakan IAM ditambahkan ke peran grup Greengrass. Peran ini memungkinkan AWS IoT Greengrass grup mengakses `iotsitewise:BatchPutAssetPropertyValue` tindakan pada aset akar target dan anak-anaknya, seperti yang ditunjukkan pada contoh berikut. Anda dapat menghapus `Condition` dari kebijakan untuk memungkinkan konektor mengakses semua aset IoT SiteWise Anda.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
               "Effect": "Allow",
               "Action": "iotsitewise:BatchPutAssetPropertyValue",
               "Resource": "*",
               "Condition": {
                   "StringLike": {
                       "iotsitewise:assetHierarchyPath": [
                           "/root node asset ID",
                           "/root node asset ID/*"
                       ]
                   }
               }
          }
      ]
  }
  ```

------

  Untuk informasi lebih lanjut, lihat [Menambahkan dan menghapus kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) dalam *Panduan Pengguna IAM*.

------
#### [ Versions 1 and 2 ]
+ <a name="conn-sitewise-req-ggc-194"></a>AWS IoT Greengrass Perangkat lunak inti v1.9.4.
+ <a name="conn-sitewise-req-java-8"></a>Java 8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
+ <a name="conn-sitewise-req-regions"></a>Konektor ini hanya dapat digunakan di Wilayah Amazon Web Services di mana keduanya [AWS IoT Greengrass](https://docs.aws.amazon.com/general/latest/gr/greengrass.html)dan [IoT SiteWise didukung](https://docs.aws.amazon.com/general/latest/gr/iot-sitewise.html).
+ <a name="conn-sitewise-req-policy-v1"></a>Kebijakan IAM ditambahkan ke peran grup Greengrass yang memungkinkan akses AWS IoT Core ke dan tindakan pada aset akar target dan `iotsitewise:BatchPutAssetPropertyValue` anak-anaknya, seperti yang ditunjukkan pada contoh berikut. Anda dapat menghapus `Condition` dari kebijakan untuk memungkinkan konektor mengakses semua aset IoT SiteWise Anda.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
               "Effect": "Allow",
               "Action": "iotsitewise:BatchPutAssetPropertyValue",
               "Resource": "*",
               "Condition": {
                   "StringLike": {
                       "iotsitewise:assetHierarchyPath": [
                           "/root node asset ID",
                           "/root node asset ID/*"
                       ]
                   }
               }
          },
          {
              "Effect": "Allow",
              "Action": [
                   "iot:Connect",
                   "iot:DescribeEndpoint",
                   "iot:Publish",
                   "iot:Receive",
                   "iot:Subscribe"
              ],
              "Resource": "*"
          }
      ]
  }
  ```

------

  Untuk informasi lebih lanjut, lihat [Menambahkan dan menghapus izin identitas IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) dalam *Panduan Pengguna IAM*.

------

## Parameter
<a name="iot-sitewise-connector-param"></a>

------
#### [ Versions 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, and 12 ]<a name="conn-sitewise-params-v2"></a>

`SiteWiseLocalStoragePath`  
Direktori pada AWS IoT Greengrass host tempat SiteWise konektor IoT dapat menulis data persisten. Default ke `/var/sitewise`.  
Nama tampilan di AWS IoT konsol: **Jalur penyimpanan lokal**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^\s*$|\/.`

`AWSSecretsArnList`  
Daftar rahasia di dalamnya masing-masing AWS Secrets Manager berisi nama pengguna OPC-UA dan pasangan nilai kunci kata sandi. Setiap rahasia harus menjadi rahasia jenis pasangan yang bernilai kunci.  
Nama tampilan di AWS IoT konsol: **Daftar rahasia username/password OPC-UA ARNs **  
Wajib: `false`  
Jenis: `JsonArrayOfStrings`  
Pola yang valid: `\[( ?,? ?\"(arn:(aws(-[a-z]+)*):secretsmanager:[a-z0-9\\-]+:[0-9]{12}:secret:([a-zA-Z0-9\\\\]+\/)*[a-zA-Z0-9\/_+=,.@\\-]+-[a-zA-Z0-9]+)*\")*\]`

`MaximumBufferSize`  
Ukuran maksimum dalam GB untuk penggunaan SiteWise disk IoT. Default untuk 10GB.  
Nama tampilan di AWS IoT konsol: Ukuran **buffer disk maksimum**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^\s*$|[0-9]+`

------
#### [ Version 1 ]<a name="conn-sitewise-params-v1"></a>

`SiteWiseLocalStoragePath`  
Direktori pada AWS IoT Greengrass host tempat SiteWise konektor IoT dapat menulis data persisten. Default ke `/var/sitewise`.  
Nama tampilan di AWS IoT konsol: **Jalur penyimpanan lokal**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^\s*$|\/.`

`SiteWiseOpcuaUserIdentityTokenSecretArn`  
Rahasianya AWS Secrets Manager berisi nama pengguna OPC-UA dan pasangan nilai kunci kata sandi. Rahasia ini harus menjadi rahasia jenis pasangan kunci-nilai.  
Nama tampilan di AWS IoT konsol: **ARN rahasia OPC-UA username/password **  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^$|arn:(aws(-[a-z]+)*):secretsmanager:[a-z0-9\\-]+:[0-9]{12}:secret:([a-zA-Z0-9\\\\]+/)*[a-zA-Z0-9/_+=,.@\\-]+-[a-zA-Z0-9]+`

`SiteWiseOpcuaUserIdentityTokenSecretArn-ResourceId`  
Sumber daya rahasia dalam AWS IoT Greengrass grup yang mereferensikan nama pengguna OPC-UA dan rahasia kata sandi.  
Nama tampilan di AWS IoT konsol: Sumber daya rahasia **OPC-UA username/password **  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^$|.+`

`MaximumBufferSize`  
Ukuran maksimum dalam GB untuk penggunaan SiteWise disk IoT. Default untuk 10GB.  
Nama tampilan di AWS IoT konsol: Ukuran **buffer disk maksimum**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^\s*$|[0-9]+`

------

### Buat Contoh Konektor (AWS CLI)
<a name="iot-sitewise-connector-create"></a>

 AWS CLI Perintah berikut membuat `ConnectorDefinition` dengan versi awal yang berisi konektor IoT SiteWise .

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyIoTSiteWiseConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/IoTSiteWise/versions/11"
        }
    ]
}'
```

**catatan**  
Fungsi-fungsi Lambda dalam konektor mempunyai siklus hidup yang [berumur panjang](lambda-functions.md#lambda-lifecycle) ini.

Di AWS IoT Greengrass konsol, Anda dapat menambahkan konektor dari halaman **Konektor** grup. Untuk informasi selengkapnya, lihat [Memulai dengan konektor Greengrass (konsol)](connectors-console.md).

## Data input
<a name="iot-sitewise-connector-data-input"></a>

Konektor ini tidak menerima pesan MQTT sebagai data input.

## Data output
<a name="iot-sitewise-connector-data-output"></a>

Konektor ini tidak menerbitkankan pesan MQTT sebagai Data output.

## Batas
<a name="iot-sitewise-connector-limits"></a>

Konektor ini tunduk pada semua batasan berikut yang diberlakukan oleh IoT SiteWise, termasuk yang berikut ini. Untuk informasi lebih lanjut, lihat [AWS IoT SiteWise titik akhir dan kuota](https://docs.aws.amazon.com/general/latest/gr/iot-sitewise.html) di. *Referensi Umum AWS* 
+ Jumlah maksimum gateway per Akun AWS.
+ Jumlah maksimum sumber OPC-UA per gateway.
+ Tingkat maksimum titik data timestamp-quality-value (TQV) yang disimpan per. Akun AWS
+ Tingkat maksimum titik data TQV yang dipertahankan per properti aset.

## Lisensi
<a name="iot-sitewise-connector-license"></a>

------
#### [ Version 9, 10, 11, and 12 ]

 SiteWise Konektor IoT mencakup perangkat lunak/lisensi pihak ketiga berikut:
+  [MapDB](https://github.com/jankotek/mapdb/blob/master/LICENSE.txt) 
+  [Elsa](https://github.com/jankotek/elsa/blob/master/LICENSE.txt) 
+ [Gerhana Milo](https://github.com/eclipse/milo/blob/maintenance/0.2/LICENSE)

Konektor ini dirilis di bawah [Perjanjian Lisensi Perangkat lunak core Greengrass](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

------
#### [ Versions 6, 7, and 8 ]

 SiteWise Konektor IoT mencakup perangkat lunak/lisensi pihak ketiga berikut:
+ [Milo](https://github.com/eclipse/milo/) / EDL 1.0

Konektor ini dirilis di bawah [Perjanjian Lisensi Perangkat lunak core Greengrass](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

------
#### [ Versions 1, 2, 3, 4, and 5 ]

 SiteWise Konektor IoT mencakup perangkat lunak/lisensi pihak ketiga berikut:
+ [Milo](https://github.com/eclipse/milo/) / EDL 1.0
+ [Chronicle-Queue](https://github.com/OpenHFT/Chronicle-Queue) / Lisensi 2.0 Apache

Konektor ini dirilis di bawah [Perjanjian Lisensi Perangkat lunak core Greengrass](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

------

## Changelog
<a name="iot-sitewise-connector-changelog"></a>

Tabel berikut menjelaskan perubahan dalam setiap versi konektor.


| Versi | Perubahan | Date | 
| --- | --- | --- | 
|  12  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/iot-sitewise-connector.html)  |  Desember 22, 2021  | 
|  11  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/iot-sitewise-connector.html)  |  24 Maret 2021  | 
|  10  |  Mengonfigurasi `StreamManager` untuk meningkatkan penanganan ketika koneksi sumber hilang dan didirikan kembali. Versi ini juga menerima nilai OPC-UA dengan sebuah `ServerTimestamp` ketika tidak `SourceTimestamp` tersedia.  |  22 Januari 2021  | 
|  9  |  Support diluncurkan untuk tujuan pengaliran `StreamManager` Greengrass kustom, deadbanding OPC-UA, mode pemindaian khusus dan tingkat pemindaian kustom. Juga termasuk peningkatan kinerja selama pembaruan konfigurasi yang dibuat dari gateway IoT SiteWise .  |  15 Desember 2020  | 
|  8  |  Peningkatan stabilitas ketika konektor mengalami konektivitas jaringan intermiten.  |  19 November 2020  | 
|  7  |  Memperbaiki masalah dengan metrik gateway.  |  14 Agustus 2020  | 
|  6  |  Menambahkan dukungan untuk CloudWatch metrik dan penemuan otomatis tag OPC-UA baru. Versi ini membutuhkan [manajer aliran](stream-manager.md) dan perangkat lunak AWS IoT Greengrass Core v1.10.0 atau lebih tinggi.  |  29 April 2020  | 
|  5  |  Memperbaiki masalah kompatibilitas dengan perangkat lunak AWS IoT Greengrass Core v1.9.4.  |  12 Februari 2020  | 
|  4  |  Memperbaiki masalah dengan rekoneksi server OPC-UA.  |  7 Februari 2020  | 
|  3  |  Menghapus `iot:*` persyaratan izin.  |  17 Desember 2019  | 
|  2  |  Ditambahkan dukungan untuk beberapa sumber daya rahasia OPC-UA.  |  10 Desember 2019  | 
|  1  |  Pelepasan awal.  |  2 Desember 2019  | 

<a name="one-conn-version"></a>Sebuah grup Greengrass dapat berisi hanya satu versi konektor pada suatu waktu. Untuk informasi lebih lanjut tentang pembaruan versi konektor, lihat [Versi upgrade konektor](connectors.md#upgrade-connector-versions).

## Lihat juga
<a name="iot-sitewise-connector-see-also"></a>
+ [Integrasikan dengan layanan dan protokol menggunakan konektor Greengrass](connectors.md)
+ [Memulai dengan konektor Greengrass (konsol)](connectors-console.md)
+ [Memulai dengan konektor Greengrass (CLI)](connectors-cli.md)
+ Lihat topik berikut dalam * Panduan Pengguna AWS IoT SiteWise *:
  + [Apa itu AWS IoT SiteWise?](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/)
  + [Menggunakan gateway](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/gateway-connector.html)
  + [ CloudWatch Metrik gerbang](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/monitor-cloudwatch-metrics.html#gateway-metrics)
  + [Memecahkan masalah gateway IoT SiteWise ](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/troubleshooting.html#troubleshooting-gateway)

# Kinesis Firehose
<a name="kinesis-firehose-connector"></a>

[Konektor](connectors.md) Kinesis Firehose menerbitkan data melalui aliran pengiriman Amazon Data Firehose ke tujuan seperti Amazon S3, Amazon Redshift, atau Amazon Service. OpenSearch 

Konektor ini adalah produsen data untuk aliran pengiriman Kinesis. Ia menerima data input pada topik MQTT, dan mengirimkan data ke aliran pengiriman tertentu. Aliran pengiriman kemudian mengirimkan catatan data ke tujuan yang dikonfigurasi (sebagai contoh, sebuah bucket S3).

Konektor ini memiliki versi berikut.


| Versi | ARN | 
| --- | --- | 
| 5 | `arn:aws:greengrass:region::/connectors/KinesisFirehose/versions/5` | 
| 4 | `arn:aws:greengrass:region::/connectors/KinesisFirehose/versions/4` | 
| 3 | `arn:aws:greengrass:region::/connectors/KinesisFirehose/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/KinesisFirehose/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/KinesisFirehose/versions/1` | 

Untuk informasi tentang perubahan versi, lihat [Changelog](#kinesis-firehose-connector-changelog).

## Persyaratan
<a name="kinesis-firehose-connector-req"></a>

Konektor ini memiliki persyaratan sebagai berikut:

------
#### [ Version 4 - 5 ]
+ <a name="conn-req-ggc-v1.9.3"></a>AWS IoT Greengrass Perangkat lunak inti v1.9.3 atau yang lebih baru.
+ <a name="conn-req-py-3.7-and-3.8"></a>[Python](https://www.python.org/) versi 3.7 atau 3.8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
**catatan**  <a name="use-runtime-py3.8"></a>
Untuk menggunakan Python 3.8, jalankan perintah berikut untuk membuat link simbolik dari folder instalasi default Python 3.7 ke binari Python 3.8 yang diinstal.  

  ```
  sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7
  ```
Ini mengonfigurasi perangkat Anda untuk memenuhi persyaratan Python untuk AWS IoT Greengrass.
+ <a name="req-kinesis-firehose-stream"></a>Aliran pengiriman Kinesis yang dikonfigurasi. Untuk informasi selengkapnya, lihat [Membuat aliran pengiriman Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html) di Panduan Pengembang *Amazon Kinesis Firehose*.
+ <a name="req-kinesis-firehose-iam-policy-v2"></a>[Peran grup Greengrass](group-role.md) dikonfigurasi untuk mengizinkan `firehose:PutRecord` dan tindakan `firehose:PutRecordBatch` dalam aliran pengiriman target, seperti yang ditunjukkan dalam contoh kebijakan IAM berikut.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
          {
              "Sid":"Stmt1528133056761",
              "Action":[
                  "firehose:PutRecord",
                  "firehose:PutRecordBatch"
              ],
              "Effect":"Allow",
              "Resource":[
              "arn:aws:firehose:us-east-1:123456789012:deliverystream/stream-name"
              ]
          }
      ]
   }
  ```

------

  Konektor ini mengizinkan Anda untuk secara dinamis menimpa aliran pengiriman default dalam muatan pesan input. Jika implementasi Anda menggunakan fitur ini, kebijakan IAM harus mencakup semua aliran target sebagai sumber daya. Anda dapat memberikan akses terperinci atau bersyarat ke sumber daya (sebagai contoh, dengan menggunakan skema penamaan wildcard \$1).

  <a name="set-up-group-role"></a>Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat [Mengelola peran grup Greengrass (konsol)](group-role.md#manage-group-role-console) atau [Mengelola peran grup Greengrass (CLI)](group-role.md#manage-group-role-cli).

------
#### [ Versions 2 - 3 ]
+ <a name="conn-req-ggc-v1.7.0"></a>AWS IoT Greengrass Perangkat lunak inti v1.7 atau yang lebih baru.
+ [Python](https://www.python.org/) versi 2.7 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
+ <a name="req-kinesis-firehose-stream"></a>Aliran pengiriman Kinesis yang dikonfigurasi. Untuk informasi selengkapnya, lihat [Membuat aliran pengiriman Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html) di Panduan Pengembang *Amazon Kinesis Firehose*.
+ <a name="req-kinesis-firehose-iam-policy-v2"></a>[Peran grup Greengrass](group-role.md) dikonfigurasi untuk mengizinkan `firehose:PutRecord` dan tindakan `firehose:PutRecordBatch` dalam aliran pengiriman target, seperti yang ditunjukkan dalam contoh kebijakan IAM berikut.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
          {
              "Sid":"Stmt1528133056761",
              "Action":[
                  "firehose:PutRecord",
                  "firehose:PutRecordBatch"
              ],
              "Effect":"Allow",
              "Resource":[
              "arn:aws:firehose:us-east-1:123456789012:deliverystream/stream-name"
              ]
          }
      ]
   }
  ```

------

  Konektor ini mengizinkan Anda untuk secara dinamis menimpa aliran pengiriman default dalam muatan pesan input. Jika implementasi Anda menggunakan fitur ini, kebijakan IAM harus mencakup semua aliran target sebagai sumber daya. Anda dapat memberikan akses terperinci atau bersyarat ke sumber daya (sebagai contoh, dengan menggunakan skema penamaan wildcard \$1).

  <a name="set-up-group-role"></a>Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat [Mengelola peran grup Greengrass (konsol)](group-role.md#manage-group-role-console) atau [Mengelola peran grup Greengrass (CLI)](group-role.md#manage-group-role-cli).

------
#### [ Version 1 ]
+ <a name="conn-req-ggc-v1.7.0"></a>AWS IoT Greengrass Perangkat lunak inti v1.7 atau yang lebih baru.
+ [Python](https://www.python.org/) versi 2.7 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
+ <a name="req-kinesis-firehose-stream"></a>Aliran pengiriman Kinesis yang dikonfigurasi. Untuk informasi selengkapnya, lihat [Membuat aliran pengiriman Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html) di Panduan Pengembang *Amazon Kinesis Firehose*.
+ [Peran grup Greengrass](group-role.md) dikonfigurasi untuk mengizinkan `firehose:PutRecord` tindakan dalam aliran pengiriman target, seperti yang ditunjukkan dalam kebijakan IAM berikut.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
          {
              "Sid":"Stmt1528133056761",
              "Action":[
                  "firehose:PutRecord"
              ],
              "Effect":"Allow",
              "Resource":[
              "arn:aws:firehose:us-east-1:123456789012:deliverystream/stream-name"
              ]
          }
      ]
   }
  ```

------

  <a name="role-resources"></a>Konektor ini mengizinkan Anda untuk secara dinamis menimpa aliran pengiriman default dalam muatan pesan input. Jika implementasi Anda menggunakan fitur ini, kebijakan IAM harus mencakup semua aliran target sebagai sumber daya. Anda dapat memberikan akses terperinci atau bersyarat ke sumber daya (sebagai contoh, dengan menggunakan skema penamaan wildcard \$1).

  <a name="set-up-group-role"></a>Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat [Mengelola peran grup Greengrass (konsol)](group-role.md#manage-group-role-console) atau [Mengelola peran grup Greengrass (CLI)](group-role.md#manage-group-role-cli).

------

## Parameter Konektor
<a name="kinesis-firehose-connector-param"></a>

Konektor ini menyediakan parameter berikut:

------
#### [ Versions 5 ]

`DefaultDeliveryStreamArn`  <a name="kinesis-firehose-DefaultDeliveryStreamArn"></a>
ARN dari aliran pengiriman Firehose default untuk mengirim data ke. Aliran tujuan dapat diganti oleh properti `delivery_stream_arn` dalam muatan pesan input.  
Peran grup harus mengizinkan tindakan yang sesuai pada semua aliran pengiriman target. Untuk informasi selengkapnya, lihat [Persyaratan](#kinesis-firehose-connector-req).
Nama tampilan di AWS IoT konsol: **Arn aliran pengiriman default**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `arn:aws:firehose:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):deliverystream/([a-zA-Z0-9_\-.]+)$`

`DeliveryStreamQueueSize`  <a name="kinesis-firehose-DeliveryStreamQueueSize"></a>
Jumlah maksimum data untuk mempertahankan dalam memori sebelum catatan baru untuk aliran pengiriman yang sama ditolak. Nilai minimumnya adalah 2000.  
Nama tampilan di AWS IoT konsol: **Jumlah maksimum catatan untuk buffer (per aliran**)  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^([2-9]\\d{3}|[1-9]\\d{4,})$`

`MemorySize`  <a name="kinesis-firehose-MemorySize"></a>
Jumlah memori (dalam KB) untuk mengalokasikan ke konektor ini.  
Nama tampilan di AWS IoT konsol: **Ukuran memori**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^[0-9]+$`

`PublishInterval`  <a name="kinesis-firehose-PublishInterval"></a>
Interval (dalam detik) untuk menerbitkan catatan ke Firehose. Untuk menonaktifkan batching, atur nilai ini ke 0.  
Nama tampilan di AWS IoT konsol: **Publikasikan interval**  
Wajib: `true`  
Jenis: `string`  
Nilai yang valid: `0 - 900`  
Pola yang valid: `[0-9]|[1-9]\\d|[1-9]\\d\\d|900`

`IsolationMode`  <a name="IsolationMode"></a>
Mode [kontainerisasi](connectors.md#connector-containerization) untuk konektor ini. Defaultnya adalah`GreengrassContainer`, yang berarti konektor berjalan di lingkungan runtime yang terisolasi di dalam AWS IoT Greengrass container.  
Pengaturan kontainerisasi default untuk grup tidak berlaku untuk konektor.
Nama tampilan di AWS IoT konsol: **Mode isolasi kontainer**  
Wajib: `false`  
Jenis: `string`  
Nilai yang valid: `GreengrassContainer` or `NoContainer`  
Pola yang valid: `^NoContainer$|^GreengrassContainer$`

------
#### [ Versions 2 - 4 ]

`DefaultDeliveryStreamArn`  <a name="kinesis-firehose-DefaultDeliveryStreamArn"></a>
ARN dari aliran pengiriman Firehose default untuk mengirim data ke. Aliran tujuan dapat diganti oleh properti `delivery_stream_arn` dalam muatan pesan input.  
Peran grup harus mengizinkan tindakan yang sesuai pada semua aliran pengiriman target. Untuk informasi selengkapnya, lihat [Persyaratan](#kinesis-firehose-connector-req).
Nama tampilan di AWS IoT konsol: **Arn aliran pengiriman default**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `arn:aws:firehose:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):deliverystream/([a-zA-Z0-9_\-.]+)$`

`DeliveryStreamQueueSize`  <a name="kinesis-firehose-DeliveryStreamQueueSize"></a>
Jumlah maksimum data untuk mempertahankan dalam memori sebelum catatan baru untuk aliran pengiriman yang sama ditolak. Nilai minimumnya adalah 2000.  
Nama tampilan di AWS IoT konsol: **Jumlah maksimum catatan untuk buffer (per aliran**)  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^([2-9]\\d{3}|[1-9]\\d{4,})$`

`MemorySize`  <a name="kinesis-firehose-MemorySize"></a>
Jumlah memori (dalam KB) untuk mengalokasikan ke konektor ini.  
Nama tampilan di AWS IoT konsol: **Ukuran memori**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^[0-9]+$`

`PublishInterval`  <a name="kinesis-firehose-PublishInterval"></a>
Interval (dalam detik) untuk menerbitkan catatan ke Firehose. Untuk menonaktifkan batching, atur nilai ini ke 0.  
Nama tampilan di AWS IoT konsol: **Publikasikan interval**  
Wajib: `true`  
Jenis: `string`  
Nilai yang valid: `0 - 900`  
Pola yang valid: `[0-9]|[1-9]\\d|[1-9]\\d\\d|900`

------
#### [ Version 1 ]

`DefaultDeliveryStreamArn`  <a name="kinesis-firehose-DefaultDeliveryStreamArn"></a>
ARN dari aliran pengiriman Firehose default untuk mengirim data ke. Aliran tujuan dapat diganti oleh properti `delivery_stream_arn` dalam muatan pesan input.  
Peran grup harus mengizinkan tindakan yang sesuai pada semua aliran pengiriman target. Untuk informasi selengkapnya, lihat [Persyaratan](#kinesis-firehose-connector-req).
Nama tampilan di AWS IoT konsol: **Arn aliran pengiriman default**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `arn:aws:firehose:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):deliverystream/([a-zA-Z0-9_\-.]+)$`

------

**Example**  <a name="kinesis-firehose-connector-create"></a>
**Buat Contoh Konektor (AWS CLI)**  
Perintah CLI berikut membuat `ConnectorDefinition` dengan versi awal yang mengandungi konektor.  

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyKinesisFirehoseConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/KinesisFirehose/versions/5",
            "Parameters": {
                "DefaultDeliveryStreamArn": "arn:aws:firehose:region:account-id:deliverystream/stream-name",
                "DeliveryStreamQueueSize": "5000",
                "MemorySize": "65535",
                "PublishInterval": "10", 
                "IsolationMode" : "GreengrassContainer"
            }
        }
    ]
}'
```

Di AWS IoT Greengrass konsol, Anda dapat menambahkan konektor dari halaman **Konektor** grup. Untuk informasi selengkapnya, lihat [Memulai dengan konektor Greengrass (konsol)](connectors-console.md).

## Data input
<a name="kinesis-firehose-connector-data-input"></a>

Konektor ini menerima konten stream pada topik MQTT, dan kemudian mengirimkan konten ke aliran pengiriman target. Ia menerima dua jenis data input:
+ Data JSON pada `kinesisfirehose/message` Topik.
+ Data biner pada `kinesisfirehose/message/binary/#` Topik.

------
#### [ Versions 2 - 5 ]<a name="kinesis-firehose-input-data"></a>

**Filter topik**: `kinesisfirehose/message`  
Gunakan topik ini untuk mengirim pesan yang berisi data JSON.    
**Properti pesan**    
`request`  
Data yang akan dikirim ke aliran pengiriman dan aliran pengiriman target, jika berbeda dari aliran default.  
Wajib: `true`  
Jenis: `object` yang mencakup properti berikut:    
`data`  
Data untuk mengirim ke aliran pengiriman.  
Wajib: `true`  
Jenis: `string`  
`delivery_stream_arn`  
ARN dari target aliran pengiriman Kinesis. Sertakan properti ini untuk menimpa aliran pengiriman default.  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `arn:aws:firehose:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):deliverystream/([a-zA-Z0-9_\-.]+)$`  
`id`  
ID arbitrer untuk permintaan. Properti ini digunakan untuk memetakan permintaan input untuk respons output. Ketika ditentukan, `id` properti dalam objek respon diatur ke nilai ini. Jika Anda tidak menggunakan fitur ini, Anda dapat menghilangkan properti ini atau menentukan string kosong.  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `.*`  
**Contoh masukan**  

```
{
     "request": {
        "delivery_stream_arn": "arn:aws:firehose:region:account-id:deliverystream/stream2-name",
        "data": "Data to send to the delivery stream."
     },
     "id": "request123"
}
```
 

**Filter topik**: `kinesisfirehose/message/binary/#`  
Gunakan topik ini untuk mengirim pesan yang berisi data biner. Konektor tidak mengurai data biner. Data dialirkan seperti apa adanya.  
Untuk memetakan permintaan input untuk respon output, mengganti `#` wildcard dalam topik pesan dengan ID permintaan arbitrer. Misalnya, jika Anda mempublikasikan pesan ke `kinesisfirehose/message/binary/request123`, properti `id` di objek respons akan ditetapkan ke `request123`.  
Jika Anda tidak ingin memetakan permintaan untuk respon, Anda dapat menerbitkan pesan Anda ke `kinesisfirehose/message/binary/`. Pastikan untuk menyertakan garis miring.

------
#### [ Version 1 ]<a name="kinesis-firehose-input-data"></a>

**Filter topik**: `kinesisfirehose/message`  
Gunakan topik ini untuk mengirim pesan yang berisi data JSON.    
**Properti pesan**    
`request`  
Data yang akan dikirim ke aliran pengiriman dan aliran pengiriman target, jika berbeda dari aliran default.  
Wajib: `true`  
Jenis: `object` yang mencakup properti berikut:    
`data`  
Data untuk mengirim ke aliran pengiriman.  
Wajib: `true`  
Jenis: `string`  
`delivery_stream_arn`  
ARN dari target aliran pengiriman Kinesis. Sertakan properti ini untuk menimpa aliran pengiriman default.  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `arn:aws:firehose:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):deliverystream/([a-zA-Z0-9_\-.]+)$`  
`id`  
ID arbitrer untuk permintaan. Properti ini digunakan untuk memetakan permintaan input untuk respons output. Ketika ditentukan, `id` properti dalam objek respon diatur ke nilai ini. Jika Anda tidak menggunakan fitur ini, Anda dapat menghilangkan properti ini atau menentukan string kosong.  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `.*`  
**Contoh masukan**  

```
{
     "request": {
        "delivery_stream_arn": "arn:aws:firehose:region:account-id:deliverystream/stream2-name",
        "data": "Data to send to the delivery stream."
     },
     "id": "request123"
}
```
 

**Filter topik**: `kinesisfirehose/message/binary/#`  
Gunakan topik ini untuk mengirim pesan yang berisi data biner. Konektor tidak mengurai data biner. Data dialirkan seperti apa adanya.  
Untuk memetakan permintaan input untuk respon output, mengganti `#` wildcard dalam topik pesan dengan ID permintaan arbitrer. Misalnya, jika Anda mempublikasikan pesan ke `kinesisfirehose/message/binary/request123`, properti `id` di objek respons akan ditetapkan ke `request123`.  
Jika Anda tidak ingin memetakan permintaan untuk respon, Anda dapat menerbitkan pesan Anda ke `kinesisfirehose/message/binary/`. Pastikan untuk menyertakan garis miring.

------

## Data output
<a name="kinesis-firehose-connector-data-output"></a>

Konektor ini menerbitkan informasi status sebagai data output pada topik MQTT.

------
#### [ Versions 2 - 5 ]

<a name="topic-filter"></a>**Filter topik dalam langganan**  <a name="kinesis-firehose-output-topic-status"></a>
`kinesisfirehose/message/status`

**Contoh keluaran**  
Tanggapan berisi status setiap catatan data yang dikirim dalam batch.  

```
{
    "response": [
        {
            "ErrorCode": "error",
            "ErrorMessage": "test error",
            "id": "request123",
            "status": "fail"
        },
        {
            "firehose_record_id": "xyz2",
            "id": "request456",
            "status": "success"
        },
        {
            "firehose_record_id": "xyz3",
            "id": "request890",
            "status": "success"
        }
    ]
}
```
Jika konektor mendeteksi kesalahan yang dapat diulang (sebagai contoh, kesalahan koneksi), konektor mengulang lagi publikasinya dalam batch berikutnya. Backoff eksponensial ditangani oleh SDK. AWS Permintaan yang gagal dengan kesalahan retryable ditambahkan kembali ke akhir antrian untuk penerbitan lebih lanjut.

------
#### [ Version 1 ]

<a name="topic-filter"></a>**Filter topik dalam langganan**  <a name="kinesis-firehose-output-topic-status"></a>
`kinesisfirehose/message/status`

**Contoh keluaran: Sukses**  

```
{
   "response": {
       "firehose_record_id": "1lxfuuuFomkpJYzt/34ZU/r8JYPf8Wyf7AXqlXm",
       "status": "success"
    },
    "id": "request123"
}
```

**Contoh keluaran: Kegagalan**  

```
{
   "response" : {
       "error": "ResourceNotFoundException",
       "error_message": "An error occurred (ResourceNotFoundException) when calling the PutRecord operation: Firehose test1 not found under account 123456789012.",
       "status": "fail"
   },
   "id": "request123"
}
```

------

## Contoh Penggunaan
<a name="kinesis-firehose-connector-usage"></a>

<a name="connectors-setup-intro"></a>Gunakan langkah-langkah tingkat tinggi berikut untuk mengatur contoh fungsi Lambda Python 3.7 yang dapat Anda gunakan untuk mencoba konektor.

**catatan**  <a name="connectors-setup-get-started-topics"></a>
Jika Anda menggunakan waktu aktif Python lainnya, Anda dapat membuat symlink dari Python3.x ke Python 3.7.
Topik [Memulai dengan konektor (konsol)](connectors-console.md) dan [Memulai dengan konektor (CLI)](connectors-cli.md) berisi langkah-langkah terperinci yang menunjukkan cara mengonfigurasi dan men-deploy contoh konektor Notifikasi Twilio.

1. Pastikan Anda memenuhi [persyaratan](#kinesis-firehose-connector-req) untuk konektor.

   <a name="set-up-group-role"></a>Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat [Mengelola peran grup Greengrass (konsol)](group-role.md#manage-group-role-console) atau [Mengelola peran grup Greengrass (CLI)](group-role.md#manage-group-role-cli).

1. <a name="connectors-setup-function"></a>Buat dan terbitkan fungsi Lambda yang mengirimkan data input ke konektor.

   Simpan [kode contoh](#kinesis-firehose-connector-usage-example) sebagai file PY. <a name="connectors-setup-function-sdk"></a>Unduh dan unzip [AWS IoT Greengrass Core SDK for Python](lambda-functions.md#lambda-sdks-core). Kemudian, buat paket zip yang berisi file PY dan folder `greengrasssdk` dalam tingkat root. Paket zip ini adalah paket deployment yang Anda unggah ke AWS Lambda.

   <a name="connectors-setup-function-publish"></a>Setelah Anda membuat fungsi Lambda Python 3.7, terbitkankan versi fungsi dan buat alias.

1. Konfigurasikan grup Greengrass Anda.

   1. <a name="connectors-setup-gg-function"></a>Tambahkan fungsi Lambda dengan aliasnya (direkomendasikan). Konfigurasikan siklus hidup Lambda sebagai berumur panjang (atau `"Pinned": true` dalam CLI).

   1. Tambahkan konektor dan konfigurasikan [parameter](#kinesis-firehose-connector-param).

   1. Tambahkan langganan yang mengizinkan konektor untuk menerima [data input JSON](#kinesis-firehose-connector-data-input) dan mengirim [data output](#kinesis-firehose-connector-data-output) pada filter topik yang didukung.
      + <a name="connectors-setup-subscription-input-data"></a>Atur fungsi Lambda sebagai sumber, konektor sebagai target, dan gunakan filter topik input yang mendukung.
      + <a name="connectors-setup-subscription-output-data"></a>Atur konektor sebagai sumber, AWS IoT Core sebagai target, dan gunakan filter topik input yang mendukung. Anda menggunakan langganan ini untuk melihat pesan status di AWS IoT konsol.

1. <a name="connectors-setup-deploy-group"></a>Men-deploy grup.

1. <a name="connectors-setup-test-sub"></a>Di AWS IoT konsol, pada halaman **Uji**, berlangganan topik data keluaran untuk melihat pesan status dari konektor. Contoh fungsi Lambda yang berumur panjang dan mulai mengirim pesan segera setelah grup dalam-deploy.

   Setelah selesai pengujian, Anda dapat mengatur siklus hidup Lambda ke sesuai permintaan (atau `"Pinned": false` dalam CLI) dan men-deploy grup. Ini menghentikan fungsi dari mengirim pesan.

### Contoh
<a name="kinesis-firehose-connector-usage-example"></a>

Contoh fungsi Lambda berikut mengirimkan pesan input ke konektor. Pesan ini berisi data JSON.

```
import greengrasssdk
import time
import json

iot_client = greengrasssdk.client('iot-data')
send_topic = 'kinesisfirehose/message'

def create_request_with_all_fields():
    return  {
        "request": {
            "data": "Message from Firehose Connector Test"
        },
        "id" : "req_123"
    }

def publish_basic_message():
    messageToPublish = create_request_with_all_fields()
    print("Message To Publish: ", messageToPublish)
    iot_client.publish(topic=send_topic,
        payload=json.dumps(messageToPublish))

publish_basic_message()

def lambda_handler(event, context):
    return
```

## Lisensi
<a name="kinesis-firehose-connector-license"></a>

Konektor Kinesis Firehose mencakup perangkat lunak/lisensi pihak ketiga berikut ini:<a name="boto-3-licenses"></a>
+ [AWS SDK untuk Python (Boto3)](https://pypi.org/project/boto3/)/Lisensi 2.0 Apache
+ [botocore](https://pypi.org/project/botocore/)/Apache License 2.0
+ [dateutil](https://pypi.org/project/python-dateutil/1.4/)/PSF License
+ [docutils](https://pypi.org/project/docutils/)/BSD License, Lisensi Publik Umum (GPL) GNU, Lisensi Dasar Perangkat Lunak Python, Domain Publik
+ [jmespath](https://pypi.org/project/jmespath/)/MIT License
+ [s3transfer](https://pypi.org/project/s3transfer/)/Apache License 2.0
+ [urllib3](https://pypi.org/project/urllib3/)/Lisensi MIT

Konektor ini dirilis di bawah [Perjanjian Lisensi Perangkat lunak core Greengrass](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Changelog
<a name="kinesis-firehose-connector-changelog"></a>

Tabel berikut menjelaskan perubahan dalam setiap versi konektor.


| Versi | Perubahan | 
| --- | --- | 
| 5 | <a name="isolation-mode-changelog"></a>Ditambahkan parameter `IsolationMode` untuk mengonfigurasi mode kontainerisasi untuk konektor. | 
| 4 | <a name="upgrade-runtime-py3.7"></a>Memperbarui waktu aktif Lambda untuk Python 3.7, yang mengubah persyaratan waktu aktif. | 
| 3 | Perbaiki untuk mengurangi logging berlebihan dan perbaikan bug kecil lainnya.  | 
| 2 | Menambahkan dukungan untuk mengirim catatan data batch ke Firehose pada interval tertentu. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/kinesis-firehose-connector.html)  | 
| 1 | Pelepasan awal.  | 

<a name="one-conn-version"></a>Sebuah grup Greengrass dapat berisi hanya satu versi konektor pada suatu waktu. Untuk informasi lebih lanjut tentang pembaruan versi konektor, lihat [Versi upgrade konektor](connectors.md#upgrade-connector-versions).

## Lihat juga
<a name="kinesis-firehose-connector-see-also"></a>
+ [Integrasikan dengan layanan dan protokol menggunakan konektor Greengrass](connectors.md)
+ [Memulai dengan konektor Greengrass (konsol)](connectors-console.md)
+ [Memulai dengan konektor Greengrass (CLI)](connectors-cli.md)
+ [Apa Amazon Kinesis Data Firehose?](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html) dalam *Panduan Developer Amazon Kinesis*

# Konektor Umpan balik ML
<a name="ml-feedback-connector"></a>

**Awas**  <a name="connectors-extended-life-phase-warning"></a>
Konektor ini telah pindah ke *fase umur yang diperpanjang*, dan AWS IoT Greengrass tidak akan merilis pembaruan yang menyediakan fitur, penyempurnaan pada fitur yang ada, patch keamanan, atau perbaikan bug. Untuk informasi selengkapnya, lihat [AWS IoT Greengrass Version 1 kebijakan pemeliharaan](maintenance-policy.md).

Konektor Umpan balik ML memudahkan Anda mengakses data model machine learning (ML) untuk pelatihan ulang dan analisis model. Konektor:
+ Unggah data input (sampel) yang digunakan oleh model ML Anda ke Amazon S3. Model input dapat dalam format apa pun, seperti gambar, JSON, atau audio. Setelah sampel diunggah ke cloud, Anda dapat menggunakannya untuk melatih model untuk meningkatkan akurasi dan ketepatan prediksi. Misalnya, Anda dapat menggunakan [SageMaker AI Ground Truth](https://docs.aws.amazon.com/sagemaker/latest/dg/sms.html) untuk memberi label pada sampel dan [SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) Anda untuk melatih kembali model.
+ Menerbitkan hasil prediksi dari model sebagai pesan MQTT. Hal ini memungkinkan Anda memantau dan menganalisis kualitas inferensi model Anda secara real time. Anda juga dapat menyimpan hasil prediksi dan menggunakannya untuk menganalisis tren dari waktu ke waktu.
+ Menerbitkan metrik tentang unggahan sampel dan data sampel ke Amazon. CloudWatch

Untuk mengonfigurasi konektor ini, Anda menjelaskan dukungan Anda *konfigurasi umpan balik* dalam format JSON. Sebuah konfigurasi umpan balik mendefinisikan properti seperti tujuan bucket Amazon S3, jenis konten, dan [strategi sampling](#ml-feedback-connector-sampling-strategies). (Strategi pengambilan sampel digunakan untuk menentukan sampel mana yang akan diunggah.)

Anda dapat menggunakan konektor Umpan balik ML dalam skenario berikut:
+ Dengan fungsi Lambda yang ditetapkan pengguna. Fungsi Lambda inferensi lokal Anda menggunakan Machine AWS IoT Greengrass Learning SDK untuk memanggil konektor ini dan meneruskan konfigurasi umpan balik target, input model, dan keluaran model (hasil prediksi). Sebagai contoh, lihat [Contoh Penggunaan](#ml-feedback-connector-usage).
+ Dengan [konektor Klasifikasi Citra ML](image-classification-connector.md) (v2). Untuk menggunakan konektor ini dengan konektor Klasifikasi Citra ML, konfigurasikan parameter `MLFeedbackConnectorConfigId` untuk konektor Klasifikasi Citra ML.
+ Dengan [konektor Deteksi Objek ML](obj-detection-connector.md). Untuk menggunakan konektor ini dengan konektor Deteksi Objek ML, konfigurasikan parameter `MLFeedbackConnectorConfigId` untuk konektor Deteksi Objek ML.

**ARN:** `arn:aws:greengrass:region::/connectors/MLFeedback/versions/1`

## Persyaratan
<a name="ml-feedback-connector-req"></a>

Konektor ini memiliki persyaratan sebagai berikut:
+ AWS IoT Greengrass Perangkat Lunak Inti v1.9.3 atau yang lebih baru.
+ <a name="conn-req-py-3.7-and-3.8"></a>[Python](https://www.python.org/) versi 3.7 atau 3.8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
**catatan**  <a name="use-runtime-py3.8"></a>
Untuk menggunakan Python 3.8, jalankan perintah berikut untuk membuat link simbolik dari folder instalasi default Python 3.7 ke binari Python 3.8 yang diinstal.  

  ```
  sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7
  ```
Ini mengonfigurasi perangkat Anda untuk memenuhi persyaratan Python untuk AWS IoT Greengrass.
+ Satu atau lebih bucket Amazon S3. Jumlah bucket yang Anda gunakan tergantung pada strategi pengambilan sampel Anda.
+ [Peran grup Greengrass](group-role.md) dikonfigurasi untuk mengizinkan `s3:PutObject` tindakan pada objek dalam tujuan bucket Amazon S3, seperti yang ditunjukkan dalam contoh kebijakan IAM berikut.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": "s3:PutObject",
              "Resource": [
                  "arn:aws:s3:::bucket-name/*"
              ]
          }
      ]
  }
  ```

------

  Kebijakan harus mencakup semua bucket tujuan sebagai sumber. Anda dapat memberikan akses terperinci atau bersyarat ke sumber daya (sebagai contoh, dengan menggunakan skema penamaan wildcard \$1).

  <a name="set-up-group-role"></a>Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat [Mengelola peran grup Greengrass (konsol)](group-role.md#manage-group-role-console) atau [Mengelola peran grup Greengrass (CLI)](group-role.md#manage-group-role-cli).
+ [Konektor CloudWatch Metrik](cloudwatch-metrics-connector.md) ditambahkan ke grup Greengrass dan dikonfigurasi. Hal ini diperlukan hanya jika Anda ingin menggunakan fitur pelaporan metrik.
+ [AWS IoT Greengrass Machine Learning SDK](lambda-functions.md#lambda-sdks-ml) v1.1.0 diperlukan untuk berinteraksi dengan konektor ini.

## Parameter
<a name="ml-feedback-connector-param"></a>

`FeedbackConfigurationMap`  
Satu set dari satu atau lebih konfigurasi umpan balik yang konektor dapat gunakan untuk mengunggah sampel ke Amazon S3. Konfigurasi umpan balik mendefinisikan parameter seperti bucket tujuan, jenis konten, dan [strategi pengambilan sampel](#ml-feedback-connector-sampling-strategies). Ketika konektor ini dipanggil, memanggil fungsi Lambda atau konektor menentukan konfigurasi umpan balik target.  
Nama tampilan di AWS IoT konsol: **Peta konfigurasi umpan balik**  
Wajib: `true`  
Jenis: Sebuah string JSON terbentuk yang mendefinisikan himpunan konfigurasi umpan balik yang didukung. Sebagai contoh, lihat [FeedbackConfigurationMap contoh](#ml-feedback-connector-feedbackconfigmap).    
  
ID objek konfigurasi umpan balik memiliki persyaratan sebagai berikut.    
  
ID:  
+ Harus unik dalam seluruh objek konfigurasi.
+ Harus mulai dengan angka atau huruf kecil. Dapat berisi huruf kecil dan huruf besar, angka, dan tanda hubung.
+ Panjangnya harus 2 - 63 karakter.
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$`  
Contoh:`MyConfig0`,`config-a`, `12id`
Tubuh objek konfigurasi umpan balik berisi properti berikut.    
`s3-bucket-name`  
Nama bucket Amazon S3 tujuan.  
Peran grup harus mengizinkan tindakan `s3:PutObject` pada semua bucket tujuan. Untuk informasi selengkapnya, lihat [Persyaratan](#ml-feedback-connector-req).
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^[a-z0-9\.\-]{3,63}$`  
`content-type`  
Jenis konten sampel untuk diunggah. Semua konten untuk konfigurasi umpan balik individu harus dari jenis yang sama.  
Wajib: `true`  
Jenis: `string`  
Contoh:`image/jpeg`,`application/json`, `audio/ogg`  
`s3-prefix`  
Prefiks kunci yang digunakan untuk sampel yang diunggah. Prefix serupa dengan nama direktori. Itu mengizinkan menyimpan data serupa di bawah direktori yang sama di bucket. Untuk informasi selengkapnya, lihat [Kunci objek dan metadata](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html) di *Panduan Pengguna Layanan Penyimpanan Sederhana Amazon*.  
Wajib: `false`  
Jenis: `string`  
`file-ext`  
Ekstensi file yang digunakan untuk sampel yang diunggah. Harus ekstensi file yang valid untuk jenis konten.  
Wajib: `false`  
Jenis: `string`  
Contoh:`jpg`,`json`, `ogg`  
`sampling-strategy`  
Untuk [Strategi sampling](#ml-feedback-connector-sampling-strategies) yang digunakan untuk memfilter sampel yang diunggah. Jika dihilangkan, konektor mencoba untuk mengunggah semua sampel yang diterimanya.  
Wajib: `false`  
Jenis: Sebuah string JSON terbentuk dengan baik yang berisi properti berikut.    
`strategy-name`  
Nama strategi sampling.  
Wajib: `true`  
Jenis: `string`  
Nilai yang valid: `RANDOM_SAMPLING`, `LEAST_CONFIDENCE`, `MARGIN`, atau `ENTROPY`  
`rate`  
Tingkat untuk [strategi sampling](#ml-feedback-connector-sampling-strategies-random) acak.  
Wajib: `true` jika `strategy-name` adalah `RANDOM_SAMPLING`.  
Tipe: `number`  
Nilai yang valid: `0.0 - 1.0`  
`threshold`  
Ambang batas untuk [KepercayaanTerkecil](#ml-feedback-connector-sampling-strategies-least-confidence), [Margin](#ml-feedback-connector-sampling-strategies-margin), atau [Entropi](#ml-feedback-connector-sampling-strategies-entropy) strategi sampling.  
Wajib: `true` jika `strategy-name` adalah `LEAST_CONFIDENCE`, `MARGIN`, atau `ENTROPY`.  
Tipe: `number`  
Nilai yang valid:  
+ `0.0 - 1.0` untuk `LEAST_CONFIDENCE` atau `MARGIN` strategi.
+ `0.0 - no limit` untuk `ENTROPY` strategi.

`RequestLimit`  
Jumlah maksimum permintaan yang dapat diproses konektor pada satu waktu.  
Anda dapat menggunakan parameter ini untuk membatasi konsumsi memori dengan membatasi jumlah permintaan yang konektor proses pada ketika yang sama. Permintaan yang melebihi batas ini diabaikan.  
Nama tampilan di AWS IoT konsol: **Batas permintaan**  
Wajib: `false`  
Jenis: `string`  
Nilai yang valid: `0 - 999`  
Pola yang valid: `^$|^[0-9]{1,3}$`

### Buat Contoh Konektor (AWS CLI)
<a name="ml-feedback-connector-create"></a>

Perintah CLI berikut membuat `ConnectorDefinition` dengan versi awal yang berisi konektor Umpan balik ML.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyMLFeedbackConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/MLFeedback/versions/1",
            "Parameters": {
                "FeedbackConfigurationMap": "{  \"RandomSamplingConfiguration\": {  \"s3-bucket-name\": \"my-aws-bucket-random-sampling\",  \"content-type\": \"image/png\",  \"file-ext\": \"png\",  \"sampling-strategy\": {  \"strategy-name\": \"RANDOM_SAMPLING\",  \"rate\": 0.5  } },  \"LeastConfidenceConfiguration\": {  \"s3-bucket-name\": \"my-aws-bucket-least-confidence-sampling\",  \"content-type\": \"image/png\",  \"file-ext\": \"png\",  \"sampling-strategy\": {  \"strategy-name\": \"LEAST_CONFIDENCE\",  \"threshold\": 0.4  } } }", 
                "RequestLimit": "10"
            }
        }
    ]
}'
```

### FeedbackConfigurationMap contoh
<a name="ml-feedback-connector-feedbackconfigmap"></a>

Berikut ini adalah nilai contoh diperluas untuk parameter `FeedbackConfigurationMap` ini. Contoh ini mencakup beberapa konfigurasi umpan balik yang menggunakan strategi sampling yang berbeda.

```
{
    "ConfigID1": {
        "s3-bucket-name": "my-aws-bucket-random-sampling",
        "content-type": "image/png",
        "file-ext": "png",
        "sampling-strategy": {
            "strategy-name": "RANDOM_SAMPLING",
            "rate": 0.5
        }
    },
    "ConfigID2": {
        "s3-bucket-name": "my-aws-bucket-margin-sampling",
        "content-type": "image/png",
        "file-ext": "png",
        "sampling-strategy": {
            "strategy-name": "MARGIN",
            "threshold": 0.4
        }
    },
    "ConfigID3": {
        "s3-bucket-name": "my-aws-bucket-least-confidence-sampling",
        "content-type": "image/png",
        "file-ext": "png",
        "sampling-strategy": {
            "strategy-name": "LEAST_CONFIDENCE",
            "threshold": 0.4
        }
    },
    "ConfigID4": {
        "s3-bucket-name": "my-aws-bucket-entropy-sampling",
        "content-type": "image/png",
        "file-ext": "png",
        "sampling-strategy": {
            "strategy-name": "ENTROPY",
            "threshold": 2
        }
    },
    "ConfigID5": {
        "s3-bucket-name": "my-aws-bucket-no-sampling",
        "s3-prefix": "DeviceA",
        "content-type": "application/json"
    }
}
```

### Strategi sampling
<a name="ml-feedback-connector-sampling-strategies"></a>

Konektor mendukung empat strategi sampling yang menentukan apakah akan mengunggah sampel yang dilewatkan ke konektor. Sampel adalah contoh diskrit data yang menggunakan model untuk prediksi. Anda dapat menggunakan strategi sampling untuk memfilter sampel yang paling mungkin untuk meningkatkan akurasi model.

`RANDOM_SAMPLING`  <a name="ml-feedback-connector-sampling-strategies-random"></a>
Mengunggah sampel secara acak berdasarkan tingkat yang disediakan. Mengunggah sampel jika nilai yang dihasilkan secara acak kurang dari tingkat. Semakin tinggi tingkat, semakin banyak sampel yang diunggah.  
Strategi ini mengabaikan prediksi model yang disediakan.

`LEAST_CONFIDENCE`  <a name="ml-feedback-connector-sampling-strategies-least-confidence"></a>
Mengunggah sampel yang probabilitas kepercayaan maksimum jatuh di bawah ambang batas yang disediakan.    
Contoh skenario:  
Ambang batas: `.6`  
Prediksi model: `[.2, .2, .4, .2]`  
Keyakinan maksimum probabilitas: `.4`  
Hasil:  
Gunakan sampel karena probabilitas kepercayaan maksimum (`.4`) <= ambang batas (`.6`).

`MARGIN`  <a name="ml-feedback-connector-sampling-strategies-margin"></a>
Unggah sampel jika margin antara dua probabilitas kepercayaan jatuh dalam ambang batas yang disediakan. Margin adalah perbedaan antara dua probabilitas teratas.    
Contoh skenario:  
Ambang batas: `.02`  
Prediksi model: `[.3, .35, .34, .01]`  
Top dua probabilitas kepercayaan: `[.35, .34]`  
Margin: `.01` (`.35 - .34`)  
Hasil:  
Gunakan sampel karena margin (`.01`) <= ambang batas (`.02`).

`ENTROPY`  <a name="ml-feedback-connector-sampling-strategies-entropy"></a>
Unggah sampel yang entropi lebih besar dari ambang batas yang disediakan. Gunakan model prediksi entropi dinormalisasi.    
Contoh skenario:  
Ambang batas: `0.75`  
Prediksi model: `[.5, .25, .25]`  
Entropi untuk prediksi: `1.03972`  
Hasil:  
Gunakan sampel karena entropi (`1.03972`) > ambang batas (`0.75`).

## Masukan data
<a name="ml-feedback-connector-data-input"></a>

Fungsi Lambda yang ditentukan pengguna menggunakan `publish` fungsi `feedback` klien di Machine Learning AWS IoT Greengrass SDK untuk memanggil konektor. Sebagai contoh, lihat [Contoh Penggunaan](#ml-feedback-connector-usage).

**catatan**  
Konektor ini tidak menerima pesan MQTT sebagai data input.

Fungsi `publish` mengambil argumen berikut:

ConfigId  
ID dari konfigurasi umpan balik target. Ini harus sesuai dengan ID konfigurasi umpan balik yang ditentukan dalam [FeedbackConfigurationMap](#ml-feedback-connector-param)parameter untuk konektor Umpan Balik ML.  
Wajib: BETUL  
Jenis: string

ModelInput  
Data input yang dilewatkan ke model untuk inferensi. Data input ini diunggah menggunakan konfigurasi target kecuali disaring berdasarkan strategi sampling.  
Wajib: BETUL  
Jenis: byte

ModelPrediction  
Hasil prediksi dari model. Jenis hasil dapat berupa kamus atau daftar. Sebagai contoh, hasil prediksi dari konektor Klasifikasi Citra ML adalah daftar probabilitas (seperti `[0.25, 0.60, 0.15]`). Data ini diterbitkan ke topik `/feedback/message/prediction` ini.  
Wajib: BETUL  
Jenis: kamus atau daftar `float` nilai

Metadata  
Pelanggan didefinisikan, aplikasi-spesifik metadata yang terlampir pada sampel yang diunggah dan diterbitkan ke `/feedback/message/prediction` Topik. Konektor juga menyisipkan sebuah `publish-ts` kunci dengan nilai timestamp ke metadata.  
Wajib: SALAH  
Jenis: kamus  
Contoh: `{"some-key": "some value"}`

## Data output
<a name="ml-feedback-connector-data-output"></a>

Konektor ini menerbitkan data ke tiga topik MQTT:
+ Informasi status dari konektor pada `feedback/message/status` topik.
+ Hasil prediksi pada `feedback/message/prediction` topik.
+ Metrik yang ditujukan untuk CloudWatch topik tersebut. `cloudwatch/metric/put`

<a name="connectors-input-output-subscriptions"></a>Anda harus mengonfigurasi langganan untuk mengizinkan konektor berkomunikasi pada topik MQTT. Untuk informasi selengkapnya, lihat [Input dan output](connectors.md#connectors-inputs-outputs).

**Filter topik**: `feedback/message/status`  
Gunakan topik ini untuk memantau status unggah sampel dan batalkan sampel. Konektor menerbitkan topik ini setiap kali menerima permintaan.     
**Contoh keluaran: Unggahan sampel berhasil**  

```
{
  "response": {
    "status": "success",
    "s3_response": {
      "ResponseMetadata": {
        "HostId": "IOWQ4fDEXAMPLEQM+ey7N9WgVhSnQ6JEXAMPLEZb7hSQDASK+Jd1vEXAMPLEa3Km",
        "RetryAttempts": 1,
        "HTTPStatusCode": 200,
        "RequestId": "79104EXAMPLEB723",
        "HTTPHeaders": {
          "content-length": "0",
          "x-amz-id-2": "lbbqaDVFOhMlyU3gRvAX1ZIdg8P0WkGkCSSFsYFvSwLZk3j7QZhG5EXAMPLEdd4/pEXAMPLEUqU=",
          "server": "AmazonS3",
          "x-amz-expiration": "expiry-date=\"Wed, 17 Jul 2019 00:00:00 GMT\", rule-id=\"OGZjYWY3OTgtYWI2Zi00ZDllLWE4YmQtNzMyYzEXAMPLEoUw\"",
          "x-amz-request-id": "79104EXAMPLEB723",
          "etag": "\"b9c4f172e64458a5fd674EXAMPLE5628\"",
          "date": "Thu, 11 Jul 2019 00:12:50 GMT",
          "x-amz-server-side-encryption": "AES256"
        }
      },
      "bucket": "greengrass-feedback-connector-data-us-west-2",
      "ETag": "\"b9c4f172e64458a5fd674EXAMPLE5628\"",
      "Expiration": "expiry-date=\"Wed, 17 Jul 2019 00:00:00 GMT\", rule-id=\"OGZjYWY3OTgtYWI2Zi00ZDllLWE4YmQtNzMyYzEXAMPLEoUw\"",
      "key": "s3-key-prefix/UUID.file_ext",
      "ServerSideEncryption": "AES256"
    }
  },
  "id": "5aaa913f-97a3-48ac-5907-18cd96b89eeb"
}
```
Konektor menambahkan `bucket` dan `key` bidang untuk respon dari Amazon S3. Untuk informasi lebih lanjut tentang respons Amazon s3, lihat [objek PUT](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html#RESTObjectPUT-responses) dalam *Referensi Amazon Simple Storage Service API*.  
**Contoh keluaran: Sampel turun karena strategi pengambilan sampel**  

```
{
  "response": {
    "status": "sample_dropped_by_strategy"
  },
  "id": "4bf5aeb0-d1e4-4362-5bb4-87c05de78ba3"
}
```  
**Contoh keluaran: Unggahan sampel gagal**  
Status kegagalan mencakup pesan gagal sebagai `error_message` nilai dan kelas pengecualian sebagai `error` nilai.  

```
{
  "response": {
    "status": "fail",
    "error_message": "[RequestId: 4bf5aeb0-d1e4-4362-5bb4-87c05de78ba3] Failed to upload model input data due to exception. Model prediction will not be published. Exception type: NoSuchBucket, error: An error occurred (NoSuchBucket) when calling the PutObject operation: The specified bucket does not exist",
    "error": "NoSuchBucket"
  },
  "id": "4bf5aeb0-d1e4-4362-5bb4-87c05de78ba3"
}
```  
**Contoh keluaran: Permintaan dibatasi karena batas permintaan**  

```
{
  "response": {
    "status": "fail",
    "error_message": "Request limit has been reached (max request: 10 ). Dropping request.",
    "error": "Queue.Full"
  },
  "id": "4bf5aeb0-d1e4-4362-5bb4-87c05de78ba3"
}
```

**Filter topik**: `feedback/message/prediction`  
Gunakan topik ini untuk mendengarkan prediksi berdasarkan data sampel yang diunggah. Hal ini memungkinkan Anda menganalisis kinerja model Anda secara real time. Prediksi model diterbitkan ke topik ini hanya jika data berhasil diunggah ke Amazon S3. Pesan yang diterbitkan pada topik ini dalam format JSON. Mereka berisi link ke objek data yang diunggah, prediksi model, dan metadata termasuk dalam permintaan.  
Anda juga dapat menyimpan hasil prediksi dan menggunakannya untuk melaporkan dan menganalisis tren dari waktu ke waktu. Tren dapat memberikan pandangan yang berharga. Sebagai contoh, sebuah *tren penurunan akurasi dari waktu ke waktu* dapat membantu Anda untuk memutuskan apakah model perlu dilatih ulang.    
**Contoh keluaran**  

```
{
  "source-ref": "s3://greengrass-feedback-connector-data-us-west-2/s3-key-prefix/UUID.file_ext",
  "model-prediction": [
    0.5,
    0.2,
    0.2,
    0.1
  ],
  "config-id": "ConfigID2",
  "metadata": {
    "publish-ts": "2019-07-11 00:12:48.816752"
  }
}
```
Anda dapat mengonfigurasi konektor [IoT Analytics](iot-analytics-connector.md) untuk berlangganan topik ini dan mengirimkan informasinya AWS IoT Analytics untuk analisis lebih lanjut atau historis.

**Filter topik:** `cloudwatch/metric/put`  
Ini adalah topik keluaran yang digunakan untuk mempublikasikan metrik. CloudWatch Fitur ini mengharuskan Anda menginstal dan mengkonfigurasi [konektor CloudWatch Metrik](cloudwatch-metrics-connector.md).  
Termasuk metrik:  
+ Jumlah sampel yang diunggah.
+ Ukuran sampel yang diunggah.
+ Jumlah kesalahan dari unggahan ke Amazon S3.
+ Jumlah sampel batal berdasarkan strategi sampling.
+ Jumlah permintaan yang ditahan.  
**Contoh keluaran: Ukuran sampel data (dipublikasikan sebelum unggahan aktual)**  

```
{
  "request": {
    "namespace": "GreengrassFeedbackConnector",
    "metricData": {
      "value": 47592,
      "unit": "Bytes",
      "metricName": "SampleSize"
    }
  }
}
```  
**Contoh keluaran: Unggahan sampel berhasil**  

```
{
  "request": {
    "namespace": "GreengrassFeedbackConnector",
    "metricData": {
      "value": 1,
      "unit": "Count",
      "metricName": "SampleUploadSuccess"
    }
  }
}
```  
**Contoh keluaran: Unggahan sampel berhasil dan hasil prediksi dipublikasikan**  

```
{
  "request": {
    "namespace": "GreengrassFeedbackConnector",
    "metricData": {
      "value": 1,
      "unit": "Count",
      "metricName": "SampleAndPredictionPublished"
    }
  }
}
```  
**Contoh keluaran: Unggahan sampel gagal**  

```
{
  "request": {
    "namespace": "GreengrassFeedbackConnector",
    "metricData": {
      "value": 1,
      "unit": "Count",
      "metricName": "SampleUploadFailure"
    }
  }
}
```  
**Contoh keluaran: Sampel turun karena strategi pengambilan sampel**  

```
{
  "request": {
    "namespace": "GreengrassFeedbackConnector",
    "metricData": {
      "value": 1,
      "unit": "Count",
      "metricName": "SampleNotUsed"
    }
  }
}
```  
**Contoh keluaran: Permintaan dibatasi karena batas permintaan**  

```
{
  "request": {
    "namespace": "GreengrassFeedbackConnector",
    "metricData": {
      "value": 1,
      "unit": "Count",
      "metricName": "ErrorRequestThrottled"
    }
  }
}
```

## Contoh Penggunaan
<a name="ml-feedback-connector-usage"></a>

Contoh berikut adalah fungsi Lambda yang ditetapkan pengguna yang menggunakan [AWS IoT Greengrass Machine Learning SDK](lambda-functions.md#lambda-sdks-ml) untuk mengirim data ke konektor Umpan balik ML.

**catatan**  
Anda dapat mengunduh AWS IoT Greengrass Machine Learning SDK dari [halaman AWS IoT Greengrass unduhan](what-is-gg.md#gg-ml-sdk-download).

```
import json
import logging
import os
import sys
import greengrass_machine_learning_sdk as ml

client = ml.client('feedback')

try:
    feedback_config_id = os.environ["FEEDBACK_CONFIG_ID"]
    model_input_data_dir = os.environ["MODEL_INPUT_DIR"]
    model_prediction_str = os.environ["MODEL_PREDICTIONS"]
    model_prediction = json.loads(model_prediction_str)
except Exception as e:
    logging.info("Failed to open environment variables. Failed with exception:{}".format(e))
    sys.exit(1)

try:
    with open(os.path.join(model_input_data_dir, os.listdir(model_input_data_dir)[0]), 'rb') as f:
        content = f.read()
except Exception as e:
    logging.info("Failed to open model input directory. Failed with exception:{}".format(e))
    sys.exit(1)    

def invoke_feedback_connector():
    logging.info("Invoking feedback connector.")
    try:
        client.publish(
            ConfigId=feedback_config_id,
            ModelInput=content,
            ModelPrediction=model_prediction
        )
    except Exception as e:
        logging.info("Exception raised when invoking feedback connector:{}".format(e))
        sys.exit(1)    

invoke_feedback_connector()

def function_handler(event, context):
    return
```

## Lisensi
<a name="ml-feedback-connector-license"></a>



Konektor Umpan balik ML mencakup perangkat lunak/lisensi pihak ketiga berikut:<a name="boto-3-licenses"></a>
+ [AWS SDK untuk Python (Boto3)](https://pypi.org/project/boto3/)/Lisensi 2.0 Apache
+ [botocore](https://pypi.org/project/botocore/)/Apache License 2.0
+ [dateutil](https://pypi.org/project/python-dateutil/1.4/)/PSF License
+ [docutils](https://pypi.org/project/docutils/)/BSD License, Lisensi Publik Umum (GPL) GNU, Lisensi Dasar Perangkat Lunak Python, Domain Publik
+ [jmespath](https://pypi.org/project/jmespath/)/MIT License
+ [s3transfer](https://pypi.org/project/s3transfer/)/Apache License 2.0
+ [urllib3](https://pypi.org/project/urllib3/)/Lisensi MIT
+ <a name="six-license"></a>[six](https://github.com/benjaminp/six)/MIT

Konektor ini dirilis di bawah [Perjanjian Lisensi Perangkat lunak core Greengrass](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Lihat juga
<a name="ml-feedback-connector-see-also"></a>
+ [Integrasikan dengan layanan dan protokol menggunakan konektor Greengrass](connectors.md)
+ [Memulai dengan konektor Greengrass (konsol)](connectors-console.md)
+ [Memulai dengan konektor Greengrass (CLI)](connectors-cli.md)

# Konektor Klasifikasi Citra ML
<a name="image-classification-connector"></a>

**Awas**  <a name="connectors-extended-life-phase-warning"></a>
Konektor ini telah pindah ke *fase umur yang diperpanjang*, dan AWS IoT Greengrass tidak akan merilis pembaruan yang menyediakan fitur, penyempurnaan pada fitur yang ada, patch keamanan, atau perbaikan bug. Untuk informasi selengkapnya, lihat [AWS IoT Greengrass Version 1 kebijakan pemeliharaan](maintenance-policy.md).

[Konektor](connectors.md) Klasifikasi Gambar ML menyediakan layanan inferensi pembelajaran mesin (ML) yang berjalan pada AWS IoT Greengrass inti. Layanan inferensi lokal ini melakukan klasifikasi gambar menggunakan model yang dilatih oleh algoritma klasifikasi gambar SageMaker AI.

Fungsi Lambda yang ditentukan pengguna menggunakan Machine Learning AWS IoT Greengrass SDK untuk mengirimkan permintaan inferensi ke layanan inferensi lokal. Layanan ini berjalan inferensi lokal dan mengembalikan probabilitas bahwa gambar input milik kategori tertentu.

AWS IoT Greengrass menyediakan versi berikut dari konektor ini, yang tersedia untuk berbagai platform.

------
#### [ Version 2 ]


| Konektor | Deskripsi dan ARN | 
| --- | --- | 
| Klasifikasi Gambar ML Aarch64 JTX2 |  Layanan inferensi klasifikasi gambar untuk NVIDIA TX2 Jetson. Mendukung akselerasi GPU. **ARN:** `arn:aws:greengrass:region::/connectors/ImageClassificationAarch64JTX2/versions/2` | 
| Klasifikasi Citra ML x86\$164 |  Layanan inferensi klasifikasi citra untuk platform x86\$164. **ARN:** `arn:aws:greengrass:region::/connectors/ImageClassificationx86-64/versions/2` | 
| Klasifikasi Gambar ML ARMv7 |  Layanan inferensi klasifikasi gambar untuk ARMv7 platform. **ARN:** `arn:aws:greengrass:region::/connectors/ImageClassificationARMv7/versions/2` | 

------
#### [ Version 1 ]


| Konektor | Deskripsi dan ARN | 
| --- | --- | 
| Klasifikasi Gambar ML Aarch64 JTX2 |  Layanan inferensi klasifikasi gambar untuk NVIDIA TX2 Jetson. Mendukung akselerasi GPU. **ARN:** `arn:aws:greengrass:region::/connectors/ImageClassificationAarch64JTX2/versions/1` | 
| Klasifikasi Citra ML x86\$164 |  Layanan inferensi klasifikasi citra untuk platform x86\$164. **ARN:** `arn:aws:greengrass:region::/connectors/ImageClassificationx86-64/versions/1` | 
| Klasifikasi Citra ML Armv7 |  Layanan inferensi klasifikasi citra untuk platform Armv7. **ARN:** `arn:aws:greengrass:region::/connectors/ImageClassificationARMv7/versions/1` | 

------

Untuk informasi tentang perubahan versi, lihat [Changelog](#image-classification-connector-changelog).

## Persyaratan
<a name="image-classification-connector-req"></a>

Konektor-konektor ini memiliki persyaratan sebagai berikut:

------
#### [ Version 2 ]
+ AWS IoT Greengrass Perangkat Lunak Inti v1.9.3 atau yang lebih baru.
+ <a name="conn-req-py-3.7-and-3.8"></a>[Python](https://www.python.org/) versi 3.7 atau 3.8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
**catatan**  <a name="use-runtime-py3.8"></a>
Untuk menggunakan Python 3.8, jalankan perintah berikut untuk membuat link simbolik dari folder instalasi default Python 3.7 ke binari Python 3.8 yang diinstal.  

  ```
  sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7
  ```
Ini mengonfigurasi perangkat Anda untuk memenuhi persyaratan Python untuk AWS IoT Greengrass.
+ <a name="req-image-classification-framework"></a>Dependensi untuk MXNet kerangka Apache yang diinstal pada perangkat inti. Untuk informasi selengkapnya, lihat [Menginstal MXNet dependensi pada inti AWS IoT Greengrass](#image-classification-connector-config).
+ <a name="req-image-classification-resource"></a>[Sumber daya ML](ml-inference.md#ml-resources) dalam grup Greengrass yang mereferensikan sumber model AI. SageMaker Model ini harus dilatih oleh algoritma klasifikasi gambar SageMaker AI. Untuk informasi selengkapnya, lihat [Algoritma klasifikasi gambar](https://docs.aws.amazon.com/sagemaker/latest/dg/image-classification.html) di *Panduan Pengembang Amazon SageMaker AI*.
+ <a name="req-image-classification-feedback"></a>[Konektor Umpan balik ML](ml-feedback-connector.md) ditambahkan ke grup Greengrass dan dikonfigurasi. Hal ini diperlukan hanya jika Anda ingin menggunakan konektor untuk mengunggah model data input dan menerbitkan prediksi untuk topik MQTT.
+ <a name="req-image-classification-policy"></a>[Peran grup Greengrass](group-role.md) dikonfigurasi untuk mengizinkan tindakan `sagemaker:DescribeTrainingJob` pada tugas pelatihan target, seperti yang ditunjukkan dalam contoh kebijakan IAM berikut.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "sagemaker:DescribeTrainingJob"
              ],
              "Resource": "arn:aws:sagemaker:us-east-1:123456789012:training-job/training-job-name"
          }
      ]
  }
  ```

------

  <a name="set-up-group-role"></a>Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat [Mengelola peran grup Greengrass (konsol)](group-role.md#manage-group-role-console) atau [Mengelola peran grup Greengrass (CLI)](group-role.md#manage-group-role-cli).

  Anda dapat memberikan akses terperinci atau bersyarat ke sumber daya (sebagai contoh, dengan menggunakan skema penamaan wildcard \$1). Jika Anda mengubah target pekerjaan pelatihan dalam masa depan, pastikan untuk memperbarui peran grup.
+ [AWS IoT Greengrass Machine Learning SDK](lambda-functions.md#lambda-sdks-ml) v1.1.0 diperlukan untuk berinteraksi dengan konektor ini.

------
#### [ Version 1 ]
+ AWS IoT Greengrass Perangkat Lunak Inti v1.7 atau yang lebih baru.
+ [Python](https://www.python.org/) versi 2.7 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
+ <a name="req-image-classification-framework"></a>Dependensi untuk MXNet kerangka Apache yang diinstal pada perangkat inti. Untuk informasi selengkapnya, lihat [Menginstal MXNet dependensi pada inti AWS IoT Greengrass](#image-classification-connector-config).
+ <a name="req-image-classification-resource"></a>[Sumber daya ML](ml-inference.md#ml-resources) dalam grup Greengrass yang mereferensikan sumber model AI. SageMaker Model ini harus dilatih oleh algoritma klasifikasi gambar SageMaker AI. Untuk informasi selengkapnya, lihat [Algoritma klasifikasi gambar](https://docs.aws.amazon.com/sagemaker/latest/dg/image-classification.html) di *Panduan Pengembang Amazon SageMaker AI*.
+ <a name="req-image-classification-policy"></a>[Peran grup Greengrass](group-role.md) dikonfigurasi untuk mengizinkan tindakan `sagemaker:DescribeTrainingJob` pada tugas pelatihan target, seperti yang ditunjukkan dalam contoh kebijakan IAM berikut.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "sagemaker:DescribeTrainingJob"
              ],
              "Resource": "arn:aws:sagemaker:us-east-1:123456789012:training-job/training-job-name"
          }
      ]
  }
  ```

------

  <a name="set-up-group-role"></a>Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat [Mengelola peran grup Greengrass (konsol)](group-role.md#manage-group-role-console) atau [Mengelola peran grup Greengrass (CLI)](group-role.md#manage-group-role-cli).

  Anda dapat memberikan akses terperinci atau bersyarat ke sumber daya (sebagai contoh, dengan menggunakan skema penamaan wildcard \$1). Jika Anda mengubah target pekerjaan pelatihan dalam masa depan, pastikan untuk memperbarui peran grup.
+ [AWS IoT Greengrass Machine Learning SDK](lambda-functions.md#lambda-sdks-ml) v1.0.0 atau yang lebih baru diperlukan untuk berinteraksi dengan konektor ini.

------

## Parameter Konektor
<a name="image-classification-connector-param"></a>

Konektor-konektor ini menyediakan parameter berikut.

------
#### [ Version 2 ]

`MLModelDestinationPath`  <a name="param-image-classification-mdlpath"></a>
Jalur lokal absolut dari sumber daya ML dalam lingkungan Lambda. Ini adalah jalur tujuan yang ditentukan untuk sumber daya ML.  
Jika Anda membuat sumber daya ML dalam konsol, ini adalah jalur lokal.
Nama tampilan di AWS IoT konsol: **Jalur tujuan model**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `.+`

`MLModelResourceId`  <a name="param-image-classification-mdlresourceid"></a>
ID dari sumber daya ML yang mereferensikan model sumber.  
Nama tampilan di AWS IoT konsol: sumber daya **ARN SageMaker pekerjaan**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `[a-zA-Z0-9:_-]+`

`MLModelSageMakerJobArn`  <a name="param-image-classification-mdljobarn"></a>
ARN dari pekerjaan pelatihan SageMaker AI yang mewakili sumber model SageMaker AI. Model harus dilatih oleh algoritma klasifikasi gambar SageMaker AI.  
Nama tampilan di AWS IoT konsol: **SageMaker pekerjaan ARN**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^arn:aws:sagemaker:[a-zA-Z0-9-]+:[0-9]+:training-job/[a-zA-Z0-9][a-zA-Z0-9-]+$`

`LocalInferenceServiceName`  <a name="param-image-classification-svcname"></a>
Nama untuk layanan inferensi lokal. Fungsi Lambda yang ditentukan pengguna memanggil layanan dengan meneruskan nama ke fungsi Machine Learning `invoke_inference_service` SDK. AWS IoT Greengrass Sebagai contoh, lihat [Contoh Penggunaan](#image-classification-connector-usage).  
Nama tampilan di AWS IoT konsol: Nama **layanan inferensi lokal**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `[a-zA-Z0-9][a-zA-Z0-9-]{1,62}`

`LocalInferenceServiceTimeoutSeconds`  <a name="param-image-classification-svctimeout"></a>
Jumlah waktu (dalam detik) sebelum permintaan kesimpulan dihentikan. Nilai minimum adalah 1.  
Nama tampilan di AWS IoT konsol: **Timeout (second)**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `[1-9][0-9]*`

`LocalInferenceServiceMemoryLimitKB`  <a name="param-image-classification-svcmemorylimit"></a>
Jumlah memori (dalam KB) bahwa layanan memiliki akses ke. Nilai minimum adalah 1.  
Nama tampilan di AWS IoT konsol: **Batas memori (KB)**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `[1-9][0-9]*`

`GPUAcceleration`  <a name="param-image-classification-gpuacceleration"></a>
CPU atau GPU (dipercepat) konteks komputasi. Properti ini hanya berlaku untuk JTX2 konektor ML Image Classification Aarch64.  
Nama tampilan di AWS IoT konsol: Akselerasi **GPU**  
Wajib: `true`  
Jenis: `string`  
Nilai yang valid: `CPU` or `GPU`

`MLFeedbackConnectorConfigId`  <a name="param-image-classification-feedbackconfigid"></a>
ID dari konfigurasi umpan balik untuk digunakan untuk mengunggah model data input. Ini harus sesuai dengan ID dari konfigurasi umpan balik yang ditetapkan untuk [Konektor Umpan balik ML](ml-feedback-connector.md).  
Parameter ini diperlukan hanya jika Anda ingin menggunakan konektor Umpan balik ML untuk mengunggah model data input dan menerbitkan prediksi untuk topik MQTT.  
Nama tampilan di AWS IoT konsol: **ID konfigurasi konektor Umpan Balik**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^$|^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$`

------
#### [ Version 1 ]

`MLModelDestinationPath`  <a name="param-image-classification-mdlpath"></a>
Jalur lokal absolut dari sumber daya ML dalam lingkungan Lambda. Ini adalah jalur tujuan yang ditentukan untuk sumber daya ML.  
Jika Anda membuat sumber daya ML dalam konsol, ini adalah jalur lokal.
Nama tampilan di AWS IoT konsol: **Jalur tujuan model**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `.+`

`MLModelResourceId`  <a name="param-image-classification-mdlresourceid"></a>
ID dari sumber daya ML yang mereferensikan model sumber.  
Nama tampilan di AWS IoT konsol: sumber daya **ARN SageMaker pekerjaan**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `[a-zA-Z0-9:_-]+`

`MLModelSageMakerJobArn`  <a name="param-image-classification-mdljobarn"></a>
ARN dari pekerjaan pelatihan SageMaker AI yang mewakili sumber model SageMaker AI. Model harus dilatih oleh algoritma klasifikasi gambar SageMaker AI.  
Nama tampilan di AWS IoT konsol: **SageMaker pekerjaan ARN**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^arn:aws:sagemaker:[a-zA-Z0-9-]+:[0-9]+:training-job/[a-zA-Z0-9][a-zA-Z0-9-]+$`

`LocalInferenceServiceName`  <a name="param-image-classification-svcname"></a>
Nama untuk layanan inferensi lokal. Fungsi Lambda yang ditentukan pengguna memanggil layanan dengan meneruskan nama ke fungsi Machine Learning `invoke_inference_service` SDK. AWS IoT Greengrass Sebagai contoh, lihat [Contoh Penggunaan](#image-classification-connector-usage).  
Nama tampilan di AWS IoT konsol: Nama **layanan inferensi lokal**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `[a-zA-Z0-9][a-zA-Z0-9-]{1,62}`

`LocalInferenceServiceTimeoutSeconds`  <a name="param-image-classification-svctimeout"></a>
Jumlah waktu (dalam detik) sebelum permintaan kesimpulan dihentikan. Nilai minimum adalah 1.  
Nama tampilan di AWS IoT konsol: **Timeout (second)**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `[1-9][0-9]*`

`LocalInferenceServiceMemoryLimitKB`  <a name="param-image-classification-svcmemorylimit"></a>
Jumlah memori (dalam KB) bahwa layanan memiliki akses ke. Nilai minimum adalah 1.  
Nama tampilan di AWS IoT konsol: **Batas memori (KB)**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `[1-9][0-9]*`

`GPUAcceleration`  <a name="param-image-classification-gpuacceleration"></a>
CPU atau GPU (dipercepat) konteks komputasi. Properti ini hanya berlaku untuk JTX2 konektor ML Image Classification Aarch64.  
Nama tampilan di AWS IoT konsol: Akselerasi **GPU**  
Wajib: `true`  
Jenis: `string`  
Nilai yang valid: `CPU` or `GPU`

------

### Buat Contoh Konektor (AWS CLI)
<a name="image-classification-connector-create"></a>

Perintah CLI berikut membuat `ConnectorDefinition` dengan versi awal yang berisi konektor Klasifikasi Citra ML.

**Contoh: Instans CPU**  
Contoh ini membuat sebuah instans dari konektor Armv7l Klasifikasi Citra ML.  

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyImageClassificationConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/ImageClassificationARMv7/versions/2",
            "Parameters": {
                "MLModelDestinationPath": "/path-to-model",
                "MLModelResourceId": "my-ml-resource",
                "MLModelSageMakerJobArn": "arn:aws:sagemaker:us-west-2:123456789012:training-job:MyImageClassifier",
                "LocalInferenceServiceName": "imageClassification",
                "LocalInferenceServiceTimeoutSeconds": "10",
                "LocalInferenceServiceMemoryLimitKB": "500000",
                "MLFeedbackConnectorConfigId": "MyConfig0"
            }
        }
    ]
}'
```

**Contoh: Instans GPU**  
Contoh ini membuat instance JTX2 konektor Aarch64 Klasifikasi Gambar ML, yang mendukung akselerasi GPU pada papan NVIDIA Jetson. TX2   

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyImageClassificationConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/ImageClassificationAarch64JTX2/versions/2",
            "Parameters": {
                "MLModelDestinationPath": "/path-to-model",
                "MLModelResourceId": "my-ml-resource",
                "MLModelSageMakerJobArn": "arn:aws:sagemaker:us-west-2:123456789012:training-job:MyImageClassifier",
                "LocalInferenceServiceName": "imageClassification",
                "LocalInferenceServiceTimeoutSeconds": "10",
                "LocalInferenceServiceMemoryLimitKB": "500000",
                "GPUAcceleration": "GPU",
                "MLFeedbackConnectorConfigId": "MyConfig0"
            }
        }
    ]
}'
```

**catatan**  
Fungsi Lambda dalam konektor-konektor mempunyai siklus hidup yang [berumur panjang](lambda-functions.md#lambda-lifecycle) ini.

Di AWS IoT Greengrass konsol, Anda dapat menambahkan konektor dari halaman **Konektor** grup. Untuk informasi selengkapnya, lihat [Memulai dengan konektor Greengrass (konsol)](connectors-console.md).

## Data input
<a name="image-classification-connector-data-input"></a>

 Konektor ini menerima file gambar sebagai input. Input file gambar harus dalam `jpeg` atau `png` format. Untuk informasi selengkapnya, lihat [Contoh Penggunaan](#image-classification-connector-usage). 

Konektor-konektor ini tidak menerima pesan MQTT sebagai data input.

## Data output
<a name="image-classification-connector-data-output"></a>

Konektor ini mengembalikan prediksi diformat untuk objek diidentifikasi dalam gambar input:

```
[0.3,0.1,0.04,...]
```

Prediksi berisi daftar nilai yang sesuai dengan kategori yang digunakan dalam dataset pelatihan selama pelatihan model. Setiap nilai mewakili probabilitas bahwa gambar jatuh di bawah kategori yang sesuai. Kategori dengan probabilitas tertinggi adalah prediksi dominan.

Konektor ini tidak menerbitkan pesan MQTT sebagai data output.

## Contoh Penggunaan
<a name="image-classification-connector-usage"></a>

Contoh fungsi Lambda berikut menggunakan [Machine Learning SDK AWS IoT Greengrass](lambda-functions.md#lambda-sdks-ml) untuk berinteraksi dengan konektor Klasifikasi Citra ML.

**catatan**  
 Anda dapat mengunduh SDK dari halaman unduh [AWS IoT Greengrass Machine Learning SDK](what-is-gg.md#gg-ml-sdk-download) ini.

Contoh menginisialisasi klien SDK dan serentak menghubungi fungsi SDK `invoke_inference_service` untuk memanggil layanan inferensi lokal. Ini melewati jenis algoritme, nama layanan, jenis citra, dan konten citra. Kemudian, contoh mengurai respon layanan untuk mendapatkan hasil probabilitas (prediksi).

------
#### [ Python 3.7 ]

```
import logging
from threading import Timer

import numpy as np

import greengrass_machine_learning_sdk as ml

# We assume the inference input image is provided as a local file
# to this inference client Lambda function.
with open('/test_img/test.jpg', 'rb') as f:
    content = bytearray(f.read())

client = ml.client('inference')

def infer():
    logging.info('invoking Greengrass ML Inference service')

    try:
        resp = client.invoke_inference_service(
            AlgoType='image-classification',
            ServiceName='imageClassification',
            ContentType='image/jpeg',
            Body=content
        )
    except ml.GreengrassInferenceException as e:
        logging.info('inference exception {}("{}")'.format(e.__class__.__name__, e))
        return
    except ml.GreengrassDependencyException as e:
        logging.info('dependency exception {}("{}")'.format(e.__class__.__name__, e))
        return

    logging.info('resp: {}'.format(resp))
    predictions = resp['Body'].read().decode("utf-8")
    logging.info('predictions: {}'.format(predictions))
    
    # The connector output is in the format: [0.3,0.1,0.04,...]
    # Remove the '[' and ']' at the beginning and end.
    predictions = predictions[1:-1]
    count = len(predictions.split(','))
    predictions_arr = np.fromstring(predictions, count=count, sep=',')

    # Perform business logic that relies on the predictions_arr, which is an array
    # of probabilities.
    
    # Schedule the infer() function to run again in one second.
    Timer(1, infer).start()
    return

infer()

def function_handler(event, context):
    return
```

------
#### [ Python 2.7 ]

```
import logging
from threading import Timer

import numpy

import greengrass_machine_learning_sdk as gg_ml

# The inference input image.
with open("/test_img/test.jpg", "rb") as f:
    content = f.read()

client = gg_ml.client("inference")


def infer():
    logging.info("Invoking Greengrass ML Inference service")

    try:
        resp = client.invoke_inference_service(
            AlgoType="image-classification",
            ServiceName="imageClassification",
            ContentType="image/jpeg",
            Body=content,
        )
    except gg_ml.GreengrassInferenceException as e:
        logging.info('Inference exception %s("%s")', e.__class__.__name__, e)
        return
    except gg_ml.GreengrassDependencyException as e:
        logging.info('Dependency exception %s("%s")', e.__class__.__name__, e)
        return

    logging.info("Response: %s", resp)
    predictions = resp["Body"].read()
    logging.info("Predictions: %s", predictions)

    # The connector output is in the format: [0.3,0.1,0.04,...]
    # Remove the '[' and ']' at the beginning and end.
    predictions = predictions[1:-1]
    predictions_arr = numpy.fromstring(predictions, sep=",")
    logging.info("Split into %s predictions.", len(predictions_arr))

    # Perform business logic that relies on predictions_arr, which is an array
    # of probabilities.

    # Schedule the infer() function to run again in one second.
    Timer(1, infer).start()


infer()


# In this example, the required AWS Lambda handler is never called.
def function_handler(event, context):
    return
```

------

`invoke_inference_service`Fungsi dalam AWS IoT Greengrass Machine Learning SDK menerima argumen berikut.


| Pendapat | Deskripsi | 
| --- | --- | 
| `AlgoType` | Nama jenis algoritme yang digunakan untuk inferensi. Saat ini, hanya `image-classification` didukung. Wajib: `true` Jenis: `string` Nilai yang valid: `image-classification` | 
| `ServiceName` | Nama layanan inferensi lokal. Gunakan nama yang Anda tentukan untuk parameter `LocalInferenceServiceName` ketika Anda mengonfigurasi konektor. Wajib: `true` Jenis: `string` | 
| `ContentType` | Jenis mime dari gambar input. Wajib: `true` Jenis: `string` Nilai yang valid: `image/jpeg, image/png` | 
| `Body` | Konten dari file citra input. Wajib: `true` Jenis: `binary` | 

## Menginstal MXNet dependensi pada inti AWS IoT Greengrass
<a name="image-classification-connector-config"></a>

Untuk menggunakan konektor Klasifikasi Gambar ML, Anda harus menginstal dependensi untuk MXNet kerangka Apache pada perangkat inti. Konektor menggunakan kerangka kerja untuk melayani model ML.

**catatan**  
Konektor ini dibundel dengan MXNet pustaka yang telah dikompilasi sebelumnya, jadi Anda tidak perlu menginstal MXNet kerangka kerja pada perangkat inti. 

AWS IoT Greengrass menyediakan skrip untuk menginstal dependensi untuk platform dan perangkat umum berikut (atau untuk digunakan sebagai referensi untuk menginstalnya). Jika Anda menggunakan platform atau perangkat lain, lihat [MXNet dokumentasi](https://mxnet.apache.org/) untuk konfigurasi Anda.

Sebelum menginstal MXNet dependensi, pastikan [pustaka sistem](#image-classification-connector-logging) yang diperlukan (dengan versi minimum yang ditentukan) ada di perangkat.

------
#### [ NVIDIA Jetson TX2 ]

1. Instal CUDA Toolkit 9.0 dan cuDNN 7.0. Anda bisa mengikuti petunjuk dalam [Mengatur perangkat lain](setup-filter.other.md) dalam tutorial Memulai Dengan.

1. Aktifkan repositori universal sehingga konektor dapat menginstal perangkat lunak terbuka yang dikelola komunitas. Untuk informasi lebih lanjut, lihat [ Repositori/Ubuntu](https://help.ubuntu.com/community/Repositories/Ubuntu) dalam dokumentasi Ubuntu.

   1. Buka file `/etc/apt/sources.list` ini.

   1. Pastikan bahwa baris berikut tidak berkomentar.

      ```
      deb http://ports.ubuntu.com/ubuntu-ports/ xenial universe
      deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial universe
      deb http://ports.ubuntu.com/ubuntu-ports/ xenial-updates universe
      deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-updates universe
      ```

1. Simpan salinan skrip penginstalan berikut ke file bernama `nvidiajtx2.sh` pada perangkat core.

------
#### [ Python 3.7 ]

   ```
   #!/bin/bash
   set -e
   
   echo "Installing dependencies on the system..."
   echo 'Assuming that universe repos are enabled and checking dependencies...'
   apt-get -y update
   apt-get -y dist-upgrade
   apt-get install -y liblapack3 libopenblas-dev liblapack-dev libatlas-base-dev
   apt-get install -y python3.7 python3.7-dev
   
   python3.7 -m pip install --upgrade pip
   python3.7 -m pip install numpy==1.15.0
   python3.7 -m pip install opencv-python || echo 'Error: Unable to install OpenCV with pip on this platform. Try building the latest OpenCV from source (https://github.com/opencv/opencv).'
   
   echo 'Dependency installation/upgrade complete.'
   ```

**catatan**  
<a name="opencv-build-from-source"></a>Jika [OpenCV](https://github.com/opencv/opencv) tidak berhasil menginstal menggunakan skrip ini, Anda dapat mencoba membangun dari sumber. Untuk informasi lebih lanjut, lihat [ Instalasi dalam Linux](https://docs.opencv.org/4.1.0/d7/d9f/tutorial_linux_install.html) dalam dokumentasi OpenCV, atau lihat sumber daya online lainnya untuk platform Anda.

------
#### [ Python 2.7 ]

   ```
   #!/bin/bash
   set -e
   
   echo "Installing dependencies on the system..."
   echo 'Assuming that universe repos are enabled and checking dependencies...'
   apt-get -y update
   apt-get -y dist-upgrade
   apt-get install -y liblapack3 libopenblas-dev liblapack-dev libatlas-base-dev python-dev
   
   echo 'Install latest pip...'
   wget https://bootstrap.pypa.io/get-pip.py
   python get-pip.py
   rm get-pip.py
   
   pip install numpy==1.15.0 scipy
   
   echo 'Dependency installation/upgrade complete.'
   ```

------

1. Dari direktori tempat Anda menyimpan file, jalankan perintah berikut:

   ```
   sudo nvidiajtx2.sh
   ```

------
#### [ x86\$164 (Ubuntu or Amazon Linux)  ]

1. Simpan salinan skrip penginstalan berikut ke file bernama `x86_64.sh` pada perangkat core.

------
#### [ Python 3.7 ]

   ```
   #!/bin/bash
   set -e
   
   echo "Installing dependencies on the system..."
   
   release=$(awk -F= '/^NAME/{print $2}' /etc/os-release)
   
   if [ "$release" == '"Ubuntu"' ]; then
     # Ubuntu. Supports EC2 and DeepLens. DeepLens has all the dependencies installed, so
     # this is mostly to prepare dependencies on Ubuntu EC2 instance.
     apt-get -y update
     apt-get -y dist-upgrade
   
     apt-get install -y libgfortran3 libsm6 libxext6 libxrender1
     apt-get install -y python3.7 python3.7-dev
   elif [ "$release" == '"Amazon Linux"' ]; then
     # Amazon Linux. Expect python to be installed already
     yum -y update
     yum -y upgrade
   
     yum install -y compat-gcc-48-libgfortran libSM libXrender libXext
   else
     echo "OS Release not supported: $release"
     exit 1
   fi
   
   python3.7 -m pip install --upgrade pip
   python3.7 -m pip install numpy==1.15.0
   python3.7 -m pip install opencv-python || echo 'Error: Unable to install OpenCV with pip on this platform. Try building the latest OpenCV from source (https://github.com/opencv/opencv).'
   
   echo 'Dependency installation/upgrade complete.'
   ```

**catatan**  
<a name="opencv-build-from-source"></a>Jika [OpenCV](https://github.com/opencv/opencv) tidak berhasil menginstal menggunakan skrip ini, Anda dapat mencoba membangun dari sumber. Untuk informasi lebih lanjut, lihat [ Instalasi dalam Linux](https://docs.opencv.org/4.1.0/d7/d9f/tutorial_linux_install.html) dalam dokumentasi OpenCV, atau lihat sumber daya online lainnya untuk platform Anda.

------
#### [ Python 2.7 ]

   ```
   #!/bin/bash
   set -e
   
   echo "Installing dependencies on the system..."
   
   release=$(awk -F= '/^NAME/{print $2}' /etc/os-release)
   
   if [ "$release" == '"Ubuntu"' ]; then
     # Ubuntu. Supports EC2 and DeepLens. DeepLens has all the dependencies installed, so
     # this is mostly to prepare dependencies on Ubuntu EC2 instance.
     apt-get -y update
     apt-get -y dist-upgrade
   
     apt-get install -y libgfortran3 libsm6 libxext6 libxrender1 python-dev python-pip
   elif [ "$release" == '"Amazon Linux"' ]; then
     # Amazon Linux. Expect python to be installed already
     yum -y update
     yum -y upgrade
   
     yum install -y compat-gcc-48-libgfortran libSM libXrender libXext python-pip
   else
     echo "OS Release not supported: $release"
     exit 1
   fi
   
   pip install numpy==1.15.0 scipy opencv-python
   
   echo 'Dependency installation/upgrade complete.'
   ```

------

1. Dari direktori tempat Anda menyimpan file, jalankan perintah berikut:

   ```
   sudo x86_64.sh
   ```

------
#### [ Armv7 (Raspberry Pi) ]

1. Simpan salinan skrip penginstalan berikut ke file bernama `armv7l.sh` pada perangkat core.

------
#### [ Python 3.7 ]

   ```
   #!/bin/bash
   set -e
   
   echo "Installing dependencies on the system..."
   
   apt-get update
   apt-get -y upgrade
   
   apt-get install -y liblapack3 libopenblas-dev liblapack-dev
   apt-get install -y python3.7 python3.7-dev
   
   python3.7 -m pip install --upgrade pip
   python3.7 -m pip install numpy==1.15.0
   python3.7 -m pip install opencv-python || echo 'Error: Unable to install OpenCV with pip on this platform. Try building the latest OpenCV from source (https://github.com/opencv/opencv).'
   
   echo 'Dependency installation/upgrade complete.'
   ```

**catatan**  
<a name="opencv-build-from-source"></a>Jika [OpenCV](https://github.com/opencv/opencv) tidak berhasil menginstal menggunakan skrip ini, Anda dapat mencoba membangun dari sumber. Untuk informasi lebih lanjut, lihat [ Instalasi dalam Linux](https://docs.opencv.org/4.1.0/d7/d9f/tutorial_linux_install.html) dalam dokumentasi OpenCV, atau lihat sumber daya online lainnya untuk platform Anda.

------
#### [ Python 2.7 ]

   ```
   #!/bin/bash
   set -e
   
   echo "Installing dependencies on the system..."
   
   apt-get update
   apt-get -y upgrade
   
   apt-get install -y liblapack3 libopenblas-dev liblapack-dev python-dev
   
   # python-opencv depends on python-numpy. The latest version in the APT repository is python-numpy-1.8.2
   # This script installs python-numpy first so that python-opencv can be installed, and then install the latest
   # numpy-1.15.x with pip
   apt-get install -y python-numpy python-opencv
   dpkg --remove --force-depends python-numpy
   
   echo 'Install latest pip...'
   wget https://bootstrap.pypa.io/get-pip.py
   python get-pip.py
   rm get-pip.py
   
   pip install --upgrade numpy==1.15.0 picamera scipy
   
   echo 'Dependency installation/upgrade complete.'
   ```

------

1. Dari direktori tempat Anda menyimpan file, jalankan perintah berikut:

   ```
   sudo bash armv7l.sh
   ```
**catatan**  
Pada Raspberry Pi, menggunakan `pip` untuk menginstal dependensi machine learning adalah operasi intensif memori yang dapat menyebabkan perangkat kehabisan memori dan menjadi tidak responsif. Sebagai solusi, Anda dapat sementara meningkatkan ukuran swap:  
Di `/etc/dphys-swapfile`, tingkatkan nilai variabel `CONF_SWAPSIZE` dan kemudian jalankan perintah berikut untuk restart `dphys-swapfile`.  

   ```
   /etc/init.d/dphys-swapfile restart
   ```

------

## Pencatatan dan pemecahan masalah
<a name="image-classification-connector-logging"></a>

Bergantung pada pengaturan grup Anda, log peristiwa dan kesalahan ditulis ke CloudWatch Log, sistem file lokal, atau keduanya. Catatan dari konektor ini menggunakan prefix `LocalInferenceServiceName`. Jika konektor berperilaku tidak terduga, periksa log konektor. Ini biasanya berisi informasi debugging yang berguna, seperti dependensi perpustakaan ML yang hilang atau penyebab kegagalan startup konektor.

Jika AWS IoT Greengrass grup dikonfigurasi untuk menulis log lokal, konektor akan menulis file log ke`greengrass-root/ggc/var/log/user/region/aws/`. Untuk informasi lebih lanjut tentang Greengrass pencatatan, lihat [Pemantauan dengan AWS IoT Greengrass log](greengrass-logs-overview.md).

Gunakan informasi berikut untuk membantu memecahkan masalah dengan konektor Klasifikasi Citra ML.

**Pustaka sistem yang diperlukan**

Tab berikut mencantumkan sistem perpustakaan yang diperlukan untuk setiap konektor Klasifikasi Citra ML.

------
#### [ ML Image Classification Aarch64 JTX2 ]


| Perpustakaan | Versi Minimum | 
| --- | --- | 
| ld-linux-aarch64.jadi.1 | GLIBC\$12.17 | 
| libc.so.6 | GLIBC\$12.17 | 
| libcublas.so.9.0 | tidak berlaku | 
| libcudart.so.9.0 | tidak berlaku | 
| libcudnn.so.7 | tidak berlaku | 
| libcufft.so.9.0 | tidak berlaku | 
| libcurand.so.9.0 | tidak berlaku | 
| libcusolver.so.9.0 | tidak berlaku | 
| libgcc\$1s.so.1 | GCC\$14.2.0 | 
| libgomp.so.1 | GOMP\$14.0, OMP\$11.0 | 
| libm.so.6 | GLIBC\$12.23 | 
| libpthread.so.0 | GLIBC\$12.17 | 
| librt.so.1 | GLIBC\$12.17 | 
| libstdc\$1\$1.so.6 | GLIBCXX\$13.4.21, CXXABI\$11.3.8 | 

------
#### [ ML Image Classification x86\$164 ]


| Perpustakaan | Versi Minimum | 
| --- | --- | 
| ld-linux-x86-64.jadi.2 | GCC\$14.0.0 | 
| libc.so.6 | GLIBC\$12.4 | 
| libgfortran.so.3 | GFORTRAN\$11.0 | 
| libm.so.6 | GLIBC\$12.23 | 
| libpthread.so.0 | GLIBC\$12.2.5 | 
| librt.so.1 | GLIBC\$12.2.5 | 
| libstdc\$1\$1.so.6 | CXXABI\$11.3.8, GLIBCXX\$13.4.21 | 

------
#### [ ML Image Classification Armv7 ]


| Perpustakaan | Versi Minimum | 
| --- | --- | 
| ld-linux-armhf.jadi.3 | GLIBC\$12.4 | 
| libc.so.6 | GLIBC\$12.7 | 
| libgcc\$1s.so.1 | GCC\$14.0.0 | 
| libgfortran.so.3 | GFORTRAN\$11.0 | 
| libm.so.6 | GLIBC\$12.4 | 
| libpthread.so.0 | GLIBC\$12.4 | 
| librt.so.1 | GLIBC\$12.4 | 
| libstdc\$1\$1.so.6 | CXXABI\$11.3.8, CXXABI\$1ARM\$11.3.3, GLIBCXX\$13.4.20 | 

------

**Masalah**


| Gejala | Solusi | 
| --- | --- | 
|  Pada Raspberry Pi, pesan eror berikut dicatat dan Anda tidak menggunakan kamera: `Failed to initialize libdc1394`   |  Jalankan perintah berikut untuk menonaktifkan driver: <pre>sudo ln /dev/null /dev/raw1394</pre> Operasi ini bersifat sementara dan tautan simbolis akan hilang setelah reboot. Konsultasikan manual distribusi OS Anda untuk mempelajari cara membuat tautan secara otomatis ketika reboot.  | 

## Lisensi
<a name="image-classification-connector-license"></a>

Konektor Klasifikasi Citra ML mencakup perangkat lunak/lisensi pihak ketiga berikut:<a name="boto-3-licenses"></a>
+ [AWS SDK untuk Python (Boto3)](https://pypi.org/project/boto3/)/Lisensi 2.0 Apache
+ [botocore](https://pypi.org/project/botocore/)/Apache License 2.0
+ [dateutil](https://pypi.org/project/python-dateutil/1.4/)/PSF License
+ [docutils](https://pypi.org/project/docutils/)/BSD License, Lisensi Publik Umum (GPL) GNU, Lisensi Dasar Perangkat Lunak Python, Domain Publik
+ [jmespath](https://pypi.org/project/jmespath/)/MIT License
+ [s3transfer](https://pypi.org/project/s3transfer/)/Apache License 2.0
+ [urllib3](https://pypi.org/project/urllib3/)/Lisensi MIT
+ [Deep Neural Network Library (DNNL)](https://github.com/intel/mkl-dnn)/Lisensi 2.0 Apache
+ [OpenMP\$1 Perpustakaan Waktu Aktif](https://software.intel.com/content/www/us/en/develop/documentation/cpp-compiler-developer-guide-and-reference/top/optimization-and-programming-guide/openmp-support/openmp-library-support/openmp-run-time-library-routines.html)/See [Lisensi Intel OpenMP Perpustakaan Waktu Aktif](#openmp-license).
+ [mxnet](https://pypi.org/project/mxnet/)/Lisensi 2.0 Apache
+ <a name="six-license"></a>[six](https://github.com/benjaminp/six)/MIT

**Lisensi Perpustakaan Waktu Aktif Intel OpenMP**. Intel® OpenMP\$1 runtume memiliki lisensi ganda, dengan lisensi komersial (COM) sebagai bagian dari produk Intel® Parallel Studio XE Suite, dan lisensi BSD open source (OSS).

Konektor ini dirilis di bawah [Perjanjian Lisensi Perangkat lunak core Greengrass](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Changelog
<a name="image-classification-connector-changelog"></a>

Tabel berikut menjelaskan perubahan dalam setiap versi konektor.


| Versi | Perubahan | 
| --- | --- | 
| 2 | Menambahkan `MLFeedbackConnectorConfigId` parameter untuk mendukung penggunaan [konektor Umpan Balik ML](ml-feedback-connector.md) untuk mengunggah data input model, mempublikasikan prediksi ke topik MQTT, dan mempublikasikan metrik ke Amazon. CloudWatch  | 
| 1 | Pelepasan awal.  | 

<a name="one-conn-version"></a>Sebuah grup Greengrass dapat berisi hanya satu versi konektor pada suatu waktu. Untuk informasi lebih lanjut tentang pembaruan versi konektor, lihat [Versi upgrade konektor](connectors.md#upgrade-connector-versions).

## Lihat juga
<a name="image-classification-connector-see-also"></a>
+ [Integrasikan dengan layanan dan protokol menggunakan konektor Greengrass](connectors.md)
+ [Memulai dengan konektor Greengrass (konsol)](connectors-console.md)
+ [Memulai dengan konektor Greengrass (CLI)](connectors-cli.md)
+ [Lakukan inferensi machine learning](ml-inference.md)
+ [Algoritma klasifikasi gambar](https://docs.aws.amazon.com/sagemaker/latest/dg/image-classification.html) dalam *Panduan Pengembang Amazon SageMaker AI*

# konektor Deteksi Objek ML
<a name="obj-detection-connector"></a>

**Awas**  <a name="connectors-extended-life-phase-warning"></a>
Konektor ini telah pindah ke *fase umur yang diperpanjang*, dan AWS IoT Greengrass tidak akan merilis pembaruan yang menyediakan fitur, penyempurnaan pada fitur yang ada, patch keamanan, atau perbaikan bug. Untuk informasi selengkapnya, lihat [AWS IoT Greengrass Version 1 kebijakan pemeliharaan](maintenance-policy.md).

[Konektor](connectors.md) Deteksi Objek ML menyediakan layanan inferensi pembelajaran mesin (ML) yang berjalan pada AWS IoT Greengrass inti. Layanan inferensi lokal ini melakukan deteksi objek menggunakan model deteksi objek yang dikompilasi oleh kompiler pembelajaran mendalam SageMaker AI Neo. Dua jenis model pendeteksian objek didukung: Single Shot Multibox Detector (SSD) dan You Only Look Once (YOLO) v3. Untuk informasi lebih lanjut, lihat [Persyaratan Model Deteksi Objek](#obj-detection-connector-req-model).

 Fungsi Lambda yang ditentukan pengguna menggunakan Machine Learning AWS IoT Greengrass SDK untuk mengirimkan permintaan inferensi ke layanan inferensi lokal. Layanan ini melakukan inferensi lokal pada gambar input dan mengembalikan daftar prediksi untuk setiap objek yang terdeteksi dalam gambar. Setiap prediksi berisi kategori objek, skor kepercayaan prediksi, dan koordinat piksel yang menentukan kotak batas dalam sekitar objek yang diprediksi. 

AWS IoT Greengrass menyediakan konektor Deteksi Objek MLuntuk berbagai platform:


| Konektor | Deskripsi dan ARN | 
| --- | --- | 
| Deteksi Objek ML Aarch64 JTX2 |  Layanan inferensi deteksi objek untuk NVIDIA TX2 Jetson. Mendukung akselerasi GPU.  **ARN:** `arn:aws:greengrass:region::/connectors/ObjectDetectionAarch64JTX2/versions/1`   | 
| Deteksi Objek ML x86\$164 |  Layanan inferensi deteksi objek untuk platform x86\$164.  **ARN:** `arn:aws:greengrass:region::/connectors/ObjectDetectionx86-64/versions/1`   | 
| Deteksi Objek ML ARMv7 |   Layanan inferensi deteksi objek untuk ARMv7 platform.   **ARN:** `arn:aws:greengrass:region::/connectors/ObjectDetectionARMv7/versions/1`   | 

## Persyaratan
<a name="obj-detection-connector-req"></a>

Konektor-konektor ini memiliki persyaratan sebagai berikut:
+ AWS IoT Greengrass Core Software v1.9.3 atau yang lebih baru.
+ <a name="conn-req-py-3.7-and-3.8"></a>[Python](https://www.python.org/) versi 3.7 atau 3.8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
**catatan**  <a name="use-runtime-py3.8"></a>
Untuk menggunakan Python 3.8, jalankan perintah berikut untuk membuat link simbolik dari folder instalasi default Python 3.7 ke binari Python 3.8 yang diinstal.  

  ```
  sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7
  ```
Ini mengonfigurasi perangkat Anda untuk memenuhi persyaratan Python untuk AWS IoT Greengrass.
+ Dependensi untuk runtime pembelajaran mendalam SageMaker AI Neo yang diinstal pada perangkat inti. Untuk informasi selengkapnya, lihat [Menginstal dependensi runtime pembelajaran mendalam Neo pada inti AWS IoT Greengrass](#obj-detection-connector-config).
+ Sebuah [sumber daya ML](ml-inference.md#ml-resources) dalam grup Greengrass. Sumber daya ML harus mereferensikan bucket Amazon S3 yang berisi model deteksi objek. Untuk informasi lebih lanjut, lihat: [Sumber model Amazon S3](ml-inference.md#s3-ml-resources).
**catatan**  
Model harus berupa Shot Multibox Detector or You Only Look Once v3 jenis model deteksi obyek. Itu harus dikompilasi menggunakan kompiler pembelajaran mendalam SageMaker AI Neo. Untuk informasi lebih lanjut, lihat [Persyaratan Model Deteksi Objek](#obj-detection-connector-req-model).
+ <a name="req-image-classification-feedback"></a>[Konektor Umpan balik ML](ml-feedback-connector.md) ditambahkan ke grup Greengrass dan dikonfigurasi. Hal ini diperlukan hanya jika Anda ingin menggunakan konektor untuk mengunggah model data input dan menerbitkan prediksi untuk topik MQTT.
+ [AWS IoT Greengrass Machine Learning SDK](lambda-functions.md#lambda-sdks-ml) v1.1.0 diperlukan untuk berinteraksi dengan konektor ini.

### Persyaratan model deteksi objek
<a name="obj-detection-connector-req-model"></a>

Konektor Deteksi Objek ML mendukung Single Shot multibox Detector (SSD) dan You Only Look Once (YOLO) v3 jenis model deteksi objek. Anda dapat menggunakan komponen deteksi objek yang disediakan oleh [GluonCV](https://gluon-cv.mxnet.io) untuk melatih model dengan dataset Anda sendiri. Atau, Anda bisa menggunakan model pra-terlatih dari GluonCV Model Zoo:
+ [Model SSD pra-terlatih](https://gluon-cv.mxnet.io/build/examples_detection/demo_ssd.html)
+ [Model YOLO v3 yang telah dilatih sebelumnya](https://gluon-cv.mxnet.io/build/examples_detection/demo_yolo.html)

Model deteksi objek Anda harus dilatih dengan gambar input 512 x 512. Model pra-terlatih dari GluonCV Model Zoo sudah memenuhi persyaratan ini.

Model deteksi objek yang terlatih harus dikompilasi dengan kompiler pembelajaran mendalam SageMaker AI Neo. Ketika mengkompilasi, pastikan perangkat keras target cocok dengan perangkat keras perangkat core Greengrass Anda. Untuk informasi selengkapnya, lihat [ SageMaker AI Neo](https://docs.aws.amazon.com/sagemaker/latest/dg/neo.html) di *Panduan Pengembang Amazon SageMaker AI*.

Model dikompilasi harus ditambahkan sebagai sumber daya ML ([sumber daya model Amazon S3](ml-inference.md#s3-ml-resources)) ke grup Greengrass yang sama dengan konektor.

## Parameter Konektor
<a name="obj-detection-connector-param"></a>

Konektor-konektor ini menyediakan parameter berikut.

`MLModelDestinationPath`  
Jalur absolut untuk bucket Amazon S3 yang berisi model Neo-compatible ML. Ini adalah jalur tujuan yang ditentukan untuk sumber daya model ML.  
Nama tampilan di AWS IoT konsol: **Jalur tujuan model**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `.+`

`MLModelResourceId`  
ID dari sumber daya ML yang mereferensikan model sumber.  
Nama tampilan di AWS IoT konsol: Sumber daya **grup Greengrass**  
Wajib: `true`  
Jenis: `S3MachineLearningModelResource`  
Pola yang valid: `^[a-zA-Z0-9:_-]+$`

`LocalInferenceServiceName`  
Nama untuk layanan inferensi lokal. Fungsi Lambda yang ditentukan pengguna memanggil layanan dengan meneruskan nama ke fungsi Machine Learning `invoke_inference_service` SDK. AWS IoT Greengrass Sebagai contoh, lihat [Contoh Penggunaan](#obj-detection-connector-usage).  
Nama tampilan di AWS IoT konsol: Nama **layanan inferensi lokal**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$`

`LocalInferenceServiceTimeoutSeconds`  
Waktu (dalam detik) sebelum permintaan inferensi dihentikan. Nilai minimum adalah 1. Nilai default adalah 10.  
Nama tampilan di AWS IoT konsol: **Timeout (second)**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^[1-9][0-9]*$`

`LocalInferenceServiceMemoryLimitKB`  
Jumlah memori (dalam KB) bahwa layanan memiliki akses ke. Nilai minimum adalah 1.  
Nama tampilan di AWS IoT konsol: **Batas memori**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^[1-9][0-9]*$`

`GPUAcceleration`  <a name="param-image-classification-gpuacceleration"></a>
CPU atau GPU (dipercepat) konteks komputasi. Properti ini hanya berlaku untuk JTX2 konektor ML Image Classification Aarch64.  
Nama tampilan di AWS IoT konsol: Akselerasi **GPU**  
Wajib: `true`  
Jenis: `string`  
Nilai yang valid: `CPU` or `GPU`

`MLFeedbackConnectorConfigId`  <a name="param-image-classification-feedbackconfigid"></a>
ID dari konfigurasi umpan balik untuk digunakan untuk mengunggah model data input. Ini harus sesuai dengan ID dari konfigurasi umpan balik yang ditetapkan untuk [Konektor Umpan balik ML](ml-feedback-connector.md).  
Parameter ini diperlukan hanya jika Anda ingin menggunakan konektor Umpan balik ML untuk mengunggah model data input dan menerbitkan prediksi untuk topik MQTT.  
Nama tampilan di AWS IoT konsol: **ID konfigurasi konektor Umpan Balik** MS  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^$|^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$`

### Buat Contoh Konektor (AWS CLI)
<a name="obj-detection-connector-create"></a>

Perintah CLI berikut membuat `ConnectorDefinition` dengan versi awal yang berisi konektor Deteksi Objek ML. Contoh ini menciptakan sebuah instance dari ARMv7l konektor Deteksi Objek ML.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyObjectDetectionConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/ObjectDetectionARMv7/versions/1",
            "Parameters": {
                "MLModelDestinationPath": "/path-to-model",
                "MLModelResourceId": "my-ml-resource",
                "LocalInferenceServiceName": "objectDetection",
                "LocalInferenceServiceTimeoutSeconds": "10",
                "LocalInferenceServiceMemoryLimitKB": "500000",
                "MLFeedbackConnectorConfigId" : "object-detector-random-sampling"
            }
        }
    ]
}'
```

**catatan**  
Fungsi Lambda dalam konektor-konektor mempunyai siklus hidup yang [berumur panjang](lambda-functions.md#lambda-lifecycle) ini.

Di AWS IoT Greengrass konsol, Anda dapat menambahkan konektor dari halaman **Konektor** grup. Untuk informasi selengkapnya, lihat [Memulai dengan konektor Greengrass (konsol)](connectors-console.md).

## Data input
<a name="obj-detection-connector-data-input"></a>

 Konektor ini menerima file gambar sebagai input. Input file gambar harus dalam `jpeg` atau `png` format. Untuk informasi selengkapnya, lihat [Contoh Penggunaan](#obj-detection-connector-usage). 

Konektor-konektor ini tidak menerima pesan MQTT sebagai data input.

## Data output
<a name="obj-detection-connector-data-output"></a>

 Konektor ini kembali daftar diformat hasil prediksi untuk objek diidentifikasi dalam gambar input: 

```
     {
         "prediction": [
             [
                 14,
                 0.9384938478469849,
                 0.37763649225234985,
                 0.5110225081443787,
                 0.6697432398796082,
                 0.8544386029243469
             ],
             [
                 14,
                 0.8859519958496094,
                 0,
                 0.43536216020584106,
                 0.3314110040664673,
                 0.9538808465003967
             ],
             [
                 12,
                 0.04128098487854004,
                 0.5976729989051819,
                 0.5747185945510864,
                 0.704264223575592,
                 0.857937216758728
             ],
             ...
         ]
     }
```

Setiap prediksi dalam daftar terkandung dalam bucket kotak dan berisi enam nilai:
+  Nilai pertama merupakan kategori objek diprediksi untuk objek diidentifikasi. Kategori objek dan nilai yang sesuai ditentukan ketika melatih model machine learning deteksi objek Anda dalam Neo deep learning compiler.
+ Nilai kedua adalah skor kepercayaan untuk prediksi kategori objek. Ini merupakan probabilitas bahwa prediksi itu benar. 
+ Empat nilai terakhir sesuai dengan dimensi piksel yang mewakili kotak batas dalam sekitar objek yang diprediksi dalam gambar.

Konektor ini tidak menerbitkan pesan MQTT sebagai data output.

## Contoh Penggunaan
<a name="obj-detection-connector-usage"></a>

contoh fungsi Lambda berikut menggunakan [AWS IoT Greengrass Machine Learning SDK](lambda-functions.md#lambda-sdks-ml) untuk berinteraksi dengan konektor Deteksi Objek ML.

**catatan**  
 Anda dapat mengunduh SDK dari halaman unduh [AWS IoT Greengrass Machine Learning SDK](what-is-gg.md#gg-ml-sdk-download) ini. 

Contoh menginisialisasi klien SDK dan serentak menghubungi fungsi SDK `invoke_inference_service` untuk memanggil layanan inferensi lokal. Ini melewati jenis algoritme, nama layanan, jenis citra, dan konten citra. Kemudian, contoh mengurai respon layanan untuk mendapatkan hasil probabilitas (prediksi).

```
import logging
from threading import Timer

import numpy as np

import greengrass_machine_learning_sdk as ml

# We assume the inference input image is provided as a local file
# to this inference client Lambda function.
with open('/test_img/test.jpg', 'rb') as f:
    content = bytearray(f.read())

client = ml.client('inference')

def infer():
    logging.info('invoking Greengrass ML Inference service')

    try:
        resp = client.invoke_inference_service(
            AlgoType='object-detection',
            ServiceName='objectDetection',
            ContentType='image/jpeg',
            Body=content
        )
    except ml.GreengrassInferenceException as e:
        logging.info('inference exception {}("{}")'.format(e.__class__.__name__, e))
        return
    except ml.GreengrassDependencyException as e:
        logging.info('dependency exception {}("{}")'.format(e.__class__.__name__, e))
        return

    logging.info('resp: {}'.format(resp))
    predictions = resp['Body'].read().decode("utf-8")
    logging.info('predictions: {}'.format(predictions))
    predictions = eval(predictions) 

    # Perform business logic that relies on the predictions.
    
    # Schedule the infer() function to run again in ten second.
    Timer(10, infer).start()
    return

infer()

def function_handler(event, context):
    return
```

`invoke_inference_service`Fungsi dalam AWS IoT Greengrass Machine Learning SDK menerima argumen berikut.


| Pendapat | Deskripsi | 
| --- | --- | 
| `AlgoType` | Nama jenis algoritme yang digunakan untuk inferensi. Saat ini, hanya `object-detection` didukung. Wajib: `true` Jenis: `string` Nilai yang valid: `object-detection` | 
| `ServiceName` | Nama layanan inferensi lokal. Gunakan nama yang Anda tentukan untuk parameter `LocalInferenceServiceName` ketika Anda mengonfigurasi konektor. Wajib: `true` Jenis: `string` | 
| `ContentType` | Jenis mime dari gambar input. Wajib: `true` Jenis: `string` Nilai yang valid: `image/jpeg, image/png` | 
| `Body` | Konten dari file citra input. Wajib: `true` Jenis: `binary` | 

## Menginstal dependensi runtime pembelajaran mendalam Neo pada inti AWS IoT Greengrass
<a name="obj-detection-connector-config"></a>

Konektor Deteksi Objek ML dibundel dengan SageMaker AI Neo deep learning runtime (DLR). Konektor menggunakan waktu aktif untuk melayani model ML. Untuk menggunakan konektor ini, Anda harus menginstal dependensi untuk DLR pada perangkat core Anda. 

Sebelum Anda menginstal dependensi DLR, pastikan bahwa [sistem perpustakaan](#obj-detection-connector-logging) yang diperlukan (dengan versi minimum yang ditentukan) ada pada perangkat.

------
#### [ NVIDIA Jetson TX2 ]

1. Instal CUDA Toolkit 9.0 dan cuDNN 7.0. Anda bisa mengikuti petunjuk dalam [Mengatur perangkat lain](setup-filter.other.md) dalam tutorial Memulai Dengan.

1. Aktifkan repositori universal sehingga konektor dapat menginstal perangkat lunak terbuka yang dikelola komunitas. Untuk informasi lebih lanjut, lihat [ Repositori/Ubuntu](https://help.ubuntu.com/community/Repositories/Ubuntu) dalam dokumentasi Ubuntu.

   1. Buka file `/etc/apt/sources.list` ini.

   1. Pastikan bahwa baris berikut tidak berkomentar.

      ```
      deb http://ports.ubuntu.com/ubuntu-ports/ xenial universe
      deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial universe
      deb http://ports.ubuntu.com/ubuntu-ports/ xenial-updates universe
      deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-updates universe
      ```

1. Simpan salinan skrip penginstalan berikut ke file bernama `nvidiajtx2.sh` pada perangkat core.

   ```
   #!/bin/bash
   set -e
   
   echo "Installing dependencies on the system..."
   echo 'Assuming that universe repos are enabled and checking dependencies...'
   apt-get -y update
   apt-get -y dist-upgrade
   apt-get install -y liblapack3 libopenblas-dev liblapack-dev libatlas-base-dev
   apt-get install -y python3.7 python3.7-dev
   
   python3.7 -m pip install --upgrade pip
   python3.7 -m pip install numpy==1.15.0
   python3.7 -m pip install opencv-python || echo 'Error: Unable to install OpenCV with pip on this platform. Try building the latest OpenCV from source (https://github.com/opencv/opencv).'
   
   echo 'Dependency installation/upgrade complete.'
   ```
**catatan**  
<a name="opencv-build-from-source"></a>Jika [OpenCV](https://github.com/opencv/opencv) tidak berhasil menginstal menggunakan skrip ini, Anda dapat mencoba membangun dari sumber. Untuk informasi lebih lanjut, lihat [ Instalasi dalam Linux](https://docs.opencv.org/4.1.0/d7/d9f/tutorial_linux_install.html) dalam dokumentasi OpenCV, atau lihat sumber daya online lainnya untuk platform Anda.

1. Dari direktori tempat Anda menyimpan file, jalankan perintah berikut:

   ```
   sudo nvidiajtx2.sh
   ```

------
#### [ x86\$164 (Ubuntu or Amazon Linux)  ]

1. Simpan salinan skrip penginstalan berikut ke file bernama `x86_64.sh` pada perangkat core.

   ```
   #!/bin/bash
   set -e
   
   echo "Installing dependencies on the system..."
   
   release=$(awk -F= '/^NAME/{print $2}' /etc/os-release)
   
   if [ "$release" == '"Ubuntu"' ]; then
     # Ubuntu. Supports EC2 and DeepLens. DeepLens has all the dependencies installed, so
     # this is mostly to prepare dependencies on Ubuntu EC2 instance.
     apt-get -y update
     apt-get -y dist-upgrade
   
     apt-get install -y libgfortran3 libsm6 libxext6 libxrender1
     apt-get install -y python3.7 python3.7-dev
   elif [ "$release" == '"Amazon Linux"' ]; then
     # Amazon Linux. Expect python to be installed already
     yum -y update
     yum -y upgrade
   
     yum install -y compat-gcc-48-libgfortran libSM libXrender libXext
   else
     echo "OS Release not supported: $release"
     exit 1
   fi
   
   python3.7 -m pip install --upgrade pip
   python3.7 -m pip install numpy==1.15.0
   python3.7 -m pip install opencv-python || echo 'Error: Unable to install OpenCV with pip on this platform. Try building the latest OpenCV from source (https://github.com/opencv/opencv).'
   
   echo 'Dependency installation/upgrade complete.'
   ```
**catatan**  
<a name="opencv-build-from-source"></a>Jika [OpenCV](https://github.com/opencv/opencv) tidak berhasil menginstal menggunakan skrip ini, Anda dapat mencoba membangun dari sumber. Untuk informasi lebih lanjut, lihat [ Instalasi dalam Linux](https://docs.opencv.org/4.1.0/d7/d9f/tutorial_linux_install.html) dalam dokumentasi OpenCV, atau lihat sumber daya online lainnya untuk platform Anda.

1. Dari direktori tempat Anda menyimpan file, jalankan perintah berikut:

   ```
   sudo x86_64.sh
   ```

------
#### [ ARMv7 (Raspberry Pi) ]

1. Simpan salinan skrip penginstalan berikut ke file bernama `armv7l.sh` pada perangkat core.

   ```
   #!/bin/bash
   set -e
   
   echo "Installing dependencies on the system..."
   
   apt-get update
   apt-get -y upgrade
   
   apt-get install -y liblapack3 libopenblas-dev liblapack-dev
   apt-get install -y python3.7 python3.7-dev
   
   python3.7 -m pip install --upgrade pip
   python3.7 -m pip install numpy==1.15.0
   python3.7 -m pip install opencv-python || echo 'Error: Unable to install OpenCV with pip on this platform. Try building the latest OpenCV from source (https://github.com/opencv/opencv).'
   
   echo 'Dependency installation/upgrade complete.'
   ```
**catatan**  
<a name="opencv-build-from-source"></a>Jika [OpenCV](https://github.com/opencv/opencv) tidak berhasil menginstal menggunakan skrip ini, Anda dapat mencoba membangun dari sumber. Untuk informasi lebih lanjut, lihat [ Instalasi dalam Linux](https://docs.opencv.org/4.1.0/d7/d9f/tutorial_linux_install.html) dalam dokumentasi OpenCV, atau lihat sumber daya online lainnya untuk platform Anda.

1. Dari direktori tempat Anda menyimpan file, jalankan perintah berikut:

   ```
   sudo bash armv7l.sh
   ```
**catatan**  
Pada Raspberry Pi, menggunakan `pip` untuk menginstal dependensi machine learning adalah operasi intensif memori yang dapat menyebabkan perangkat kehabisan memori dan menjadi tidak responsif. Sebagai solusi, Anda dapat sementara meningkatkan ukuran swap. Di `/etc/dphys-swapfile`, tingkatkan nilai variabel `CONF_SWAPSIZE` dan kemudian jalankan perintah berikut untuk restart `dphys-swapfile`.  

   ```
   /etc/init.d/dphys-swapfile restart
   ```

------

## Pencatatan dan pemecahan masalah
<a name="obj-detection-connector-logging"></a>

Bergantung pada pengaturan grup Anda, log peristiwa dan kesalahan ditulis ke CloudWatch Log, sistem file lokal, atau keduanya. Catatan dari konektor ini menggunakan prefix `LocalInferenceServiceName`. Jika konektor berperilaku tidak terduga, periksa log konektor. Ini biasanya berisi informasi debugging yang berguna, seperti dependensi perpustakaan ML yang hilang atau penyebab kegagalan startup konektor.

Jika AWS IoT Greengrass grup dikonfigurasi untuk menulis log lokal, konektor akan menulis file log ke`greengrass-root/ggc/var/log/user/region/aws/`. Untuk informasi lebih lanjut tentang Greengrass pencatatan, lihat [Pemantauan dengan AWS IoT Greengrass log](greengrass-logs-overview.md).

Gunakan informasi berikut untuk membantu memecahkan masalah dengan Deteksi Objek ML konektor.

**Pustaka sistem yang diperlukan**

Tab berikut mencantumkan perpustakaan sistem yang diperlukan untuk setiap konektor Deteksi Objek ML.

------
#### [ ML Object Detection Aarch64 JTX2 ]


| Perpustakaan | Versi Minimum | 
| --- | --- | 
| ld-linux-aarch64.jadi.1 | GLIBC\$12.17 | 
| libc.so.6 | GLIBC\$12.17 | 
| libcublas.so.9.0 | tidak berlaku | 
| libcudart.so.9.0 | tidak berlaku | 
| libcudnn.so.7 | tidak berlaku | 
| libcufft.so.9.0 | tidak berlaku | 
| libcurand.so.9.0 | tidak berlaku | 
| libcusolver.so.9.0 | tidak berlaku | 
| libgcc\$1s.so.1 | GCC\$14.2.0 | 
| libgomp.so.1 | GOMP\$14.0, OMP\$11.0 | 
| libm.so.6 | GLIBC\$12.23 | 
| libnvinfer.so.4 | tidak berlaku | 
| libnvrm\$1gpu.so | tidak berlaku | 
| libnvrm.so | tidak berlaku | 
| libnvidia-fatbinaryloader.so.28.2.1 | tidak berlaku | 
| libnvos.so | tidak berlaku | 
| libpthread.so.0 | GLIBC\$12.17 | 
| librt.so.1 | GLIBC\$12.17 | 
| libstdc\$1\$1.so.6 | GLIBCXX\$13.4.21, CXXABI\$11.3.8 | 

------
#### [ ML Object Detection x86\$164 ]


| Perpustakaan | Versi Minimum | 
| --- | --- | 
| ld-linux-x86-64.jadi.2 | GCC\$14.0.0 | 
| libc.so.6 | GLIBC\$12.4 | 
| libgfortran.so.3 | GFORTRAN\$11.0 | 
| libm.so.6 | GLIBC\$12.23 | 
| libpthread.so.0 | GLIBC\$12.2.5 | 
| librt.so.1 | GLIBC\$12.2.5 | 
| libstdc\$1\$1.so.6 | CXXABI\$11.3.8, GLIBCXX\$13.4.21 | 

------
#### [ ML Object Detection ARMv7 ]


| Perpustakaan | Versi Minimum | 
| --- | --- | 
| ld-linux-armhf.jadi.3 | GLIBC\$12.4 | 
| libc.so.6 | GLIBC\$12.7 | 
| libgcc\$1s.so.1 | GCC\$14.0.0 | 
| libgfortran.so.3 | GFORTRAN\$11.0 | 
| libm.so.6 | GLIBC\$12.4 | 
| libpthread.so.0 | GLIBC\$12.4 | 
| librt.so.1 | GLIBC\$12.4 | 
| libstdc\$1\$1.so.6 | CXXABI\$11.3.8, CXXABI\$1ARM\$11.3.3, GLIBCXX\$13.4.20 | 

------

**Masalah**


| Gejala | Solusi | 
| --- | --- | 
|  Pada Raspberry Pi, pesan eror berikut dicatat dan Anda tidak menggunakan kamera: `Failed to initialize libdc1394`   |  Jalankan perintah berikut untuk menonaktifkan driver: <pre>sudo ln /dev/null /dev/raw1394</pre> Operasi ini bersifat fana. Tautan simbolis menghilang setelah Anda reboot. Konsultasikan manual distribusi OS Anda untuk mempelajari cara membuat tautan secara otomatis ketika reboot.  | 

## Lisensi
<a name="obj-detection-connector-license"></a>

Konektor Deteksi Objek ML termasuk perangkat lunak/lisensi pihak ketiga berikut:<a name="boto-3-licenses"></a>
+ [AWS SDK untuk Python (Boto3)](https://pypi.org/project/boto3/)/Lisensi 2.0 Apache
+ [botocore](https://pypi.org/project/botocore/)/Apache License 2.0
+ [dateutil](https://pypi.org/project/python-dateutil/1.4/)/PSF License
+ [docutils](https://pypi.org/project/docutils/)/BSD License, Lisensi Publik Umum (GPL) GNU, Lisensi Dasar Perangkat Lunak Python, Domain Publik
+ [jmespath](https://pypi.org/project/jmespath/)/MIT License
+ [s3transfer](https://pypi.org/project/s3transfer/)/Apache License 2.0
+ [urllib3](https://pypi.org/project/urllib3/)/Lisensi MIT
+ [Deep Learning waktu aktif](https://github.com/neo-ai/neo-ai-dlr)/Lisensi 2.0 Apache
+ <a name="six-license"></a>[six](https://github.com/benjaminp/six)/MIT

Konektor ini dirilis di bawah [Perjanjian Lisensi Perangkat lunak core Greengrass](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Lihat juga
<a name="obj-detection-connector-see-also"></a>
+ [Integrasikan dengan layanan dan protokol menggunakan konektor Greengrass](connectors.md)
+ [Memulai dengan konektor Greengrass (konsol)](connectors-console.md)
+ [Memulai dengan konektor Greengrass (CLI)](connectors-cli.md)
+ [Lakukan inferensi machine learning](ml-inference.md)
+ [Algoritma deteksi objek](https://docs.aws.amazon.com/sagemaker/latest/dg/object-detection.html) di *Panduan Pengembang Amazon SageMaker AI*

# Konektor Adaptor Protokol Modbus-RTU
<a name="modbus-protocol-adapter-connector"></a>

[Konektor Adaptor Protokol Modbus-RTU memungut](connectors.md) informasi dari perangkat Modbus RTU yang ada dalam grup. AWS IoT Greengrass 

Konektor ini menerima parameter untuk permintaan Modbus RTU dari fungsi Lambda yang ditetapkan pengguna. Ini mengirimkan permintaan yang sesuai, dan kemudian menerbitkan respon dari perangkat target sebagai pesan MQTT.

Konektor ini memiliki versi berikut.


| Versi | ARN | 
| --- | --- | 
| 3 | `arn:aws:greengrass:region::/connectors/ModbusRTUProtocolAdapter/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/ModbusRTUProtocolAdapter/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/ModbusRTUProtocolAdapter/versions/1` | 

Untuk informasi tentang perubahan versi, lihat [Changelog](#modbus-protocol-adapter-connector-changelog).

## Persyaratan
<a name="modbus-protocol-adapter-connector-req"></a>

Konektor ini memiliki persyaratan sebagai berikut:

------
#### [ Version 3 ]
+ <a name="conn-req-ggc-v1.9.3"></a>AWS IoT Greengrass Perangkat lunak inti v1.9.3 atau yang lebih baru.
+ <a name="conn-req-py-3.7-and-3.8"></a>[Python](https://www.python.org/) versi 3.7 atau 3.8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
**catatan**  <a name="use-runtime-py3.8"></a>
Untuk menggunakan Python 3.8, jalankan perintah berikut untuk membuat link simbolik dari folder instalasi default Python 3.7 ke binari Python 3.8 yang diinstal.  

  ```
  sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7
  ```
Ini mengonfigurasi perangkat Anda untuk memenuhi persyaratan Python untuk AWS IoT Greengrass.
+ <a name="conn-modbus-req-physical-connection"></a>Koneksi fisik antara AWS IoT Greengrass inti dan perangkat Modbus. Core harus terhubung secara fisik ke jaringan Modbus RTU melalui port serial; sebagai contoh port USB.
+ <a name="conn-modbus-req-serial-port-resource"></a>Sebuah [sumber daya perangkat lokal](access-local-resources.md) dalam grup Greengrass yang menunjuk ke port serial Modbus fisik.
+ <a name="conn-modbus-req-user-lambda"></a>Sebuah fungsi Lambda yang ditetapkan pengguna yang mengirimkan Modbus RTU permintaan parameter untuk konektor ini. Parameter permintaan harus sesuai dengan pola yang diharapkan dan menyertakan IDs dan alamat perangkat target pada jaringan Modbus RTU. Untuk informasi selengkapnya, lihat [Data input](#modbus-protocol-adapter-connector-data-input).

------
#### [ Versions 1 - 2 ]
+ <a name="conn-req-ggc-v1.7.0"></a>AWS IoT Greengrass Perangkat lunak inti v1.7 atau yang lebih baru.
+ [Python](https://www.python.org/) versi 2.7 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
+ <a name="conn-modbus-req-physical-connection"></a>Koneksi fisik antara AWS IoT Greengrass inti dan perangkat Modbus. Core harus terhubung secara fisik ke jaringan Modbus RTU melalui port serial; sebagai contoh port USB.
+ <a name="conn-modbus-req-serial-port-resource"></a>Sebuah [sumber daya perangkat lokal](access-local-resources.md) dalam grup Greengrass yang menunjuk ke port serial Modbus fisik.
+ <a name="conn-modbus-req-user-lambda"></a>Sebuah fungsi Lambda yang ditetapkan pengguna yang mengirimkan Modbus RTU permintaan parameter untuk konektor ini. Parameter permintaan harus sesuai dengan pola yang diharapkan dan menyertakan IDs dan alamat perangkat target pada jaringan Modbus RTU. Untuk informasi selengkapnya, lihat [Data input](#modbus-protocol-adapter-connector-data-input).

------

## Parameter Konektor
<a name="modbus-protocol-adapter-connector-param"></a>

Konektor ini mendukung parameter berikut:

`ModbusSerialPort-ResourceId`  
ID sumber daya perangkat lokal yang mewakili fisik Modbus serial port.  
Konektor ini diberikan akses baca-tulis ke sumber daya.
Nama tampilan di AWS IoT konsol: Sumber daya **port serial Modbus**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `.+`

`ModbusSerialPort`  
Jalur absolut ke port serial Modbus fisik pada perangkat. Ini adalah jalur sumber daya yang ditentukan untuk sumber daya perangkat lokal Modbus.  
Nama tampilan di AWS IoT konsol: **Jalur sumber sumber daya port serial Modbus**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `.+`

### Buat Contoh Konektor (AWS CLI)
<a name="modbus-protocol-adapter-connector-create"></a>

Perintah CLI berikut membuat `ConnectorDefinition` dengan versi awal yang berisi konektor Adaptor Protokol Modbus-RTU.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyModbusRTUProtocolAdapterConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/ModbusRTUProtocolAdapter/versions/3",
            "Parameters": {
                "ModbusSerialPort-ResourceId": "MyLocalModbusSerialPort",
                "ModbusSerialPort": "/path-to-port"
            }
        }
    ]
}'
```

**catatan**  
Fungsi Lambda dalam konektor mempunyai siklus hidup yang [berumur panjang](lambda-functions.md#lambda-lifecycle) ini.

Di AWS IoT Greengrass konsol, Anda dapat menambahkan konektor dari halaman **Konektor** grup. Untuk informasi selengkapnya, lihat [Memulai dengan konektor Greengrass (konsol)](connectors-console.md).

**catatan**  
Setelah Anda menggunakan konektor Adaptor Protokol Modbus-RTU, Anda dapat menggunakan AWS IoT Things Graph untuk mengatur interaksi antar perangkat dalam grup Anda. Untuk informasi lebih lanjut, lihat [Modbus](https://docs.aws.amazon.com/thingsgraph/latest/ug/iot-tg-protocols-modbus.html) dalam *AWS IoT Things Graph Panduan Pengguna*.

## Data input
<a name="modbus-protocol-adapter-connector-data-input"></a>

Konektor ini menerima permintaan parameter Modbus RTU dari fungsi Lambda yang ditetapkan pengguna pada topik MQTT. Pesan input harus dalam format JSON.

<a name="topic-filter"></a>**Filter topik dalam langganan**  
`modbus/adapter/request`

**Properti pesan**  
Pesan permintaan bervariasi berdasarkan jenis permintaan Modbus RTU yang diwakilinya. Properti berikut diperlukan untuk semua permintaan:  
+ Di `request` objek:
  + `operation`. Nama operasi untuk mengeksekusi. Sebagai contoh, tentukan `"operation": "ReadCoilsRequest"` untuk membaca koil. Nilai ini harus string Unicode. Untuk operasi yang didukung, lihat [Permintaan dan tanggapan Modbus RTU](#modbus-protocol-adapter-connector-requests-responses).
  + `device`. Perangkat target permintaan. Nilai ini harus berada dalam antara `0 - 247`.
+ Properti `id` ini. ID untuk permintaan. Nilai ini digunakan untuk deduplikasi data dan dikembalikan seperti dalam properti `id` dari semua respon, termasuk respon kesalahan. Nilai ini harus string Unicode.
Jika permintaan Anda mencakup bidang alamat, Anda harus menentukan nilai sebagai bilangan bulat. Misalnya, `"address": 1`.
Parameter lain untuk memasukkan dalam permintaan tergantung pada operasi. Semua parameter permintaan diperlukan kecuali CRC, yang ditangani secara terpisah. Sebagai contoh, lihat [Contoh permintaan dan respons](#modbus-protocol-adapter-connector-examples).

**Contoh masukan: Baca permintaan kumparan**  

```
{
    "request": {
        "operation": "ReadCoilsRequest",
    	"device": 1,
    	"address": 1,
    	"count": 1
    },
    "id": "TestRequest"
}
```

## Data output
<a name="modbus-protocol-adapter-connector-data-output"></a>

Konektor ini menerbitkan tanggapan atas permintaan Modbus RTU yang masuk.

<a name="topic-filter"></a>**Filter topik dalam langganan**  
`modbus/adapter/response`

**Properti pesan**  
Format pesan respon bervariasi berdasarkan permintaan yang sesuai dan status respon. Sebagai contoh, lihat [Contoh permintaan dan respons](#modbus-protocol-adapter-connector-examples).  
Sebuah respon untuk operasi menulis hanyalah gema dari permintaan. Meskipun tidak ada informasi yang berarti dikembalikan untuk menulis tanggapan, itu adalah praktik yang baik untuk memeriksa status respon.
Setiap respon mencakup properti berikut:  
+ Di `response` objek:
  + `status`. Status permintaan. Status dapat menjadi salah satu dari nilai-nilai yang berikut:
    + `Success`. Permintaan itu valid, dikirim ke jaringan Modbus RTU, dan tanggapan dikembalikan.
    + `Exception`. Permintaan itu valid, dikirim ke jaringan Modbus RTU, dan respon pengecualian dikembalikan. Untuk informasi selengkapnya, lihat [Status respon: Pengecualian](#modbus-protocol-adapter-connector-response-exception).
    + `No Response`. Permintaan tidak valid, dan konektor menangkap kesalahan sebelum permintaan dikirim melalui jaringan Modbus RTU. Untuk informasi selengkapnya, lihat [Status respon: Tidak ada respon](#modbus-protocol-adapter-connector-response-noresponse).
  + `device`. Perangkat yang permintaan dikirim ke.
  + `operation`. Jenis permintaan yang dikirim.
  + `payload`. Isi respon yang dikembalikan. Jika `status` adalah `No Response`, objek ini hanya berisi sebuah `error` properti dengan deskripsi kesalahan (sebagai contoh, `"error": "[Input/Output] No Response received from the remote unit"`).
+ Properti `id` ini. ID permintaan, digunakan untuk deduplikasi data.

**Contoh keluaran: Sukses**  

```
{
    "response" : {
        "status" : "success",
        "device": 1,
    	"operation": "ReadCoilsRequest",
    	"payload": {
        	"function_code": 1,
        	"bits": [1]
    	}
     },
     "id" : "TestRequest"
}
```

**Contoh keluaran: Kegagalan**  

```
{
    "response" : {
        "status" : "fail",
        "error_message": "Internal Error",
        "error": "Exception",
        "device": 1,
    	"operation": "ReadCoilsRequest",
    	"payload": {
        	"function_code": 129,
        	"exception_code": 2
    	}
     },
     "id" : "TestRequest"
}
```
Untuk contoh lainnya, lihat [Contoh permintaan dan respons](#modbus-protocol-adapter-connector-examples).

## Permintaan dan tanggapan Modbus RTU
<a name="modbus-protocol-adapter-connector-requests-responses"></a>

Konektor ini menerima parameter permintaan Modbus RTU sebagai [data input](#modbus-protocol-adapter-connector-data-input) dan menerbitkan tanggapan sebagai [data output](#modbus-protocol-adapter-connector-data-output).

Operasi umum berikut ini didukung.


| Nama operasi dalam permintaan | Kode fungsi dalam respons | 
| --- | --- | 
| ReadCoilsRequest | 01 | 
| ReadDiscreteInputsRequest | 02 | 
| ReadHoldingRegistersRequest | 03 | 
| ReadInputRegistersRequest | 04 | 
| WriteSingleCoilRequest | 05 | 
| WriteSingleRegisterRequest | 06 | 
| WriteMultipleCoilsRequest | 15 | 
| WriteMultipleRegistersRequest | 16 | 
| MaskWriteRegisterRequest | 22 | 
| ReadWriteMultipleRegistersRequest | 23 | 

### Contoh permintaan dan respons
<a name="modbus-protocol-adapter-connector-examples"></a>

Berikut ini adalah contoh permintaan dan tanggapan untuk operasi yang didukung.

Baca Koil  
**Contoh permintaan:**  

```
{
    "request": {
        "operation": "ReadCoilsRequest",
    	"device": 1,
    	"address": 1,
    	"count": 1
    },
    "id": "TestRequest"
}
```
**Contoh respons:**  

```
{
    "response": {
        "status": "success",
        "device": 1,
    	"operation": "ReadCoilsRequest",
    	"payload": {
        	"function_code": 1,
        	"bits": [1]
    	}
     },
     "id" : "TestRequest"
}
```

Baca Input Diskrit  
**Contoh permintaan:**  

```
{
    "request": {
        "operation": "ReadDiscreteInputsRequest",
        "device": 1,
        "address": 1,
        "count": 1
    },
    "id": "TestRequest"
}
```
**Contoh respons:**  

```
{
    "response": {
        "status": "success",
        "device": 1,
        "operation": "ReadDiscreteInputsRequest",
        "payload": {
            "function_code": 2,
            "bits": [1]
        }
     },
     "id" : "TestRequest"
}
```

Baca Register Holding  
**Contoh permintaan:**  

```
{
    "request": {
        "operation": "ReadHoldingRegistersRequest",
    	"device": 1,
    	"address": 1,
    	"count": 1
    },
    "id": "TestRequest"
}
```
**Contoh respons:**  

```
{
    "response": {
        "status": "success",
        "device": 1,
    	"operation": "ReadHoldingRegistersRequest",
    	"payload": {
    	    "function_code": 3,
            "registers": [20,30]
    	}
     },
     "id" : "TestRequest"
}
```

Baca Register Input  
**Contoh permintaan:**  

```
{
    "request": {
        "operation": "ReadInputRegistersRequest",
    	"device": 1,
    	"address": 1,
    	"value": 1
    },
    "id": "TestRequest"
}
```

Tulis Kumparan Tunggal  
**Contoh permintaan:**  

```
{
    "request": {
        "operation": "WriteSingleCoilRequest",
    	"device": 1,
    	"address": 1,
    	"value": 1
    },
    "id": "TestRequest"
}
```
**Contoh respons:**  

```
{
    "response": {
        "status": "success",
        "device": 1,
    	"operation": "WriteSingleCoilRequest",
    	"payload": {
    	    "function_code": 5,
    	    "address": 1,
    	    "value": true
    	}
     },
     "id" : "TestRequest"
```

Menulis Register Tunggal  
**Contoh permintaan:**  

```
{
    "request": {
        "operation": "WriteSingleRegisterRequest",
    	"device": 1,
    	"address": 1,
    	"value": 1
    },
    "id": "TestRequest"
}
```

Tulis Banyak Koil  
**Contoh permintaan:**  

```
{
    "request": {
        "operation": "WriteMultipleCoilsRequest",
    	"device": 1,
    	"address": 1,
    	"values": [1,0,0,1]
    },
    "id": "TestRequest"
}
```
**Contoh respons:**  

```
{
    "response": {
        "status": "success",
        "device": 1,
    	"operation": "WriteMultipleCoilsRequest",
    	"payload": {
    	    "function_code": 15,
    	    "address": 1,
    	    "count": 4
    	}
     },
     "id" : "TestRequest"
}
```

Tulis Banyak Register  
**Contoh permintaan:**  

```
{
    "request": {
        "operation": "WriteMultipleRegistersRequest",
    	"device": 1,
    	"address": 1,
    	"values": [20,30,10]
    },
    "id": "TestRequest"
}
```
**Contoh respons:**  

```
{
    "response": {
        "status": "success",
        "device": 1,
    	"operation": "WriteMultipleRegistersRequest",
    	"payload": {
    	    "function_code": 23,
    	    "address": 1,
       		"count": 3
    	}
     },
     "id" : "TestRequest"
}
```

Topeng Register Menulis  
**Contoh permintaan:**  

```
{
    "request": {
        "operation": "MaskWriteRegisterRequest",
    	"device": 1,
    	"address": 1,
        "and_mask": 175,
        "or_mask": 1
    },
    "id": "TestRequest"
}
```
**Contoh respons:**  

```
{
    "response": {
        "status": "success",
        "device": 1,
    	"operation": "MaskWriteRegisterRequest",
    	"payload": {
    	    "function_code": 22,
            "and_mask": 0,
            "or_mask": 8
    	}
     },
     "id" : "TestRequest"
}
```

Baca Tulis Banyak Register  
**Contoh permintaan:**  

```
{
    "request": {
        "operation": "ReadWriteMultipleRegistersRequest",
    	"device": 1,
    	"read_address": 1,
        "read_count": 2,
        "write_address": 3,
        "write_registers": [20,30,40]
    },
    "id": "TestRequest"
}
```
**Contoh respons:**  

```
{
    "response": {
        "status": "success",
        "device": 1,
    	"operation": "ReadWriteMultipleRegistersRequest",
    	"payload": {
    	    "function_code": 23,
    	    "registers": [10,20,10,20]
    	}
     },
     "id" : "TestRequest"
}
```
Register kembali dalam respon ini adalah register yang dibaca dari.

### Status respon: Pengecualian
<a name="modbus-protocol-adapter-connector-response-exception"></a>

Pengecualian dapat terjadi bila format permintaan valid, tetapi permintaan tersebut tidak berhasil diselesaikan. Dalam kasus ini, respons berisi informasi berikut:
+ `status` ditetapkan ke `Exception`.
+ `function_code` sama dengan kode fungsi permintaan \$1 128.
+ `exception_code` berisi kode pengecualian. Untuk informasi selengkapnya, lihat kode pengecualian Modbus.

**Contoh:**

```
{
    "response" : {
        "status" : "fail",
        "error_message": "Internal Error",
        "error": "Exception",
        "device": 1,
    	"operation": "ReadCoilsRequest",
    	"payload": {
        	"function_code": 129,
        	"exception_code": 2
    	}
     },
     "id" : "TestRequest"
}
```

### Status respon: Tidak ada respon
<a name="modbus-protocol-adapter-connector-response-noresponse"></a>

Konektor ini melakukan pemeriksaan validasi pada permintaan Modbus. Sebagai contoh, ia memeriksa format yang tidak sah dan kolom yang hilang. Jika validasi gagal, konektor tidak akan mengirim permintaan. Sebaliknya, ia mengembalikan respon yang berisi informasi berikut:
+ Ini `status` diatur ke `No Response`.
+ Ini `error` berisi alasan untuk kesalahan.
+ Ini `error_message` berisi pesan kesalahan.

**Contoh:**

```
{
    "response" : {
        "status" : "fail",
        "error_message": "Invalid address field. Expected <type 'int'>, got <type 'str'>",
        "error": "No Response",
        "device": 1,
    	"operation": "ReadCoilsRequest",
    	"payload": {
        	"error": "Invalid address field. Expected <type 'int'>, got <type 'str'>"
    	}
     },
     "id" : "TestRequest"
}
```

Jika permintaan menargetkan perangkat yang tidak ada atau jika jaringan Modbus RTU tidak berfungsi, Anda mungkin mendapatkan `ModbusIOException`, yang menggunakan format No Response.

```
{
    "response" : {
        "status" : "fail",
        "error_message": "[Input/Output] No Response received from the remote unit",
        "error": "No Response",
        "device": 1,
    	"operation": "ReadCoilsRequest",
    	"payload": {
        	"error": "[Input/Output] No Response received from the remote unit"
    	}
     },
     "id" : "TestRequest"
}
```

## Contoh Penggunaan
<a name="modbus-protocol-adapter-connector-usage"></a>

<a name="connectors-setup-intro"></a>Gunakan langkah-langkah tingkat tinggi berikut untuk mengatur contoh fungsi Lambda Python 3.7 yang dapat Anda gunakan untuk mencoba konektor.

**catatan**  <a name="connectors-setup-get-started-topics"></a>
Jika Anda menggunakan waktu aktif Python lainnya, Anda dapat membuat symlink dari Python3.x ke Python 3.7.
Topik [Memulai dengan konektor (konsol)](connectors-console.md) dan [Memulai dengan konektor (CLI)](connectors-cli.md) berisi langkah-langkah terperinci yang menunjukkan cara mengonfigurasi dan men-deploy contoh konektor Notifikasi Twilio.

1. Pastikan Anda memenuhi [persyaratan](#modbus-protocol-adapter-connector-req) untuk konektor.

1. <a name="connectors-setup-function"></a>Buat dan terbitkan fungsi Lambda yang mengirimkan data input ke konektor.

   Simpan [kode contoh](#modbus-protocol-adapter-connector-usage-example) sebagai file PY. <a name="connectors-setup-function-sdk"></a>Unduh dan unzip [AWS IoT Greengrass Core SDK for Python](lambda-functions.md#lambda-sdks-core). Kemudian, buat paket zip yang berisi file PY dan folder `greengrasssdk` dalam tingkat root. Paket zip ini adalah paket deployment yang Anda unggah ke AWS Lambda.

   <a name="connectors-setup-function-publish"></a>Setelah Anda membuat fungsi Lambda Python 3.7, terbitkankan versi fungsi dan buat alias.

1. Konfigurasikan grup Greengrass Anda.

   1. <a name="connectors-setup-gg-function"></a>Tambahkan fungsi Lambda dengan aliasnya (direkomendasikan). Konfigurasikan siklus hidup Lambda sebagai berumur panjang (atau `"Pinned": true` dalam CLI).

   1. <a name="connectors-setup-device-resource"></a>Tambahkan sumber daya perangkat lokal yang diperlukan dan berikan akses baca/tulis ke fungsi Lambda.

   1. Tambahkan konektor dan konfigurasikan [parameter](#modbus-protocol-adapter-connector-param).

   1. Tambahkan langganan yang mengizinkan konektor untuk menerima [data input](#modbus-protocol-adapter-connector-data-input) dan mengirim [data output](#modbus-protocol-adapter-connector-data-output) pada filter topik yang didukung.
      + <a name="connectors-setup-subscription-input-data"></a>Atur fungsi Lambda sebagai sumber, konektor sebagai target, dan gunakan filter topik input yang mendukung.
      + <a name="connectors-setup-subscription-output-data"></a>Atur konektor sebagai sumber, AWS IoT Core sebagai target, dan gunakan filter topik input yang mendukung. Anda menggunakan langganan ini untuk melihat pesan status di AWS IoT konsol.

1. <a name="connectors-setup-deploy-group"></a>Men-deploy grup.

1. <a name="connectors-setup-test-sub"></a>Di AWS IoT konsol, pada halaman **Uji**, berlangganan topik data keluaran untuk melihat pesan status dari konektor. Contoh fungsi Lambda yang berumur panjang dan mulai mengirim pesan segera setelah grup dalam-deploy.

   Setelah selesai pengujian, Anda dapat mengatur siklus hidup Lambda ke sesuai permintaan (atau `"Pinned": false` dalam CLI) dan men-deploy grup. Ini menghentikan fungsi dari mengirim pesan.

### Contoh
<a name="modbus-protocol-adapter-connector-usage-example"></a>

Contoh fungsi Lambda berikut mengirimkan pesan input ke konektor.

```
import greengrasssdk
import json

TOPIC_REQUEST = 'modbus/adapter/request'

# Creating a greengrass core sdk client
iot_client = greengrasssdk.client('iot-data')

def create_read_coils_request():
	request = {
		"request": {
			"operation": "ReadCoilsRequest",
			"device": 1,
			"address": 1,
			"count": 1
		},
		"id": "TestRequest"
	}
	return request

def publish_basic_request():
	iot_client.publish(payload=json.dumps(create_read_coils_request()), topic=TOPIC_REQUEST)

publish_basic_request()

def lambda_handler(event, context):
	return
```

## Lisensi
<a name="modbus-protocol-adapter-connector-license"></a>

Konektor Adaptor Protokol Modbus-RTU mencakup perangkat lunak/lisensi pihak ketiga berikut:
+ [pymodbus](https://github.com/riptideio/pymodbus/blob/master/README.rst)/BSD
+ [pyserial](https://github.com/pyserial/pyserial)/BSD

Konektor ini dirilis di bawah [Perjanjian Lisensi Perangkat lunak core Greengrass](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Changelog
<a name="modbus-protocol-adapter-connector-changelog"></a>

Tabel berikut menjelaskan perubahan dalam setiap versi konektor.


| Versi | Perubahan | 
| --- | --- | 
| 3 | <a name="upgrade-runtime-py3.7"></a>Memperbarui waktu aktif Lambda untuk Python 3.7, yang mengubah persyaratan waktu aktif. | 
| 2 | Konektor ARN yang diperbarui untuk Wilayah AWS dukungan. Pencatatan kesalahan yang ditingkatkan. | 
| 1 | Pelepasan awal.  | 

<a name="one-conn-version"></a>Sebuah grup Greengrass dapat berisi hanya satu versi konektor pada suatu waktu. Untuk informasi lebih lanjut tentang pembaruan versi konektor, lihat [Versi upgrade konektor](connectors.md#upgrade-connector-versions).

## Lihat juga
<a name="modbus-protocol-adapter-connector-see-also"></a>
+ [Integrasikan dengan layanan dan protokol menggunakan konektor Greengrass](connectors.md)
+ [Memulai dengan konektor Greengrass (konsol)](connectors-console.md)
+ [Memulai dengan konektor Greengrass (CLI)](connectors-cli.md)

# Konektor Adaptor Protokol Modbus-TCP
<a name="modbus-tcp-connector"></a>

[Konektor](connectors.md) Adaptor Protokol Modbus-TCP mengumpulkan data dari perangkat lokal melalui protokol ModBustCP dan menerbitkannya ke aliran `StreamManager` yang dipilih.

Anda juga dapat menggunakan konektor ini dengan konektor IoT dan gateway SiteWise IoT Anda. SiteWise Gateway Anda harus menyediakan konfigurasi untuk konektor. Untuk informasi selengkapnya, lihat [Mengkonfigurasi sumber TCP Modbus](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/configure-modbus-source.html) di panduan pengguna SiteWise IoT. 

**catatan**  
 Konektor ini berjalan dalam mode [Tanpa isolasi kontainer](lambda-group-config.md#no-container-mode), sehingga Anda dapat menerapkannya ke AWS IoT Greengrass grup yang berjalan di wadah Docker. 

Konektor ini memiliki versi berikut.


| Versi | ARN | 
| --- | --- | 
| 3 | `arn:aws:greengrass:region::/connectors/ModbusTCPConnector/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/ModbusTCPConnector/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/ModbusTCPConnector/versions/1` | 

Untuk informasi tentang perubahan versi, lihat [Changelog](#modbus-tcp-connector-changelog).

## Persyaratan
<a name="modbus-tcp-connector-req"></a>

Konektor ini memiliki persyaratan sebagai berikut:

------
#### [ Version 1 - 3 ]
+ AWS IoT Greengrass Perangkat lunak inti v1.10.2 atau yang lebih baru.
+ Manajer aliran diaktifkan di AWS IoT Greengrass grup.
+ Java 8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan `PATH` ini.

**catatan**  
 Konektor ini hanya tersedia dalam wilayah berikut:   
ap-southeast-1
ap-southeast-2
eu-central-1
eu-west-1
us-east-1
us-west-2
cn-north-1

------

## Parameter Konektor
<a name="modbus-tcp-connector-param"></a>

Konektor ini mendukung parameter berikut:

`LocalStoragePath`  
Direktori pada AWS IoT Greengrass host tempat SiteWise konektor IoT dapat menulis data persisten. Direktori default adalah `/var/sitewise`.  
Nama tampilan di AWS IoT konsol: **Jalur penyimpanan lokal**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^\s*$|\/.`

`MaximumBufferSize`  
Ukuran maksimum dalam GB untuk penggunaan SiteWise disk IoT. Ukuran default-nya adalah 10GB.  
Nama tampilan di AWS IoT konsol: Ukuran **buffer disk maksimum**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^\s*$|[0-9]+`

`CapabilityConfiguration`  
Atur konfigurasi kolektor Modbus TCP yang konektor mengumpulkan data dari dan terhubung ke.  
Nama tampilan di AWS IoT konsol: **CapabilityConfiguration**  
Wajib: `false`  
Jenis: Sebuah string JSON terbentuk yang mendefinisikan himpunan konfigurasi umpan balik yang didukung.

Berikut ini adalah contoh dari `CapabilityConfiguration`:

```
{
    "sources": [
        {
            "type": "ModBusTCPSource",
            "name": "SourceName1",
            "measurementDataStreamPrefix": "SourceName1_Prefix",
            "destination": {
                "type": "StreamManager",
                "streamName": "SiteWise_Stream_1",
                "streamBufferSize": 8
            },
            "endpoint": {
                "ipAddress": "127.0.0.1",
                "port": 8081,
                "unitId": 1
            },
            "propertyGroups": [
                {
                    "name": "GroupName",
                    "tagPathDefinitions": [
                        {
                            "type": "ModBusTCPAddress",
                            "tag": "TT-001",
                            "address": "30001",
                            "size": 2,
                            "srcDataType": "float",
                            "transformation": "byteWordSwap",
                            "dstDataType": "double"
                        }
                    ],
                    "scanMode": {
                        "type": "POLL",
                        "rate": 100
                    }
                }
            ]
        }
    ]
}
```

### Buat Contoh Konektor (AWS CLI)
<a name="modbus-connector-create"></a>

Perintah CLI berikut membuat `ConnectorDefinition` dengan versi awal yang berisi konektor Adaptor Protokol Modbus-TCP.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '
{
    "Connectors": [
        {
            "Id": "MyModbusTCPConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/ModbusTCP/versions/3",
            "Parameters": {
                "capability_configuration": "{\"version\":1,\"namespace\":\"iotsitewise:modbuscollector:1\",\"configuration\":\"{\"sources\":[{\"type\":\"ModBusTCPSource\",\"name\":\"SourceName1\",\"measurementDataStreamPrefix\":\"\",\"endpoint\":{\"ipAddress\":\"127.0.0.1\",\"port\":8081,\"unitId\":1},\"propertyGroups\":[{\"name\":\"PropertyGroupName\",\"tagPathDefinitions\":[{\"type\":\"ModBusTCPAddress\",\"tag\":\"TT-001\",\"address\":\"30001\",\"size\":2,\"srcDataType\":\"hexdump\",\"transformation\":\"noSwap\",\"dstDataType\":\"string\"}],\"scanMode\":{\"rate\":200,\"type\":\"POLL\"}}],\"destination\":{\"type\":\"StreamManager\",\"streamName\":\"SiteWise_Stream\",\"streamBufferSize\":10},\"minimumInterRequestDuration\":200}]}\"}"
            }
        }
    ]
}'
```

**catatan**  
Fungsi Lambda dalam konektor mempunyai siklus hidup yang [berumur panjang](lambda-functions.md#lambda-lifecycle) ini.

## Data input
<a name="modbus-tcp-connector-data-input"></a>

Konektor ini tidak menerima pesan MQTT sebagai data input.

## Data output
<a name="modbus-tcp-connector-data-output"></a>

Konektor ini menerbitkan data ke `StreamManager`. Anda harus mengonfigurasi aliran pesan tujuan. Pesan output dari struktur berikut:

```
{
    "alias": "string",
    "messages": [
        {
            "name": "string",
            "value": boolean|double|integer|string,
            "timestamp": number,
            "quality": "string"
        }
    ]
}
```

## Lisensi
<a name="modbus-tcp-connector-license"></a>

Konektor Adaptor Protokol Modbus-TCP termasuk perangkat lunak/lisensi pihak ketiga berikut:
+ Modbus [Petri Digital](https://github.com/digitalpetri/modbus)

Konektor ini dirilis di bawah [Perjanjian Lisensi Perangkat lunak core Greengrass](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Changelog
<a name="modbus-tcp-connector-changelog"></a>

Tabel berikut menjelaskan perubahan dalam setiap versi konektor.


| Versi | Perubahan | Tanggal | 
| --- | --- | --- | 
| 3 (disarankan) | Versi ini berisi perbaikan bug. | Desember 22, 2021 | 
| 2 | Ditambahkan dukungan untuk ASCII, UTF8, dan string sumber ISO8859 dikodekan. | 24 Mei 2021 | 
| 1 | Pelepasan awal. | 15 Desember 2020 | 

<a name="one-conn-version"></a>Sebuah grup Greengrass dapat berisi hanya satu versi konektor pada suatu waktu. Untuk informasi lebih lanjut tentang pembaruan versi konektor, lihat [Versi upgrade konektor](connectors.md#upgrade-connector-versions).

## Lihat juga
<a name="modbus-tcp-connector-see-also"></a>
+ [Integrasikan dengan layanan dan protokol menggunakan konektor Greengrass](connectors.md)
+ [Memulai dengan konektor Greengrass (konsol)](connectors-console.md)
+ [Memulai dengan konektor Greengrass (CLI)](connectors-cli.md)

# Konektor Raspberry Pi GPIO
<a name="raspberrypi-gpio-connector"></a>

**Awas**  <a name="connectors-extended-life-phase-warning"></a>
Konektor ini telah pindah ke *fase umur yang diperpanjang*, dan AWS IoT Greengrass tidak akan merilis pembaruan yang menyediakan fitur, penyempurnaan pada fitur yang ada, patch keamanan, atau perbaikan bug. Untuk informasi selengkapnya, lihat [AWS IoT Greengrass Version 1 kebijakan pemeliharaan](maintenance-policy.md).

konektor [Raspberry pi GPIO](connectors.md) mengontrol general-purpose input/output (GPIO) pin pada perangkat Raspberry Pi core.

Konektor ini polling input pin pada interval tertentu dan menerbitkan perubahan keadaan untuk topik MQTT. Hal ini juga menerima membaca dan menulis permintaan sebagai pesan MQTT dari fungsi Lambda yang ditetapkan pengguna. Permintaan tulis digunakan untuk mengatur pin tegangan tinggi atau rendah.

Konektor menyediakan parameter yang Anda gunakan untuk menetapkan pin input dan output. Perilaku ini dikonfigurasi sebelum deployment grup. Hal ini tidak dapat diubah pada ketika waktu aktif.
+ Pin input dapat digunakan untuk menerima data dari perangkat periferal.
+ Pin output dapat digunakan untuk mengontrol periferal atau mengirim data ke periferal.

Anda dapat menggunakan konektor ini untuk banyak skenario, seperti:
+ Mengontrol lampu LED hijau, kuning, dan merah untuk lampu lalu lintas.
+ Mengontrol kipas (melekat pada relay listrik) berdasarkan data dari sensor kelembaban.
+ Mengingatkan karyawan dalam toko ritel ketika pelanggan menekan tombol.
+ Menggunakan lampu pintar untuk mengontrol perangkat IoT lainnya.

**catatan**  
Konektor ini tidak sesuai untuk aplikasi yang mempunyai persyaratan secara langsung. Acara dengan durasi pendek mungkin tidak terjawab.

Konektor ini memiliki versi berikut.


| Versi | ARN | 
| --- | --- | 
| 3 | `arn:aws:greengrass:region::/connectors/RaspberryPiGPIO/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/RaspberryPiGPIO/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/RaspberryPiGPIO/versions/1` | 

Untuk informasi tentang perubahan versi, lihat [Changelog](#raspberrypi-gpio-connector-changelog).

## Persyaratan
<a name="raspberrypi-gpio-connector-req"></a>

Konektor ini memiliki persyaratan sebagai berikut:

------
#### [ Version 3 ]
+ <a name="conn-req-ggc-v1.9.3"></a>AWS IoT Greengrass Perangkat lunak inti v1.9.3 atau yang lebih baru.
+ [Python](https://www.python.org/) versi 3.7 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
+ <a name="conn-gpio-req-pin-seq"></a>Raspberry Pi 4 Model B, atau Raspberry Pi 3 Model B/B\$1. Anda harus tahu urutan pin Raspberry Pi Anda. Untuk informasi selengkapnya, lihat [Urutan Pin GPIO](#raspberrypi-gpio-connector-req-pins).
+ <a name="conn-gpio-req-dev-gpiomem-resource"></a>Sebuah [sumber daya perangkat lokal](access-local-resources.md) dalam grup Greengrass yang menunjuk ke `/dev/gpiomem` dalam Raspberry Pi. Jika Anda membuat sumber daya dalam konsol tersebut, Anda harus memilih opsi **Secara otomatis menambahkan izin grup OS dari grup Linux yang memiliki sumber daya** ini. Di API, atur `GroupOwnerSetting.AutoAddGroupOwner` properti untuk `true`.
+ <a name="conn-gpio-req-rpi-gpio"></a>[RPiModul.GPIO](https://sourceforge.net/p/raspberry-gpio-python/wiki/Home/) diinstal pada Raspberry Pi. Di Raspbian, modul ini dipasang secara default. Anda dapat menggunakan perintah berikut untuk menginstal ulang:

  ```
  sudo pip install RPi.GPIO
  ```

------
#### [ Versions 1 - 2 ]
+ <a name="conn-req-ggc-v1.7.0"></a>AWS IoT Greengrass Perangkat lunak inti v1.7 atau yang lebih baru.
+ [Python](https://www.python.org/) versi 2.7 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
+ <a name="conn-gpio-req-pin-seq"></a>Raspberry Pi 4 Model B, atau Raspberry Pi 3 Model B/B\$1. Anda harus tahu urutan pin Raspberry Pi Anda. Untuk informasi selengkapnya, lihat [Urutan Pin GPIO](#raspberrypi-gpio-connector-req-pins).
+ <a name="conn-gpio-req-dev-gpiomem-resource"></a>Sebuah [sumber daya perangkat lokal](access-local-resources.md) dalam grup Greengrass yang menunjuk ke `/dev/gpiomem` dalam Raspberry Pi. Jika Anda membuat sumber daya dalam konsol tersebut, Anda harus memilih opsi **Secara otomatis menambahkan izin grup OS dari grup Linux yang memiliki sumber daya** ini. Di API, atur `GroupOwnerSetting.AutoAddGroupOwner` properti untuk `true`.
+ <a name="conn-gpio-req-rpi-gpio"></a>[RPiModul.GPIO](https://sourceforge.net/p/raspberry-gpio-python/wiki/Home/) diinstal pada Raspberry Pi. Di Raspbian, modul ini dipasang secara default. Anda dapat menggunakan perintah berikut untuk menginstal ulang:

  ```
  sudo pip install RPi.GPIO
  ```

------

### Urutan Pin GPIO
<a name="raspberrypi-gpio-connector-req-pins"></a>

Konektor Raspberry Pi GPIO mereferensikan GPIO pin oleh skema penomoran sistem yang mendasari System on Chip (SoC), bukan oleh tata letak fisik pin GPIO. Pemesanan fisik pin mungkin bervariasi dalam versi Raspberry Pi. Untuk informasi lebih lanjut, lihat [GPIO](https://www.raspberrypi.org/documentation/usage/gpio/) dalam dokumentasi Raspberry Pi.

Konektor tidak dapat memvalidasi bahwa pin input dan output Anda mengonfigurasi peta dengan benar untuk perangkat keras yang mendasari Raspberry Pi Anda. Jika konfigurasi pin tidak valid, konektor mengembalikan kesalahan waktu aktif ketika mencoba untuk memulai pada perangkat. Untuk mengatasi masalah ini, konfigurasikan konektor dan kemudian terapkan lagi.

**catatan**  
Pastikan bahwa periferal untuk pin GPIO terhubung dengan baik untuk mencegah kerusakan komponen.

## Parameter Konektor
<a name="raspberrypi-gpio-connector-param"></a>

Konektor ini menyediakan parameter berikut:

`InputGpios`  
Daftar jumlah pin GPIO dipisahkan dengan koma untuk mengonfigurasi sebagai input. Opsional menambahkan `U` untuk mengatur resistor pull-up pin, atau `D` untuk mengatur resistor pull-down. Contoh:`"5,6U,7D"`.  
Nama tampilan di AWS IoT konsol: **Masukkan pin GPIO**  
Diperlukan:`false`. Anda harus menentukan pin input, pin output, atau keduanya.  
Tipe: `string`  
Pola yang valid: `^$|^[0-9]+[UD]?(,[0-9]+[UD]?)*$`

`InputPollPeriod`  
Interval (dalam milidetik) antara setiap operasi polling suara, yang memeriksa pin input GPIO untuk perubahan keadaan. Nilai minimum adalah 1.  
Nilai ini tergantung pada skenario Anda dan jenis perangkat yang disurvei. Sebagai contoh, nilai `50` harus cukup cepat untuk mendeteksi tombol tekan.  
Nama tampilan di AWS IoT konsol: **Masukan periode polling GPIO**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^$|^[1-9][0-9]*$`

`OutputGpios`  
Daftar pin GPIO yang dipisahkan dengan koma untuk mengonfigurasi sebagai output. Opsional menambahkan `H` untuk menetapkan keadaan tinggi (1), atau `L` untuk mengatur keadaan rendah (0). Contoh:`"8H,9,27L"`.  
Nama tampilan di AWS IoT konsol: **Output pin GPIO**  
Diperlukan:`false`. Anda harus menentukan pin input, pin output, atau keduanya.  
Tipe: `string`  
Pola yang valid: `^$|^[0-9]+[HL]?(,[0-9]+[HL]?)*$`

`GpioMem-ResourceId`  
ID sumber daya perangkat lokal yang mewakili `/dev/gpiomem`.  
Konektor ini diberikan akses baca-tulis ke sumber daya.
Nama tampilan di AWS IoT konsol: **for /dev/gpiomemPerangkat sumber daya**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `.+`

### Buat Contoh Konektor (AWS CLI)
<a name="raspberrypi-gpio-connector-create"></a>

Perintah CLI berikut membuat `ConnectorDefinition` dengan versi awal yang berisi konektor Raspberry Pi GPIO.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyRaspberryPiGPIOConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/RaspberryPiGPIO/versions/3",
            "Parameters": {
                "GpioMem-ResourceId": "my-gpio-resource",
                "InputGpios": "5,6U,7D",
                "InputPollPeriod": 50,
                "OutputGpios": "8H,9,27L"
            }
        }
    ]
}'
```

**catatan**  
Fungsi Lambda dalam konektor mempunyai siklus hidup yang [berumur panjang](lambda-functions.md#lambda-lifecycle) ini.

Di AWS IoT Greengrass konsol, Anda dapat menambahkan konektor dari halaman **Konektor** grup. Untuk informasi selengkapnya, lihat [Memulai dengan konektor Greengrass (konsol)](connectors-console.md).

## Data input
<a name="raspberrypi-gpio-connector-data-input"></a>

Konektor ini menerima permintaan membaca atau menulis untuk pin GPIO pada dua topik MQTT.
+ Baca permintaan pada topik `gpio/+/+/read` ini.
+ Tulis permintaan pada `gpio/+/+/write` Topik.

Untuk menerbitkan topik ini, ganti `+` wildcard dengan core hal nama dan nomor pin target, masing-masing. Sebagai contoh:

```
gpio/core-thing-name/gpio-number/read
```

**catatan**  
Ketika ini, ketika Anda membuat langganan yang menggunakan konektor Raspberry Pi GPIO, Anda harus menentukan nilai untuk setidaknya salah satu dari \$1 wildcard dalam topik.

**Filter topik:** `gpio/+/+/read`  
Gunakan topik ini untuk mengarahkan konektor untuk membaca keadaan pin GPIO yang ditentukan dalam topik.  
Konektor menerbitkan respons terhadap topik output yang sesuai (sebagai contoh, `gpio/core-thing-name/gpio-number/state`).    
**Properti pesan**  
Tidak ada. Pesan yang dikirim ke topik ini diabaikan.

**Filter topik:** `gpio/+/+/write`  
Gunakan topik ini untuk mengirim permintaan menulis ke pin GPIO. Ini mengarahkan konektor untuk mengatur pin GPIO yang ditentukan dalam topik untuk tegangan rendah atau tinggi.  
+ `0` atur pin ke tegangan rendah.
+ `1` atur pin ke tegangan tinggi.
Konektor menerbitkan respon ke output yang sesuai `/state` topik (sebagai contoh, `gpio/core-thing-name/gpio-number/state`).    
**Properti pesan**  
Nilai `0` atau `1`, sebagai integer atau string.  
**Contoh masukan**  

```
0
```

## Data output
<a name="raspberrypi-gpio-connector-data-output"></a>

Konektor ini menerbitkan data ke dua topik:
+ Perubahan tinggi atau rendah pada `gpio/+/+/state` topik.
+ Kesalahan pada topik `gpio/+/error` ini.

**Filter topik:** `gpio/+/+/state`  
Gunakan topik ini untuk mendengarkan perubahan status pada pin input dan respon untuk permintaan baca. Konektor mengembalikan string `"0"` jika pin dalam keadaan rendah, atau `"1"` jika dalam keadaan tinggi.  
Ketika menerbitkan topik ini, konektor menggantikan `+` wildcard dengan core nama sesuatu dan target pin, masing-masing. Sebagai contoh:  

```
gpio/core-thing-name/gpio-number/state
```
Ketika ini, ketika Anda membuat langganan yang menggunakan konektor Raspberry Pi GPIO, Anda harus menentukan nilai untuk setidaknya salah satu dari \$1 wildcard dalam topik.  
**Contoh keluaran**  

```
0
```

**Filter topik:** `gpio/+/error`  
Gunakan topik ini untuk mendengarkan kesalahan. Konektor menerbitkan topik ini sebagai hasil dari permintaan yang tidak valid (sebagai contoh, ketika perubahan keadaan diminta pada pin input).  
Ketika menerbitkan topik ini, konektor menggantikan `+` wildcard dengan core nama sesuatu.    
**Contoh keluaran**  

```
{
   "topic": "gpio/my-core-thing/22/write",
   "error": "Invalid GPIO operation",
   "long_description": "GPIO 22 is configured as an INPUT GPIO. Write operations are not permitted."
 }
```

## Contoh Penggunaan
<a name="raspberrypi-gpio-connector-usage"></a>

<a name="connectors-setup-intro"></a>Gunakan langkah-langkah tingkat tinggi berikut untuk mengatur contoh fungsi Lambda Python 3.7 yang dapat Anda gunakan untuk mencoba konektor.

**catatan**  <a name="connectors-setup-get-started-topics"></a>
Jika Anda menggunakan waktu aktif Python lainnya, Anda dapat membuat symlink dari Python3.x ke Python 3.7.
Topik [Memulai dengan konektor (konsol)](connectors-console.md) dan [Memulai dengan konektor (CLI)](connectors-cli.md) berisi langkah-langkah terperinci yang menunjukkan cara mengonfigurasi dan men-deploy contoh konektor Notifikasi Twilio.

1. Pastikan Anda memenuhi [persyaratan](#raspberrypi-gpio-connector-req) untuk konektor.

1. <a name="connectors-setup-function"></a>Buat dan terbitkan fungsi Lambda yang mengirimkan data input ke konektor.

   Simpan [kode contoh](#raspberrypi-gpio-connector-usage-example) sebagai file PY. <a name="connectors-setup-function-sdk"></a>Unduh dan unzip [AWS IoT Greengrass Core SDK for Python](lambda-functions.md#lambda-sdks-core). Kemudian, buat paket zip yang berisi file PY dan folder `greengrasssdk` dalam tingkat root. Paket zip ini adalah paket deployment yang Anda unggah ke AWS Lambda.

   <a name="connectors-setup-function-publish"></a>Setelah Anda membuat fungsi Lambda Python 3.7, terbitkankan versi fungsi dan buat alias.

1. Konfigurasikan grup Greengrass Anda.

   1. <a name="connectors-setup-gg-function"></a>Tambahkan fungsi Lambda dengan aliasnya (direkomendasikan). Konfigurasikan siklus hidup Lambda sebagai berumur panjang (atau `"Pinned": true` dalam CLI).

   1. <a name="connectors-setup-device-resource"></a>Tambahkan sumber daya perangkat lokal yang diperlukan dan berikan akses baca/tulis ke fungsi Lambda.

   1. Tambahkan konektor dan konfigurasikan [parameter](#raspberrypi-gpio-connector-param).

   1. Tambahkan langganan yang mengizinkan konektor untuk menerima [data input](#raspberrypi-gpio-connector-data-input) dan mengirim [data output](#raspberrypi-gpio-connector-data-output) pada filter topik yang didukung.
      + <a name="connectors-setup-subscription-input-data"></a>Atur fungsi Lambda sebagai sumber, konektor sebagai target, dan gunakan filter topik input yang mendukung.
      + <a name="connectors-setup-subscription-output-data"></a>Atur konektor sebagai sumber, AWS IoT Core sebagai target, dan gunakan filter topik input yang mendukung. Anda menggunakan langganan ini untuk melihat pesan status di AWS IoT konsol.

1. <a name="connectors-setup-deploy-group"></a>Men-deploy grup.

1. <a name="connectors-setup-test-sub"></a>Di AWS IoT konsol, pada halaman **Uji**, berlangganan topik data keluaran untuk melihat pesan status dari konektor. Contoh fungsi Lambda yang berumur panjang dan mulai mengirim pesan segera setelah grup dalam-deploy.

   Setelah selesai pengujian, Anda dapat mengatur siklus hidup Lambda ke sesuai permintaan (atau `"Pinned": false` dalam CLI) dan men-deploy grup. Ini menghentikan fungsi dari mengirim pesan.

### Contoh
<a name="raspberrypi-gpio-connector-usage-example"></a>

Contoh fungsi Lambda berikut mengirimkan pesan input ke konektor. Contoh ini mengirimkan permintaan membaca untuk satu set input pin GPIO. Ini menunjukkan cara membangun topik menggunakan core nama sesuatu dan nomor pin.

```
import greengrasssdk
import json
import os

iot_client = greengrasssdk.client('iot-data')
INPUT_GPIOS = [6, 17, 22]

thingName = os.environ['AWS_IOT_THING_NAME']

def get_read_topic(gpio_num):
    return '/'.join(['gpio', thingName, str(gpio_num), 'read'])

def get_write_topic(gpio_num):
    return '/'.join(['gpio', thingName, str(gpio_num), 'write'])

def send_message_to_connector(topic, message=''):
    iot_client.publish(topic=topic, payload=str(message))

def set_gpio_state(gpio, state):
    send_message_to_connector(get_write_topic(gpio), str(state))

def read_gpio_state(gpio):
    send_message_to_connector(get_read_topic(gpio))

def publish_basic_message():
    for i in INPUT_GPIOS:
    	read_gpio_state(i)

publish_basic_message()

def lambda_handler(event, context):
    return
```

## Lisensi
<a name="raspberrypi-gpio-connector-license"></a>

Raspberry Pi GPIO; konektor termasuk perangkat lunak/lisensi pihak ketiga berikut:
+ [RPi.GPIO](https://pypi.org/project/RPi.GPIO/) /MIT

Konektor ini dirilis di bawah [Perjanjian Lisensi Perangkat lunak core Greengrass](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Changelog
<a name="raspberrypi-gpio-connector-changelog"></a>

Tabel berikut menjelaskan perubahan dalam setiap versi konektor.


| Versi | Perubahan | 
| --- | --- | 
| 3 | <a name="upgrade-runtime-py3.7"></a>Memperbarui waktu aktif Lambda untuk Python 3.7, yang mengubah persyaratan waktu aktif. | 
| 2 | Konektor ARN yang diperbarui untuk Wilayah AWS dukungan. | 
| 1 | Pelepasan awal.  | 

<a name="one-conn-version"></a>Sebuah grup Greengrass dapat berisi hanya satu versi konektor pada suatu waktu. Untuk informasi lebih lanjut tentang pembaruan versi konektor, lihat [Versi upgrade konektor](connectors.md#upgrade-connector-versions).

## Lihat juga
<a name="raspberrypi-gpio-connector-see-also"></a>
+ [Integrasikan dengan layanan dan protokol menggunakan konektor Greengrass](connectors.md)
+ [Memulai dengan konektor Greengrass (konsol)](connectors-console.md)
+ [Memulai dengan konektor Greengrass (CLI)](connectors-cli.md)
+ [GPIO](https://www.raspberrypi.org/documentation/usage/gpio/) dalam dokumentasi Raspberry Pi

# Konektor Aliran Serial
<a name="serial-stream-connector"></a>

**Awas**  <a name="connectors-extended-life-phase-warning"></a>
Konektor ini telah pindah ke *fase umur yang diperpanjang*, dan AWS IoT Greengrass tidak akan merilis pembaruan yang menyediakan fitur, penyempurnaan pada fitur yang ada, patch keamanan, atau perbaikan bug. Untuk informasi selengkapnya, lihat [AWS IoT Greengrass Version 1 kebijakan pemeliharaan](maintenance-policy.md).

[Konektor](connectors.md) Serial Stream membaca dan menulis ke port serial pada perangkat AWS IoT Greengrass inti.

Konektor ini mendukung dua mode operasi:
+ **Read-On-Demand**. Menerima membaca dan menulis permintaan pada topik MQTT dan menerbitkan respon dari operasi membaca atau status operasi menulis.
+ **Polling-Read**. Membaca dari port serial secara berkala. Mode ini juga mendukung Read-On-Demand permintaan.

**catatan**  
Membaca permintaan terbatas untuk maksimum membaca panjang 63994 byte. Menulis permintaan terbatas untuk panjang data maksimum 128000 byte.

Konektor ini memiliki versi berikut.


| Versi | ARN | 
| --- | --- | 
| 3 | `arn:aws:greengrass:region::/connectors/SerialStream/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/SerialStream/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/SerialStream/versions/1` | 

Untuk informasi tentang perubahan versi, lihat [Changelog](#serial-stream-connector-changelog).

## Persyaratan
<a name="serial-stream-connector-req"></a>

Konektor ini memiliki persyaratan sebagai berikut:

------
#### [ Version 3 ]
+ <a name="conn-req-ggc-v1.9.3"></a>AWS IoT Greengrass Perangkat lunak inti v1.9.3 atau yang lebih baru.
+ <a name="conn-req-py-3.7-and-3.8"></a>[Python](https://www.python.org/) versi 3.7 atau 3.8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
**catatan**  <a name="use-runtime-py3.8"></a>
Untuk menggunakan Python 3.8, jalankan perintah berikut untuk membuat link simbolik dari folder instalasi default Python 3.7 ke binari Python 3.8 yang diinstal.  

  ```
  sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7
  ```
Ini mengonfigurasi perangkat Anda untuk memenuhi persyaratan Python untuk AWS IoT Greengrass.
+ <a name="conn-serial-stream-req-serial-port-resource"></a>Sebuah [sumber daya perangkat lokal](access-local-resources.md) dalam grup Greengrass yang menunjuk ke port serial target.
**catatan**  
Sebelum Anda men-deploy konektor ini, kami rekomendasikan agar Anda mengatur port serial dan memverifikasi bahwa Anda dapat membaca dan menulis untuk itu. 

------
#### [ Versions 1 - 2 ]
+ <a name="conn-req-ggc-v1.7.0"></a>AWS IoT Greengrass Perangkat lunak inti v1.7 atau yang lebih baru.
+ [Python](https://www.python.org/) versi 2.7 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
+ <a name="conn-serial-stream-req-serial-port-resource"></a>Sebuah [sumber daya perangkat lokal](access-local-resources.md) dalam grup Greengrass yang menunjuk ke port serial target.
**catatan**  
Sebelum Anda men-deploy konektor ini, kami rekomendasikan agar Anda mengatur port serial dan memverifikasi bahwa Anda dapat membaca dan menulis untuk itu. 

------

## Parameter Konektor
<a name="serial-stream-connector-param"></a>

Konektor ini menyediakan parameter berikut:

`BaudRate`  
Tingkat baud dari koneksi serial.  
Nama tampilan di AWS IoT konsol: **Baud rate**  
Wajib: `true`  
Jenis: `string`  
Nilai yang valid: `110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 56000, 57600, 115200, 230400`  
Pola yang valid: `^110$|^300$|^600$|^1200$|^2400$|^4800$|^9600$|^14400$|^19200$|^28800$|^38400$|^56000$|^57600$|^115200$|^230400$`

`Timeout`  
Timeout (dalam detik) untuk operasi membaca.  
Nama tampilan di AWS IoT konsol: **Timeout**  
Wajib: `true`  
Jenis: `string`  
Nilai yang valid: `1 - 59`  
Pola yang valid: `^([1-9]|[1-5][0-9])$`

`SerialPort`  
Jalur absolut ke port serial fisik pada perangkat. Ini adalah jalur sumber yang ditentukan untuk sumber daya perangkat lokal.  
Nama tampilan di AWS IoT konsol: **Port serial**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `[/a-zA-Z0-9_-]+`

`SerialPort-ResourceId`  
ID sumber daya perangkat lokal yang mewakili port serial fisik.  
Konektor ini diberikan akses baca-tulis ke sumber daya.
Nama tampilan di AWS IoT konsol: **Sumber daya port serial**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `[a-zA-Z0-9_-]+`

`PollingRead`  
Mengatur mode baca: Polling-Read atau. Read-On-Demand  
+ Untuk mode Polling-Read, tentukan `true`. Di mode ini, properti `PollingInterval`, `PollingReadType`, dan `PollingReadLength` diperlukan.
+ Untuk Read-On-Demand mode, tentukan`false`. Di mode ini, nilai jenis dan panjang ditentukan dalam permintaan baca.
Nama tampilan di AWS IoT konsol: **Mode Baca**  
Wajib: `true`  
Jenis: `string`  
Nilai yang valid: `true, false`  
Pola yang valid: `^([Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$`

`PollingReadLength`  
Panjang data (dalam byte) untuk membaca dalam setiap operasi polling membaca. Ini hanya berlaku ketika menggunakan mode Polling-Read.  
Nama tampilan di AWS IoT konsol: Panjang **baca polling**  
Diperlukan:`false`. Properti ini diperlukan ketika `PollingRead` adalah `true`.  
Tipe: `string`  
Pola yang valid: `^(|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-2][0-9]{3}|63[0-8][0-9]{2}|639[0-8][0-9]|6399[0-4])$`

`PollingReadInterval`  
Interval (dalam detik) dalam mana polling baca berlangsung. Ini hanya berlaku ketika menggunakan mode Polling-Read.  
Nama tampilan di AWS IoT konsol: Interval **baca polling**  
Diperlukan:`false`. Properti ini diperlukan ketika `PollingRead` adalah `true`.  
Tipe: `string`  
Nilai yang valid: 1 - 999  
Pola yang valid: `^(|[1-9]|[1-9][0-9]|[1-9][0-9][0-9])$`

`PollingReadType`  
Jenis data yang thread polling membaca. Ini hanya berlaku ketika menggunakan mode Polling-Read.  
Nama tampilan di AWS IoT konsol: Jenis **baca polling**  
Diperlukan:`false`. Properti ini diperlukan ketika `PollingRead` adalah `true`.  
Tipe: `string`  
Nilai yang valid: `ascii, hex`  
Pola yang valid: `^(|[Aa][Ss][Cc][Ii][Ii]|[Hh][Ee][Xx])$`

`RtsCts`  
Mengindikasikan apakah akan mengaktifkan kontrol aliran RTS/CTS. Nilai default-nya adalah `false`. Untuk informasi lebih lanjut, lihat [RTS, CTS, dan RTR](https://en.wikipedia.org/wiki/RS-232#RTS,_CTS,_and_RTR).   
Nama tampilan di AWS IoT konsol: Kontrol aliran **RTS/CTS**  
Wajib: `false`  
Jenis: `string`  
Nilai yang valid: `true, false`  
Pola yang valid: `^(|[Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$`

`XonXoff`  
Mengindikasikan apakah akan mengaktifkan kontrol aliran perangkat lunak. Nilai default-nya adalah `false`. Untuk informasi lebih lanjut, lihat [Kontrol aliran perangkat lunak](https://en.wikipedia.org/wiki/Software_flow_control).  
Nama tampilan di AWS IoT konsol: **Kontrol aliran perangkat lunak**  
Wajib: `false`  
Jenis: `string`  
Nilai yang valid: `true, false`  
Pola yang valid: `^(|[Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$`

`Parity`  
Paritas dari port serial. Nilai default-nya adalah `N`. Untuk informasi lebih lanjut, lihat [Paritas](https://en.wikipedia.org/wiki/Serial_port#Parity).   
Nama tampilan di AWS IoT konsol: **Paritas port serial**  
Wajib: `false`  
Jenis: `string`  
Nilai yang valid: `N, E, O, S, M`  
Pola yang valid: `^(|[NEOSMneosm])$`

### Buat Contoh Konektor (AWS CLI)
<a name="serial-stream-connector-create"></a>

Perintah CLI berikut membuat `ConnectorDefinition` dengan versi awal yang berisi konektor Aliran Serial. Ini mengonfigurasi konektor untuk mode Polling-Read.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MySerialStreamConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/SerialStream/versions/3",
            "Parameters": {
                "BaudRate" : "9600",
                "Timeout" : "25",
                "SerialPort" : "/dev/serial1",
                "SerialPort-ResourceId" : "my-serial-port-resource",
                "PollingRead" : "true",
                "PollingReadLength" : "30",
                "PollingReadInterval" : "30",
                "PollingReadType" : "hex"
            }
        }
    ]
}'
```

Di AWS IoT Greengrass konsol, Anda dapat menambahkan konektor dari halaman **Konektor** grup. Untuk informasi selengkapnya, lihat [Memulai dengan konektor Greengrass (konsol)](connectors-console.md).

## Data input
<a name="serial-stream-connector-data-input"></a>

Konektor ini menerima membaca atau menulis permintaan untuk port serial pada dua topik MQTT. Pesan input harus dalam format JSON.
+ Baca permintaan pada topik `serial/+/read/#` ini.
+ Menulis permintaan pada `serial/+/write/#` topik.

Untuk menerbitkan topik ini, ganti `+` wildcard dengan core nama sesuatu dan `#` wildcard dengan jalan ke port serial. Sebagai contoh:

```
serial/core-thing-name/read/dev/serial-port
```

**Filter topik:** `serial/+/read/#`  
Gunakan topik ini untuk mengirim permintaan baca sesuai permintaan ke pin serial. Membaca permintaan terbatas untuk maksimum membaca panjang 63994 byte.    
**Properti pesan**    
`readLength`  
Panjang data untuk dibaca dari port serial.  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^[1-9][0-9]*$`  
`type`  
Jenis data untuk dibaca.  
Wajib: `true`  
Jenis: `string`  
Nilai yang valid: `ascii, hex`  
Pola yang valid: `(?i)^(ascii|hex)$`  
`id`  
ID arbitrer untuk permintaan. Properti ini digunakan untuk memetakan permintaan input untuk respons output.  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `.+`  
**Contoh masukan**  

```
{
    "readLength": "30",
    "type": "ascii",
    "id": "abc123"
}
```

**Filter topik:** `serial/+/write/#`  
Gunakan topik ini untuk mengirim permintaan tulis ke pin serial. Menulis permintaan terbatas untuk panjang data maksimum 128000 byte.    
**Properti pesan**    
`data`  
String untuk menulis ke port serial.  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^[1-9][0-9]*$`  
`type`  
Jenis data untuk dibaca.  
Wajib: `true`  
Jenis: `string`  
Nilai yang valid: `ascii, hex`  
Pola yang valid: `^(ascii|hex|ASCII|HEX)$`  
`id`  
ID arbitrer untuk permintaan. Properti ini digunakan untuk memetakan permintaan input untuk respons output.  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `.+`  
**Contoh masukan: permintaan ASCII**  

```
{
    "data": "random serial data",
    "type": "ascii",
    "id": "abc123"
}
```  
**Contoh masukan: permintaan hex**  

```
{
    "data": "base64 encoded data",
    "type": "hex",
    "id": "abc123"
}
```

## Data output
<a name="serial-stream-connector-data-output"></a>

Konektor menerbitkan data output pada dua topik:
+ Informasi status dari konektor pada `serial/+/status/#` topik.
+ Respon dari permintaan baca pada `serial/+/read_response/#` topik.

Ketika menerbitkan topik ini, konektor menggantikan `+` wildcard dengan core nama sesuatu dan `#` wildcard dengan jalur ke port serial. Sebagai contoh:

```
serial/core-thing-name/status/dev/serial-port
```

**Filter topik:** `serial/+/status/#`  
Gunakan topik ini untuk mendengarkan status permintaan baca dan tulis. Jika sebuah `id` properti termasuk permintaan, itu dikembalikan dalam respon.    
**Contoh keluaran: Sukses**  

```
{
    "response": {
        "status": "success"
    },
    "id": "abc123"
}
```  
**Contoh keluaran: Kegagalan**  
Sebuah respon kegagalan mencakup sebuah `error_message` properti yang menjelaskan kesalahan atau timeout ditemui ketika melakukan operasi membaca atau menulis.  

```
{
    "response": {
        "status": "fail",
        "error_message": "Could not write to port"
    },
    "id": "abc123"
}
```

**Filter topik:** `serial/+/read_response/#`  
Gunakan topik ini untuk menerima data respon dari operasi baca. Data respon Base64 dikodekan jika jenis `hex`.    
**Contoh keluaran**  

```
{
    "data": "output of serial read operation"
    "id": "abc123"
}
```

## Contoh Penggunaan
<a name="serial-stream-connector-usage"></a>

<a name="connectors-setup-intro"></a>Gunakan langkah-langkah tingkat tinggi berikut untuk mengatur contoh fungsi Lambda Python 3.7 yang dapat Anda gunakan untuk mencoba konektor.

**catatan**  <a name="connectors-setup-get-started-topics"></a>
Jika Anda menggunakan waktu aktif Python lainnya, Anda dapat membuat symlink dari Python3.x ke Python 3.7.
Topik [Memulai dengan konektor (konsol)](connectors-console.md) dan [Memulai dengan konektor (CLI)](connectors-cli.md) berisi langkah-langkah terperinci yang menunjukkan cara mengonfigurasi dan men-deploy contoh konektor Notifikasi Twilio.

1. Pastikan Anda memenuhi [persyaratan](#serial-stream-connector-req) untuk konektor.

1. <a name="connectors-setup-function"></a>Buat dan terbitkan fungsi Lambda yang mengirimkan data input ke konektor.

   Simpan [kode contoh](#serial-stream-connector-usage-example) sebagai file PY. <a name="connectors-setup-function-sdk"></a>Unduh dan unzip [AWS IoT Greengrass Core SDK for Python](lambda-functions.md#lambda-sdks-core). Kemudian, buat paket zip yang berisi file PY dan folder `greengrasssdk` dalam tingkat root. Paket zip ini adalah paket deployment yang Anda unggah ke AWS Lambda.

   <a name="connectors-setup-function-publish"></a>Setelah Anda membuat fungsi Lambda Python 3.7, terbitkankan versi fungsi dan buat alias.

1. Konfigurasikan grup Greengrass Anda.

   1. <a name="connectors-setup-gg-function"></a>Tambahkan fungsi Lambda dengan aliasnya (direkomendasikan). Konfigurasikan siklus hidup Lambda sebagai berumur panjang (atau `"Pinned": true` dalam CLI).

   1. <a name="connectors-setup-device-resource"></a>Tambahkan sumber daya perangkat lokal yang diperlukan dan berikan akses baca/tulis ke fungsi Lambda.

   1. Tambahkan konektor ke grup Anda dan konfigurasikan [parameter](#serial-stream-connector-param).

   1. Tambahkan langganan ke grup yang memungkinkan konektor untuk menerima [data input](#serial-stream-connector-data-input) dan kirim [data output](#serial-stream-connector-data-output) pada filter topik yang didukung.
      + <a name="connectors-setup-subscription-input-data"></a>Atur fungsi Lambda sebagai sumber, konektor sebagai target, dan gunakan filter topik input yang mendukung.
      + <a name="connectors-setup-subscription-output-data"></a>Atur konektor sebagai sumber, AWS IoT Core sebagai target, dan gunakan filter topik input yang mendukung. Anda menggunakan langganan ini untuk melihat pesan status di AWS IoT konsol.

1. <a name="connectors-setup-deploy-group"></a>Men-deploy grup.

1. <a name="connectors-setup-test-sub"></a>Di AWS IoT konsol, pada halaman **Uji**, berlangganan topik data keluaran untuk melihat pesan status dari konektor. Contoh fungsi Lambda yang berumur panjang dan mulai mengirim pesan segera setelah grup dalam-deploy.

   Setelah selesai pengujian, Anda dapat mengatur siklus hidup Lambda ke sesuai permintaan (atau `"Pinned": false` dalam CLI) dan men-deploy grup. Ini menghentikan fungsi dari mengirim pesan.

### Contoh
<a name="serial-stream-connector-usage-example"></a>

Contoh fungsi Lambda berikut mengirimkan pesan input ke konektor.

```
import greengrasssdk
import json

TOPIC_REQUEST = 'serial/CORE_THING_NAME/write/dev/serial1'

# Creating a greengrass core sdk client
iot_client = greengrasssdk.client('iot-data')

def create_serial_stream_request():
	request = {
		"data": "TEST",
		"type": "ascii",
		"id": "abc123"
	}
	return request

def publish_basic_request():
	iot_client.publish(payload=json.dumps(create_serial_stream_request()), topic=TOPIC_REQUEST)

publish_basic_request()

def lambda_handler(event, context):
	return
```

## Lisensi
<a name="serial-stream-connector-license"></a>

Konektor Aliran Serial mencakup perangkat lunak/lisensi pihak ketiga berikut ini:
+ [pyserial](https://github.com/pyserial/pyserial)/BSD

Konektor ini dirilis di bawah [Perjanjian Lisensi Perangkat lunak core Greengrass](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Changelog
<a name="serial-stream-connector-changelog"></a>

Tabel berikut menjelaskan perubahan dalam setiap versi konektor.


| Versi | Perubahan | 
| --- | --- | 
| 3 | <a name="upgrade-runtime-py3.7"></a>Memperbarui waktu aktif Lambda untuk Python 3.7, yang mengubah persyaratan waktu aktif. | 
| 2 | Konektor ARN yang diperbarui untuk Wilayah AWS dukungan. | 
| 1 | Pelepasan awal.  | 

<a name="one-conn-version"></a>Sebuah grup Greengrass dapat berisi hanya satu versi konektor pada suatu waktu. Untuk informasi lebih lanjut tentang pembaruan versi konektor, lihat [Versi upgrade konektor](connectors.md#upgrade-connector-versions).

## Lihat juga
<a name="serial-stream-connector-see-also"></a>
+ [Integrasikan dengan layanan dan protokol menggunakan konektor Greengrass](connectors.md)
+ [Memulai dengan konektor Greengrass (konsol)](connectors-console.md)
+ [Memulai dengan konektor Greengrass (CLI)](connectors-cli.md)

# ServiceNow MetricBase Konektor integrasi
<a name="servicenow-connector"></a>

**Awas**  <a name="connectors-extended-life-phase-warning"></a>
Konektor ini telah pindah ke *fase umur yang diperpanjang*, dan AWS IoT Greengrass tidak akan merilis pembaruan yang menyediakan fitur, penyempurnaan pada fitur yang ada, patch keamanan, atau perbaikan bug. Untuk informasi selengkapnya, lihat [AWS IoT Greengrass Version 1 kebijakan pemeliharaan](maintenance-policy.md).

[Konektor ServiceNow MetricBase ](connectors.md) Integrasi menerbitkan metrik deret waktu dari perangkat Greengrass ke. ServiceNow MetricBase Hal ini memungkinkan Anda untuk menyimpan, menganalisis, dan memvisualisasikan data time series dari lingkungan core Greengrass, dan bertindak pada peristiwa lokal.

Konektor ini menerima data deret waktu pada topik MQTT, dan menerbitkan data ke ServiceNow API secara berkala.

Anda dapat menggunakan konektor ini untuk mendukung skenario seperti:
+ Buat peringatan dan alarm berbasis ambang batas berdasarkan data time series yang dikumpulkan dari perangkat Greengrass.
+ Gunakan data layanan waktu dari perangkat Greengrass dengan aplikasi khusus yang dibangun di platform. ServiceNow 

Konektor ini memiliki versi berikut.


| Versi | ARN | 
| --- | --- | 
| 4 | `arn:aws:greengrass:region::/connectors/ServiceNowMetricBaseIntegration/versions/4` | 
| 3 | `arn:aws:greengrass:region::/connectors/ServiceNowMetricBaseIntegration/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/ServiceNowMetricBaseIntegration/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/ServiceNowMetricBaseIntegration/versions/1` | 

Untuk informasi tentang perubahan versi, lihat [Changelog](#servicenow-connector-changelog).

## Persyaratan
<a name="servicenow-connector-req"></a>

Konektor ini memiliki persyaratan sebagai berikut:

------
#### [ Version 3 - 4 ]
+ <a name="conn-req-ggc-v1.9.3-secrets"></a>AWS IoT Greengrass Perangkat lunak inti v1.9.3 atau yang lebih baru. AWS IoT Greengrass harus dikonfigurasi untuk mendukung rahasia lokal, seperti yang dijelaskan dalam [Persyaratan Rahasia](secrets.md#secrets-reqs).
**catatan**  
Persyaratan ini mencakup akses ke rahasia Secrets Manager Anda. Jika Anda menggunakan peran layanan default Greengrass, Greengrass memiliki izin untuk mendapatkan nilai-nilai rahasia dengan nama yang dimulai dengan *greengrass-*.
+ <a name="conn-req-py-3.7-and-3.8"></a>[Python](https://www.python.org/) versi 3.7 atau 3.8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
**catatan**  <a name="use-runtime-py3.8"></a>
Untuk menggunakan Python 3.8, jalankan perintah berikut untuk membuat link simbolik dari folder instalasi default Python 3.7 ke binari Python 3.8 yang diinstal.  

  ```
  sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7
  ```
Ini mengonfigurasi perangkat Anda untuk memenuhi persyaratan Python untuk AWS IoT Greengrass.
+ <a name="conn-servicenow-req-servicenow-account"></a> ServiceNow Akun dengan langganan yang diaktifkan ke MetricBase. Sebagai tambahan, metrik dan tabel metrik harus dibuat dalam akun. Untuk informasi lebih lanjut, lihat [MetricBase](https://docs.servicenow.com/bundle/london-servicenow-platform/page/administer/metricbase/concept/metricbase.html)di ServiceNow dokumentasi.
+ <a name="conn-servicenow-req-secret"></a>Rahasia tipe teks AWS Secrets Manager yang menyimpan nama pengguna dan kata sandi untuk masuk ke ServiceNow instance Anda dengan otentikasi dasar. Rahasianya harus berisi tombol "pengguna” dan "kata sandi” dengan nilai yang sesuai. Untuk informasi lebih lanjut, lihat [Membuat rahasia dasar](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html) dalam *AWS Secrets Manager Panduan Pengguna*.
+ Sebuah sumber daya rahasia dalam grup Greengrass yang mereferensikan rahasia Secrets Manager. Untuk informasi selengkapnya, lihat [Menyebarkan rahasia ke inti AWS IoT Greengrass](secrets.md).

------
#### [ Versions 1 - 2 ]
+ <a name="conn-req-ggc-v1.7.0-secrets"></a>AWS IoT Greengrass Perangkat lunak inti v1.7 atau yang lebih baru. AWS IoT Greengrass harus dikonfigurasi untuk mendukung rahasia lokal, seperti yang dijelaskan dalam [Persyaratan Rahasia](secrets.md#secrets-reqs).
**catatan**  
Persyaratan ini mencakup akses ke rahasia Secrets Manager Anda. Jika Anda menggunakan peran layanan default Greengrass, Greengrass memiliki izin untuk mendapatkan nilai-nilai rahasia dengan nama yang dimulai dengan *greengrass-*.
+ [Python](https://www.python.org/) versi 2.7 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
+ <a name="conn-servicenow-req-servicenow-account"></a> ServiceNow Akun dengan langganan yang diaktifkan ke MetricBase. Sebagai tambahan, metrik dan tabel metrik harus dibuat dalam akun. Untuk informasi lebih lanjut, lihat [MetricBase](https://docs.servicenow.com/bundle/london-servicenow-platform/page/administer/metricbase/concept/metricbase.html)di ServiceNow dokumentasi.
+ <a name="conn-servicenow-req-secret"></a>Rahasia tipe teks AWS Secrets Manager yang menyimpan nama pengguna dan kata sandi untuk masuk ke ServiceNow instance Anda dengan otentikasi dasar. Rahasianya harus berisi tombol "pengguna” dan "kata sandi” dengan nilai yang sesuai. Untuk informasi lebih lanjut, lihat [Membuat rahasia dasar](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html) dalam *AWS Secrets Manager Panduan Pengguna*.
+ Sebuah sumber daya rahasia dalam grup Greengrass yang mereferensikan rahasia Secrets Manager. Untuk informasi selengkapnya, lihat [Menyebarkan rahasia ke inti AWS IoT Greengrass](secrets.md).

------

## Parameter Konektor
<a name="servicenow-connector-param"></a>

Konektor ini menyediakan parameter berikut:

------
#### [ Version 4 ]

`PublishInterval`  <a name="service-now-PublishInterval"></a>
Jumlah maksimum detik untuk menunggu antara mempublikasikan acara ke ServiceNow. Nilai maksimumnya adalah 900.  
Konektor mempublikasikan ServiceNow kapan `PublishBatchSize` tercapai atau `PublishInterval` kedaluwarsa.  
Nama tampilan di AWS IoT konsol: **Publikasikan interval dalam hitungan detik**  
Wajib: `true`  
Jenis: `string`  
Nilai yang valid: `1 - 900`  
Pola yang valid: `[1-9]|[1-9]\d|[1-9]\d\d|900`

`PublishBatchSize`  <a name="service-now-PublishBatchSize"></a>
Jumlah maksimum nilai metrik yang dapat dikelompokkan sebelum dipublikasikan ke ServiceNow.  
Konektor mempublikasikan ServiceNow kapan `PublishBatchSize` tercapai atau `PublishInterval` kedaluwarsa.  
Nama tampilan di AWS IoT konsol: **Publikasikan ukuran batch**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^[0-9]+$`

`InstanceName`  <a name="service-now-InstanceName"></a>
Nama instance yang digunakan untuk terhubung ke ServiceNow.  
Nama tampilan di AWS IoT konsol: **Nama ServiceNow contoh**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `.+`

`DefaultTableName`  <a name="service-now-DefaultTableName"></a>
Nama tabel yang berisi `GlideRecord` terkait dengan MetricBase database deret waktu. Properti `table` dalam muatan pesan input dapat digunakan untuk menimpa nilai ini.  
Nama tampilan di AWS IoT konsol: **Nama tabel yang berisi metrik**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `.+`

`MaxMetricsToRetain`  <a name="service-now-MaxMetricsToRetain"></a>
Jumlah maksimum metrik untuk dipertahankan dalam memori sebelum diganti dengan metrik baru.  
Batas ini berlaku bila tidak ada koneksi ke internet dan konektor mulai buffer metrik untuk diterbitkan nanti. Ketika buffer penuh, metrik terlama digantikan oleh metrik baru.  
Metrik tidak dipertahankan jika proses host untuk konektor terganggu. Sebagai contoh, hal ini dapat terjadi selama deployment grup atau ketika perangkat restart.
Nilai ini harus lebih besar daripada ukuran batch dan cukup besar untuk menyimpan pesan berdasarkan tingkat masuk pesan MQTT.  
Nama tampilan di AWS IoT konsol: **Metrik maksimum untuk disimpan dalam memori**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^[0-9]+$`

`AuthSecretArn`  <a name="service-now-AuthSecretArn"></a>
 AWS Secrets Manager Rahasianya menyimpan nama ServiceNow pengguna dan kata sandi. Ini harus berupa rahasia jenis teks. Rahasianya harus berisi tombol "pengguna” dan "kata sandi” dengan nilai yang sesuai.  
Nama tampilan di AWS IoT konsol: **ARN rahasia autentikasi**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `arn:aws:secretsmanager:[a-z0-9\-]+:[0-9]{12}:secret:([a-zA-Z0-9\\]+/)*[a-zA-Z0-9/_+=,.@\-]+-[a-zA-Z0-9]+`

`AuthSecretArn-ResourceId`  <a name="service-now-AuthSecretArn-ResourceId"></a>
Sumber daya rahasia dalam grup yang mereferensikan rahasia Secrets Manager untuk ServiceNow kredensialnya.  
Nama tampilan di AWS IoT konsol: Sumber daya **token autentikasi**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `.+`

`IsolationMode`  <a name="IsolationMode"></a>
Mode [kontainerisasi](connectors.md#connector-containerization) untuk konektor ini. Defaultnya adalah`GreengrassContainer`, yang berarti konektor berjalan di lingkungan runtime yang terisolasi di dalam AWS IoT Greengrass container.  
Pengaturan kontainerisasi default untuk grup tidak berlaku untuk konektor.
Nama tampilan di AWS IoT konsol: **Mode isolasi wadah**  
Wajib: `false`  
Jenis: `string`  
Nilai yang valid: `GreengrassContainer` or `NoContainer`  
Pola yang valid: `^NoContainer$|^GreengrassContainer$`

------
#### [ Version 1 - 3 ]

`PublishInterval`  <a name="service-now-PublishInterval"></a>
Jumlah maksimum detik untuk menunggu antara mempublikasikan acara ke ServiceNow. Nilai maksimumnya adalah 900.  
Konektor mempublikasikan ServiceNow kapan `PublishBatchSize` tercapai atau `PublishInterval` kedaluwarsa.  
Nama tampilan di AWS IoT konsol: **Publikasikan interval dalam hitungan detik**  
Wajib: `true`  
Jenis: `string`  
Nilai yang valid: `1 - 900`  
Pola yang valid: `[1-9]|[1-9]\d|[1-9]\d\d|900`

`PublishBatchSize`  <a name="service-now-PublishBatchSize"></a>
Jumlah maksimum nilai metrik yang dapat dikelompokkan sebelum dipublikasikan ke ServiceNow.  
Konektor mempublikasikan ServiceNow kapan `PublishBatchSize` tercapai atau `PublishInterval` kedaluwarsa.  
Nama tampilan di AWS IoT konsol: **Publikasikan ukuran batch**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^[0-9]+$`

`InstanceName`  <a name="service-now-InstanceName"></a>
Nama instance yang digunakan untuk terhubung ke ServiceNow.  
Nama tampilan di AWS IoT konsol: **Nama ServiceNow contoh**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `.+`

`DefaultTableName`  <a name="service-now-DefaultTableName"></a>
Nama tabel yang berisi `GlideRecord` terkait dengan MetricBase database deret waktu. Properti `table` dalam muatan pesan input dapat digunakan untuk menimpa nilai ini.  
Nama tampilan di AWS IoT konsol: **Nama tabel yang berisi metrik**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `.+`

`MaxMetricsToRetain`  <a name="service-now-MaxMetricsToRetain"></a>
Jumlah maksimum metrik untuk dipertahankan dalam memori sebelum diganti dengan metrik baru.  
Batas ini berlaku bila tidak ada koneksi ke internet dan konektor mulai buffer metrik untuk diterbitkan nanti. Ketika buffer penuh, metrik terlama digantikan oleh metrik baru.  
Metrik tidak dipertahankan jika proses host untuk konektor terganggu. Sebagai contoh, hal ini dapat terjadi selama deployment grup atau ketika perangkat restart.
Nilai ini harus lebih besar daripada ukuran batch dan cukup besar untuk menyimpan pesan berdasarkan tingkat masuk pesan MQTT.  
Nama tampilan di AWS IoT konsol: **Metrik maksimum untuk disimpan dalam memori**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^[0-9]+$`

`AuthSecretArn`  <a name="service-now-AuthSecretArn"></a>
 AWS Secrets Manager Rahasianya menyimpan nama ServiceNow pengguna dan kata sandi. Ini harus berupa rahasia jenis teks. Rahasianya harus berisi tombol "pengguna” dan "kata sandi” dengan nilai yang sesuai.  
Nama tampilan di AWS IoT konsol: **ARN rahasia autentikasi**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `arn:aws:secretsmanager:[a-z0-9\-]+:[0-9]{12}:secret:([a-zA-Z0-9\\]+/)*[a-zA-Z0-9/_+=,.@\-]+-[a-zA-Z0-9]+`

`AuthSecretArn-ResourceId`  <a name="service-now-AuthSecretArn-ResourceId"></a>
Sumber daya rahasia dalam grup yang mereferensikan rahasia Secrets Manager untuk ServiceNow kredensialnya.  
Nama tampilan di AWS IoT konsol: Sumber daya **token autentikasi**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `.+`

------

### Buat Contoh Konektor (AWS CLI)
<a name="servicenow-connector-create"></a>

Perintah CLI berikut membuat `ConnectorDefinition` dengan versi awal yang berisi konektor ServiceNow MetricBase Integrasi.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyServiceNowMetricBaseIntegrationConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/ServiceNowMetricBaseIntegration/versions/4",
            "Parameters": {
                "PublishInterval" : "10",
                "PublishBatchSize" : "50",
                "InstanceName" : "myinstance",
                "DefaultTableName" : "u_greengrass_app",
                "MaxMetricsToRetain" : "20000",
                "AuthSecretArn" : "arn:aws:secretsmanager:region:account-id:secret:greengrass-secret-hash",
                "AuthSecretArn-ResourceId" : "MySecretResource", 
                "IsolationMode" : "GreengrassContainer"
            }
        }
    ]
}'
```

**catatan**  
Fungsi Lambda dalam konektor mempunyai siklus hidup yang [berumur panjang](lambda-functions.md#lambda-lifecycle) ini.

Di AWS IoT Greengrass konsol, Anda dapat menambahkan konektor dari halaman **Konektor** grup. Untuk informasi selengkapnya, lihat [Memulai dengan konektor Greengrass (konsol)](connectors-console.md).

## Data input
<a name="servicenow-connector-data-input"></a>

Konektor ini menerima metrik deret waktu pada topik MQTT dan menerbitkan metrik ke. ServiceNow Pesan input harus dalam format JSON.

<a name="topic-filter"></a>**Filter topik dalam langganan**  
`servicenow/metricbase/metric`

**Properti pesan**    
`request`  
Informasi tentang tabel, catatan, dan metrik. Permintaan ini mewakili `seriesRef` objek dalam permintaan time series POST. Untuk informasi lebih lanjut, lihat [ API Deret Waktu Clotho - POST](https://docs.servicenow.com/bundle/london-application-development/page/integrate/inbound-rest/concept/Clotho-Time-Series-API.html#clotho-POST-put).  
  
Wajib: `true`  
Jenis: `object` yang mencakup properti berikut:    
`subject`  
Ini `sys_id` adalah catatan khusus dalam tabel.  
Wajib: `true`  
Jenis: `string`  
`metric_name`  
Nama bidang metrik.  
Wajib: `true`  
Jenis: `string`  
`table`  
Nama tabel untuk menyimpan catatan dalam. Tentukan nilai ini untuk menimpa `DefaultTableName` parameter.  
Wajib: `false`  
Jenis: `string`  
`value`  
Nilai data poin individu.  
Wajib: `true`  
Jenis: `float`  
`timestamp`  
Timestamp dari data poin individu. Nilai default adalah waktu ketika ini.  
Wajib: `false`  
Jenis: `string`

**Contoh masukan**  

```
{
    "request": {
        "subject":"ef43c6d40a0a0b5700c77f9bf387afe3",
        "metric_name":"u_count",
        "table": "u_greengrass_app"
        "value": 1.0,
        "timestamp": "2018-10-14T10:30:00"
    }
}
```

## Data output
<a name="servicenow-connector-data-output"></a>

Konektor ini menerbitkan informasi status sebagai data output pada topik MQTT.

<a name="topic-filter"></a>**Filter topik dalam langganan**  
`servicenow/metricbase/metric/status`

**Contoh keluaran: Sukses**  

```
{
    "response": {
        "metric_name": "Errors",
        "table_name": "GliderProd",
        "processed_on": "2018-10-14T10:35:00",
        "response_id": "khjKSkj132qwr23fcba",
        "status": "success",
        "values": [
            {
                "timestamp": "2016-10-14T10:30:00",
                "value": 1.0
            },
            {
                "timestamp": "2016-10-14T10:31:00",
                "value": 1.1
            }
        ]
    }
}
```

**Contoh keluaran: Kegagalan**  

```
{
    "response": {
        "error": "InvalidInputException",
        "error_message": "metric value is invalid",
        "status": "fail"
    }
}
```
Jika konektor mendeteksi kesalahan yang dapat diulang (sebagai contoh, kesalahan koneksi), konektor mengulang lagi publikasinya dalam batch berikutnya.

## Contoh Penggunaan
<a name="servicenow-connector-usage"></a>

<a name="connectors-setup-intro"></a>Gunakan langkah-langkah tingkat tinggi berikut untuk mengatur contoh fungsi Lambda Python 3.7 yang dapat Anda gunakan untuk mencoba konektor.

**catatan**  <a name="connectors-setup-get-started-topics"></a>
Jika Anda menggunakan waktu aktif Python lainnya, Anda dapat membuat symlink dari Python3.x ke Python 3.7.
Topik [Memulai dengan konektor (konsol)](connectors-console.md) dan [Memulai dengan konektor (CLI)](connectors-cli.md) berisi langkah-langkah terperinci yang menunjukkan cara mengonfigurasi dan men-deploy contoh konektor Notifikasi Twilio.

1. Pastikan Anda memenuhi [persyaratan](#servicenow-connector-req) untuk konektor.

1. <a name="connectors-setup-function"></a>Buat dan terbitkan fungsi Lambda yang mengirimkan data input ke konektor.

   Simpan [kode contoh](#servicenow-connector-usage-example) sebagai file PY. <a name="connectors-setup-function-sdk"></a>Unduh dan unzip [AWS IoT Greengrass Core SDK for Python](lambda-functions.md#lambda-sdks-core). Kemudian, buat paket zip yang berisi file PY dan folder `greengrasssdk` dalam tingkat root. Paket zip ini adalah paket deployment yang Anda unggah ke AWS Lambda.

   <a name="connectors-setup-function-publish"></a>Setelah Anda membuat fungsi Lambda Python 3.7, terbitkankan versi fungsi dan buat alias.

1. Konfigurasikan grup Greengrass Anda.

   1. <a name="connectors-setup-gg-function"></a>Tambahkan fungsi Lambda dengan aliasnya (direkomendasikan). Konfigurasikan siklus hidup Lambda sebagai berumur panjang (atau `"Pinned": true` dalam CLI).

   1. <a name="connectors-setup-secret-resource"></a>Tambahkan sumber daya rahasia yang diperlukan dan berikan akses baca ke fungsi Lambda.

   1. Tambahkan konektor dan konfigurasikan [parameter](#servicenow-connector-param).

   1. Tambahkan langganan yang mengizinkan konektor untuk menerima [data input](#servicenow-connector-data-input) dan mengirim [data output](#servicenow-connector-data-output) pada filter topik yang didukung.
      + <a name="connectors-setup-subscription-input-data"></a>Atur fungsi Lambda sebagai sumber, konektor sebagai target, dan gunakan filter topik input yang mendukung.
      + <a name="connectors-setup-subscription-output-data"></a>Atur konektor sebagai sumber, AWS IoT Core sebagai target, dan gunakan filter topik input yang mendukung. Anda menggunakan langganan ini untuk melihat pesan status di AWS IoT konsol.

1. <a name="connectors-setup-deploy-group"></a>Men-deploy grup.

1. <a name="connectors-setup-test-sub"></a>Di AWS IoT konsol, pada halaman **Uji**, berlangganan topik data keluaran untuk melihat pesan status dari konektor. Contoh fungsi Lambda yang berumur panjang dan mulai mengirim pesan segera setelah grup dalam-deploy.

   Setelah selesai pengujian, Anda dapat mengatur siklus hidup Lambda ke sesuai permintaan (atau `"Pinned": false` dalam CLI) dan men-deploy grup. Ini menghentikan fungsi dari mengirim pesan.

### Contoh
<a name="servicenow-connector-usage-example"></a>

Contoh fungsi Lambda berikut mengirimkan pesan input ke konektor.

```
import greengrasssdk
import json

iot_client = greengrasssdk.client('iot-data')
SEND_TOPIC = 'servicenow/metricbase/metric'

def create_request_with_all_fields():
    return {
        "request": {
             "subject": '2efdf6badbd523803acfae441b961961',
             "metric_name": 'u_count',
             "value": 1234,
             "timestamp": '2018-10-20T20:22:20',
             "table": 'u_greengrass_metricbase_test'
        }
    }

def publish_basic_message():
    messageToPublish = create_request_with_all_fields()
    print("Message To Publish: ", messageToPublish)
    iot_client.publish(topic=SEND_TOPIC,
        payload=json.dumps(messageToPublish))

publish_basic_message()

def lambda_handler(event, context):
    return
```

## Lisensi
<a name="servicenow-connector-license"></a>

Konektor ServiceNow MetricBase Integrasi mencakup perangkat lunak/lisensi pihak ketiga berikut:
+ [pysnow](https://github.com/rbw/pysnow)/MIT

Konektor ini dirilis di bawah [Perjanjian Lisensi Perangkat lunak core Greengrass](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Changelog
<a name="servicenow-connector-changelog"></a>

Tabel berikut menjelaskan perubahan dalam setiap versi konektor.


| Versi | Perubahan | 
| --- | --- | 
| 4 | <a name="isolation-mode-changelog"></a>Ditambahkan parameter `IsolationMode` untuk mengonfigurasi mode kontainerisasi untuk konektor. | 
| 3 | <a name="upgrade-runtime-py3.7"></a>Memperbarui waktu aktif Lambda untuk Python 3.7, yang mengubah persyaratan waktu aktif. | 
| 2 | Perbaiki untuk mengurangi pencatatan berlebihan. | 
| 1 | Pelepasan awal.  | 

<a name="one-conn-version"></a>Sebuah grup Greengrass dapat berisi hanya satu versi konektor pada suatu waktu. Untuk informasi lebih lanjut tentang pembaruan versi konektor, lihat [Versi upgrade konektor](connectors.md#upgrade-connector-versions).

## Lihat juga
<a name="servicenow-connector-see-also"></a>
+ [Integrasikan dengan layanan dan protokol menggunakan konektor Greengrass](connectors.md)
+ [Memulai dengan konektor Greengrass (konsol)](connectors-console.md)
+ [Memulai dengan konektor Greengrass (CLI)](connectors-cli.md)

# Konektor SNS
<a name="sns-connector"></a>

Sebuah [konektor](connectors.md) SNS menerbitkan pesan ke topik Amazon SNS. Hal ini memungkinkan server web, alamat email, dan pelanggan pesan lainnya untuk menanggapi peristiwa dalam grup Greengrass.

Konektor ini menerima informasi pesan SNS pada topik MQTT, dan kemudian mengirim pesan ke topik SNS tertentu. Anda dapat menggunakan fungsi Lambda kustom untuk implementasi penyaringan atau format logika pada pesan sebelum mereka diterbitkan untuk konektor ini.

Konektor ini memiliki versi berikut.


| Versi | ARN | 
| --- | --- | 
| 4 | `arn:aws:greengrass:region::/connectors/SNS/versions/4` | 
| 3 | `arn:aws:greengrass:region::/connectors/SNS/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/SNS/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/SNS/versions/1` | 

Untuk informasi tentang perubahan versi, lihat [Changelog](#sns-connector-changelog).

## Persyaratan
<a name="sns-connector-req"></a>

Konektor ini memiliki persyaratan sebagai berikut:

------
#### [ Version 3 - 4 ]
+ <a name="conn-req-ggc-v1.9.3"></a>AWS IoT Greengrass Perangkat lunak inti v1.9.3 atau yang lebih baru.
+ <a name="conn-req-py-3.7-and-3.8"></a>[Python](https://www.python.org/) versi 3.7 atau 3.8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
**catatan**  <a name="use-runtime-py3.8"></a>
Untuk menggunakan Python 3.8, jalankan perintah berikut untuk membuat link simbolik dari folder instalasi default Python 3.7 ke binari Python 3.8 yang diinstal.  

  ```
  sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7
  ```
Ini mengonfigurasi perangkat Anda untuk memenuhi persyaratan Python untuk AWS IoT Greengrass.
+ <a name="conn-sns-req-sns-config"></a>Sebuah topik SNS yang dikonfigurasi. Untuk informasi lebih lanjut, lihat [Membuat topik Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-tutorial-create-topic.html) dalam *Panduan Developer Amazon Simple Notification Service*.
+ <a name="conn-sns-req-iam-policy"></a>Peran [grup Greengrass](group-role.md) dikonfigurasi untuk mengizinkan `sns:Publish` tindakan pada SNStopic Amazon target, seperti yang ditunjukkan dalam contoh kebijakan IAM berikut.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "Stmt1528133056761",
              "Action": [
                  "sns:Publish"
              ],
              "Effect": "Allow",
              "Resource": [
              "arn:aws:sns:us-east-1:123456789012:topic-name"
              ]
          }
      ]
  }
  ```

------

  Konektor ini mengizinkan Anda untuk secara dinamis menimpa topik default dalam muatan pesan input. Jika implementasi Anda menggunakan fitur ini, kebijakan IAM harus mengizinkan `sns:Publish` izin pada semua topik target. Anda dapat memberikan akses terperinci atau bersyarat ke sumber daya (sebagai contoh, dengan menggunakan skema penamaan wildcard \$1).

  <a name="set-up-group-role"></a>Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat [Mengelola peran grup Greengrass (konsol)](group-role.md#manage-group-role-console) atau [Mengelola peran grup Greengrass (CLI)](group-role.md#manage-group-role-cli).

------
#### [ Versions 1 - 2 ]
+ <a name="conn-req-ggc-v1.7.0"></a>AWS IoT Greengrass Perangkat lunak inti v1.7 atau yang lebih baru.
+ [Python](https://www.python.org/) versi 2.7 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
+ <a name="conn-sns-req-sns-config"></a>Sebuah topik SNS yang dikonfigurasi. Untuk informasi lebih lanjut, lihat [Membuat topik Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-tutorial-create-topic.html) dalam *Panduan Developer Amazon Simple Notification Service*.
+ <a name="conn-sns-req-iam-policy"></a>Peran [grup Greengrass](group-role.md) dikonfigurasi untuk mengizinkan `sns:Publish` tindakan pada SNStopic Amazon target, seperti yang ditunjukkan dalam contoh kebijakan IAM berikut.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "Stmt1528133056761",
              "Action": [
                  "sns:Publish"
              ],
              "Effect": "Allow",
              "Resource": [
              "arn:aws:sns:us-east-1:123456789012:topic-name"
              ]
          }
      ]
  }
  ```

------

  Konektor ini mengizinkan Anda untuk secara dinamis menimpa topik default dalam muatan pesan input. Jika implementasi Anda menggunakan fitur ini, kebijakan IAM harus mengizinkan `sns:Publish` izin pada semua topik target. Anda dapat memberikan akses terperinci atau bersyarat ke sumber daya (sebagai contoh, dengan menggunakan skema penamaan wildcard \$1).

  <a name="set-up-group-role"></a>Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat [Mengelola peran grup Greengrass (konsol)](group-role.md#manage-group-role-console) atau [Mengelola peran grup Greengrass (CLI)](group-role.md#manage-group-role-cli).

------

## Parameter Konektor
<a name="sns-connector-param"></a>

Konektor ini menyediakan parameter berikut:

------
#### [ Version 4 ]

`DefaultSNSArn`  <a name="sns-DefaultSNSArn"></a>
ARN topik SNS default untuk menerbitkan pesan ke. Topik tujuan dapat ditimpa oleh properti `sns_topic_arn` dalam muatan pesan input.  
Peran grup harus memberikan izin `sns:Publish` untuk semua topik target. Untuk informasi selengkapnya, lihat [Persyaratan](#sns-connector-req).
Nama tampilan di AWS IoT konsol: **ARN topik SNS default**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `arn:aws:sns:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):([a-zA-Z0-9-_]+)$`

`IsolationMode`  <a name="IsolationMode"></a>
Mode [kontainerisasi](connectors.md#connector-containerization) untuk konektor ini. Defaultnya adalah`GreengrassContainer`, yang berarti konektor berjalan di lingkungan runtime yang terisolasi di dalam AWS IoT Greengrass container.  
Pengaturan kontainerisasi default untuk grup tidak berlaku untuk konektor.
Nama tampilan di AWS IoT konsol: **Mode isolasi kontainer**  
Wajib: `false`  
Jenis: `string`  
Nilai yang valid: `GreengrassContainer` or `NoContainer`  
Pola yang valid: `^NoContainer$|^GreengrassContainer$`

------
#### [ Versions 1 - 3 ]

`DefaultSNSArn`  <a name="sns-DefaultSNSArn"></a>
ARN topik SNS default untuk menerbitkan pesan ke. Topik tujuan dapat ditimpa oleh properti `sns_topic_arn` dalam muatan pesan input.  
Peran grup harus memberikan izin `sns:Publish` untuk semua topik target. Untuk informasi selengkapnya, lihat [Persyaratan](#sns-connector-req).
Nama tampilan di AWS IoT konsol: **ARN topik SNS default**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `arn:aws:sns:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):([a-zA-Z0-9-_]+)$`

------

### Buat Contoh Konektor (AWS CLI)
<a name="sns-connector-create"></a>

Perintah CLI berikut membuat `ConnectorDefinition` dengan versi awal yang berisi konektor SNS.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MySNSConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/SNS/versions/4",
            "Parameters": {
                "DefaultSNSArn": "arn:aws:sns:region:account-id:topic-name",
                "IsolationMode" : "GreengrassContainer"
            }
        }
    ]
}'
```

Di AWS IoT Greengrass konsol, Anda dapat menambahkan konektor dari halaman **Konektor** grup. Untuk informasi selengkapnya, lihat [Memulai dengan konektor Greengrass (konsol)](connectors-console.md).

## Data input
<a name="sns-connector-data-input"></a>

Konektor ini menerima informasi pesan SNS pada topik MQTT, dan kemudian menerbitkan pesan ke topik target SNS. Pesan input harus dalam format JSON.

<a name="topic-filter"></a>**Filter topik dalam langganan**  
`sns/message`

**Properti pesan**    
`request`  
Informasi tentang pesan yang akan dikirim ke topik SNS.  
Wajib: `true`  
Jenis: `object` yang mencakup properti berikut:    
`message`  
Isi pesan sebagai string atau dalam format JSON. Sebagai contoh, lihat [Contoh input](#sns-connector-data-input-example).  
Untuk mengirim JSON, `message_structure` properti harus diatur ke `json` dan pesan harus berupa objek JSON string-encoded yang berisi `default` kunci.  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `.*`  
`subject`  
Subjek pesan.  
Wajib: `false`  
Jenis: teks ASCII, hingga 100 karakter. Ini harus dimulai dengan tanda huruf, angka, atau tanda baca. Ini tidak harus mencakup jeda baris atau karakter kontrol.  
Pola yang valid: `.*`  
`sns_topic_arn`  
ARN topik SNS untuk menerbitkan pesan ke. Jika ditentukan, konektor menerbitkan topik ini menggantikan topik default.  
Peran grup harus memberikan izin `sns:Publish` untuk setiap topik target. Untuk informasi selengkapnya, lihat [Persyaratan](#sns-connector-req).
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `arn:aws:sns:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):([a-zA-Z0-9-_]+)$`  
`message_structure`  
Struktur pesan.  
Diperlukan:`false`. Ini harus ditentukan untuk mengirim pesan JSON.  
Tipe: `string`  
Nilai yang valid: `json`  
`id`  
ID arbitrer untuk permintaan. Properti ini digunakan untuk memetakan permintaan input untuk respons output. Ketika ditentukan, `id` properti dalam objek respon diatur ke nilai ini. Jika Anda tidak menggunakan fitur ini, Anda dapat menghilangkan properti ini atau menentukan string kosong.  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `.*`

**Batas**  
Ukuran pesan dibatasi oleh ukuran maksimum pesan SNS 256 KB.

**Contoh masukan: Pesan string**  <a name="sns-connector-data-input-example"></a>
Contoh ini mengirimkan pesan string. Ini menentukan properti `sns_topic_arn` opsional, yang menimpa topik tujuan default.  

```
{
    "request": {
        "subject": "Message subject",
        "message": "Message data",
        "sns_topic_arn": "arn:aws:sns:region:account-id:topic2-name"
    },
    "id": "request123"
}
```

**Contoh masukan: pesan JSON**  
Contoh ini mengirimkan pesan sebagai string dikodekan objek JSON yang mencakup `default` kunci.  

```
{
    "request": {
        "subject": "Message subject",
        "message": "{ \"default\": \"Message data\" }",
        "message_structure": "json"
    },
    "id": "request123"
}
```

## Data output
<a name="sns-connector-data-output"></a>

Konektor ini menerbitkan informasi status sebagai data output pada topik MQTT.

<a name="topic-filter"></a>**Filter topik dalam langganan**  
`sns/message/status`

**Contoh keluaran: Sukses**  

```
{
    "response": {
        "sns_message_id": "f80a81bc-f44c-56f2-a0f0-d5af6a727c8a",
        "status": "success"
    },
    "id": "request123"
}
```

**Contoh keluaran: Kegagalan**  

```
{
   "response" : {
        "error": "InvalidInputException",
        "error_message": "SNS Topic Arn is invalid",
        "status": "fail"
   },
   "id": "request123"
}
```

## Contoh Penggunaan
<a name="sns-connector-usage"></a>

<a name="connectors-setup-intro"></a>Gunakan langkah-langkah tingkat tinggi berikut untuk mengatur contoh fungsi Lambda Python 3.7 yang dapat Anda gunakan untuk mencoba konektor.

**catatan**  <a name="connectors-setup-get-started-topics"></a>
Jika Anda menggunakan waktu aktif Python lainnya, Anda dapat membuat symlink dari Python3.x ke Python 3.7.
Topik [Memulai dengan konektor (konsol)](connectors-console.md) dan [Memulai dengan konektor (CLI)](connectors-cli.md) berisi langkah-langkah terperinci yang menunjukkan cara mengonfigurasi dan men-deploy contoh konektor Notifikasi Twilio.

1. Pastikan Anda memenuhi [persyaratan](#sns-connector-req) untuk konektor.

   <a name="set-up-group-role"></a>Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat [Mengelola peran grup Greengrass (konsol)](group-role.md#manage-group-role-console) atau [Mengelola peran grup Greengrass (CLI)](group-role.md#manage-group-role-cli).

1. <a name="connectors-setup-function"></a>Buat dan terbitkan fungsi Lambda yang mengirimkan data input ke konektor.

   Simpan [kode contoh](#sns-connector-usage-example) sebagai file PY. <a name="connectors-setup-function-sdk"></a>Unduh dan unzip [AWS IoT Greengrass Core SDK for Python](lambda-functions.md#lambda-sdks-core). Kemudian, buat paket zip yang berisi file PY dan folder `greengrasssdk` dalam tingkat root. Paket zip ini adalah paket deployment yang Anda unggah ke AWS Lambda.

   <a name="connectors-setup-function-publish"></a>Setelah Anda membuat fungsi Lambda Python 3.7, terbitkankan versi fungsi dan buat alias.

1. Konfigurasikan grup Greengrass Anda.

   1. <a name="connectors-setup-gg-function"></a>Tambahkan fungsi Lambda dengan aliasnya (direkomendasikan). Konfigurasikan siklus hidup Lambda sebagai berumur panjang (atau `"Pinned": true` dalam CLI).

   1. Tambahkan konektor dan konfigurasikan [parameter](#sns-connector-param).

   1. Tambahkan langganan yang mengizinkan konektor untuk menerima [data input](#sns-connector-data-input) dan mengirim [data output](#sns-connector-data-output) pada filter topik yang didukung.
      + <a name="connectors-setup-subscription-input-data"></a>Atur fungsi Lambda sebagai sumber, konektor sebagai target, dan gunakan filter topik input yang mendukung.
      + <a name="connectors-setup-subscription-output-data"></a>Atur konektor sebagai sumber, AWS IoT Core sebagai target, dan gunakan filter topik input yang mendukung. Anda menggunakan langganan ini untuk melihat pesan status di AWS IoT konsol.

1. <a name="connectors-setup-deploy-group"></a>Men-deploy grup.

1. <a name="connectors-setup-test-sub"></a>Di AWS IoT konsol, pada halaman **Uji**, berlangganan topik data keluaran untuk melihat pesan status dari konektor. Contoh fungsi Lambda yang berumur panjang dan mulai mengirim pesan segera setelah grup dalam-deploy.

   Setelah selesai pengujian, Anda dapat mengatur siklus hidup Lambda ke sesuai permintaan (atau `"Pinned": false` dalam CLI) dan men-deploy grup. Ini menghentikan fungsi dari mengirim pesan.

### Contoh
<a name="sns-connector-usage-example"></a>

Contoh fungsi Lambda berikut mengirimkan pesan input ke konektor.

```
import greengrasssdk
import time
import json

iot_client = greengrasssdk.client('iot-data')
send_topic = 'sns/message'

def create_request_with_all_fields():
    return  {
        "request": {
            "message": "Message from SNS Connector Test"
        },
        "id" : "req_123"
    }

def publish_basic_message():
    messageToPublish = create_request_with_all_fields()
    print("Message To Publish: ", messageToPublish)
    iot_client.publish(topic=send_topic,
        payload=json.dumps(messageToPublish))

publish_basic_message()

def lambda_handler(event, context):
    return
```

## Lisensi
<a name="sns-connector-license"></a>

Konektor SNS termasuk perangkat lunak/lisensi pihak ketiga berikut:<a name="boto-3-licenses"></a>
+ [AWS SDK untuk Python (Boto3)](https://pypi.org/project/boto3/)/Lisensi 2.0 Apache
+ [botocore](https://pypi.org/project/botocore/)/Apache License 2.0
+ [dateutil](https://pypi.org/project/python-dateutil/1.4/)/PSF License
+ [docutils](https://pypi.org/project/docutils/)/BSD License, Lisensi Publik Umum (GPL) GNU, Lisensi Dasar Perangkat Lunak Python, Domain Publik
+ [jmespath](https://pypi.org/project/jmespath/)/MIT License
+ [s3transfer](https://pypi.org/project/s3transfer/)/Apache License 2.0
+ [urllib3](https://pypi.org/project/urllib3/)/Lisensi MIT

Konektor ini dirilis di bawah [Perjanjian Lisensi Perangkat lunak core Greengrass](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Changelog
<a name="sns-connector-changelog"></a>

Tabel berikut menjelaskan perubahan dalam setiap versi konektor.


| Versi | Perubahan | 
| --- | --- | 
| 4 | <a name="isolation-mode-changelog"></a>Ditambahkan parameter `IsolationMode` untuk mengonfigurasi mode kontainerisasi untuk konektor. | 
| 3 | <a name="upgrade-runtime-py3.7"></a>Memperbarui waktu aktif Lambda untuk Python 3.7, yang mengubah persyaratan waktu aktif. | 
| 2 | Perbaiki untuk mengurangi pencatatan berlebihan. | 
| 1 | Pelepasan awal.  | 

<a name="one-conn-version"></a>Sebuah grup Greengrass dapat berisi hanya satu versi konektor pada suatu waktu. Untuk informasi lebih lanjut tentang pembaruan versi konektor, lihat [Versi upgrade konektor](connectors.md#upgrade-connector-versions).

## Lihat juga
<a name="sns-connector-see-also"></a>
+ [Integrasikan dengan layanan dan protokol menggunakan konektor Greengrass](connectors.md)
+ [Memulai dengan konektor Greengrass (konsol)](connectors-console.md)
+ [Memulai dengan konektor Greengrass (CLI)](connectors-cli.md)
+ [ Terbitkan tindakan](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sns.html#SNS.Client.publish) dalam dokumentasi Boto 3
+ [Apakah Amazon Simple Notification Service?](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) dalam *Panduan Developer Amazon Simple Notification Service*

# Konektor Integrasi Splunk
<a name="splunk-connector"></a>

**Awas**  <a name="connectors-extended-life-phase-warning"></a>
Konektor ini telah pindah ke *fase umur yang diperpanjang*, dan AWS IoT Greengrass tidak akan merilis pembaruan yang menyediakan fitur, penyempurnaan pada fitur yang ada, patch keamanan, atau perbaikan bug. Untuk informasi selengkapnya, lihat [AWS IoT Greengrass Version 1 kebijakan pemeliharaan](maintenance-policy.md).

[Konektor](connectors.md) Integrasi Splunk menerbitkan data dari perangkat Greengrass ke Splunk. Ini mengizinkan Anda untuk menggunakan Splunk untuk memantau dan menganalisis lingkungan core Greengrass, dan bertindak pada peristiwa lokal. Konektor terintegrasi dengan HTTP Event Collector (HEC). Untuk informasi lebih lanjut, lihat [Pengantar Splunk HTTP Event Collector](https://dev.splunk.com/view/event-collector/SP-CAAAE6M) dalam dokumentasi Splunk.

Konektor ini menerima data logging dan data peristiwa pada topik MQTT dan menerbitkan data seperti Splunk API.

Anda dapat menggunakan konektor ini untuk mendukung skenario industri, seperti:
+ Operator dapat menggunakan data berkala dari aktuator dan sensor (sebagai contoh, suhu, tekanan, dan pembacaan air) untuk memulai alarm jika nilai melebihi ambang batas tertentu.
+ Developer menggunakan data yang dikumpulkan dari mesin industri untuk membangun model ML yang dapat memantau peralatan untuk potensi masalah.

Konektor ini memiliki versi berikut.


| Versi | ARN | 
| --- | --- | 
| 4 | `arn:aws:greengrass:region::/connectors/SplunkIntegration/versions/4` | 
| 3 | `arn:aws:greengrass:region::/connectors/SplunkIntegration/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/SplunkIntegration/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/SplunkIntegration/versions/1` | 

Untuk informasi tentang perubahan versi, lihat [Changelog](#splunk-connector-changelog).

## Persyaratan
<a name="splunk-connector-req"></a>

Konektor ini memiliki persyaratan sebagai berikut:

------
#### [ Version 3 - 4 ]
+ <a name="conn-req-ggc-v1.9.3-secrets"></a>AWS IoT Greengrass Perangkat lunak inti v1.9.3 atau yang lebih baru. AWS IoT Greengrass harus dikonfigurasi untuk mendukung rahasia lokal, seperti yang dijelaskan dalam [Persyaratan Rahasia](secrets.md#secrets-reqs).
**catatan**  
Persyaratan ini mencakup akses ke rahasia Secrets Manager Anda. Jika Anda menggunakan peran layanan default Greengrass, Greengrass memiliki izin untuk mendapatkan nilai-nilai rahasia dengan nama yang dimulai dengan *greengrass-*.
+ <a name="conn-req-py-3.7-and-3.8"></a>[Python](https://www.python.org/) versi 3.7 atau 3.8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
**catatan**  <a name="use-runtime-py3.8"></a>
Untuk menggunakan Python 3.8, jalankan perintah berikut untuk membuat link simbolik dari folder instalasi default Python 3.7 ke binari Python 3.8 yang diinstal.  

  ```
  sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7
  ```
Ini mengonfigurasi perangkat Anda untuk memenuhi persyaratan Python untuk AWS IoT Greengrass.
+ <a name="conn-splunk-req-http-event-collector"></a>Fungsi HTTP Event Collector harus diaktifkan dalam Splunk. Untuk informasi lebih lanjut, lihat [Atur dan gunakan HTTP eEvent Collector dalam Splunk Web](https://docs.splunk.com/Documentation/Splunk/7.2.0/Data/UsetheHTTPEventCollector) dalam dokumentasi Splunk.
+ <a name="conn-splunk-req-secret"></a>Rahasia tipe teks AWS Secrets Manager yang menyimpan token Splunk HTTP Event Collector Anda. Untuk informasi lebih lanjut, lihat [Tentang token kolektor peristiwa](https://docs.splunk.com/Documentation/Splunk/7.2.0/Data/UsetheHTTPEventCollector#About_Event_Collector_tokens) dalam dokumentasi Splunk dan [Membuat rahasia dasar](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html) dalam *AWS Secrets Manager Panduan Pengguna*.
**catatan**  
Untuk membuat rahasia dalam konsol Secrets Manager, masukkan token Anda pada tab **Plaintext** ini. Jangan sertakan tanda kutip atau pemformatan lainnya. Dalam API, tentukan token sebagai nilai untuk properti `SecretString` ini.
+ Sebuah sumber daya rahasia dalam grup Greengrass yang mereferensikan rahasia Secrets Manager. Untuk informasi selengkapnya, lihat [Menyebarkan rahasia ke inti AWS IoT Greengrass](secrets.md).

------
#### [ Versions 1 - 2 ]
+ <a name="conn-req-ggc-v1.7.0-secrets"></a>AWS IoT Greengrass Perangkat lunak inti v1.7 atau yang lebih baru. AWS IoT Greengrass harus dikonfigurasi untuk mendukung rahasia lokal, seperti yang dijelaskan dalam [Persyaratan Rahasia](secrets.md#secrets-reqs).
**catatan**  
Persyaratan ini mencakup akses ke rahasia Secrets Manager Anda. Jika Anda menggunakan peran layanan default Greengrass, Greengrass memiliki izin untuk mendapatkan nilai-nilai rahasia dengan nama yang dimulai dengan *greengrass-*.
+ [Python](https://www.python.org/) versi 2.7 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
+ <a name="conn-splunk-req-http-event-collector"></a>Fungsi HTTP Event Collector harus diaktifkan dalam Splunk. Untuk informasi lebih lanjut, lihat [Atur dan gunakan HTTP eEvent Collector dalam Splunk Web](https://docs.splunk.com/Documentation/Splunk/7.2.0/Data/UsetheHTTPEventCollector) dalam dokumentasi Splunk.
+ <a name="conn-splunk-req-secret"></a>Rahasia tipe teks AWS Secrets Manager yang menyimpan token Splunk HTTP Event Collector Anda. Untuk informasi lebih lanjut, lihat [Tentang token kolektor peristiwa](https://docs.splunk.com/Documentation/Splunk/7.2.0/Data/UsetheHTTPEventCollector#About_Event_Collector_tokens) dalam dokumentasi Splunk dan [Membuat rahasia dasar](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html) dalam *AWS Secrets Manager Panduan Pengguna*.
**catatan**  
Untuk membuat rahasia dalam konsol Secrets Manager, masukkan token Anda pada tab **Plaintext** ini. Jangan sertakan tanda kutip atau pemformatan lainnya. Dalam API, tentukan token sebagai nilai untuk properti `SecretString` ini.
+ Sebuah sumber daya rahasia dalam grup Greengrass yang mereferensikan rahasia Secrets Manager. Untuk informasi selengkapnya, lihat [Menyebarkan rahasia ke inti AWS IoT Greengrass](secrets.md).

------

## Parameter Konektor
<a name="splunk-connector-param"></a>

Konektor ini menyediakan parameter berikut:

------
#### [ Version 4 ]

`SplunkEndpoint`  <a name="splunk-SplunkEndpoint"></a>
Titik akhir dari instans Splunk Anda. Nilai ini harus berisi protokol, hostname, dan port.  
Nama tampilan di AWS IoT konsol: Titik akhir **Splunk**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^(http:\/\/|https:\/\/)?[a-z0-9]+([-.]{1}[a-z0-9]+)*.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$`

`MemorySize`  <a name="splunk-MemorySize"></a>
Jumlah memori (dalam KB) untuk mengalokasikan ke konektor.  
Nama tampilan di AWS IoT konsol: **Ukuran memori**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^[0-9]+$`

`SplunkQueueSize`  <a name="splunk-SplunkQueueSize"></a>
Jumlah maksimum item untuk dipertahankan dalam memori sebelum item dikirimkan atau dibuang. Ketika batas ini terpenuhi, item tertua dalam antrian diganti dengan item yang lebih baru. Batas ini biasanya berlaku ketika tidak ada koneksi ke internet.  
Nama tampilan di AWS IoT konsol: **Item maksimum yang harus dipertahankan**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^[0-9]+$`

`SplunkFlushIntervalSeconds`  <a name="splunk-SplunkFlushIntervalSeconds"></a>
Interval (dalam detik) untuk menerbitkan data yang diterima ke Splunk HEC. Nilai maksimumnya adalah 900. Untuk mengonfigurasi konektor untuk menerbitkan item seperti yang diterima (tanpa batching), tentukan 0.  
Nama tampilan di AWS IoT konsol: Interval **publikasi Splunk**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `[0-9]|[1-9]\d|[1-9]\d\d|900`

`SplunkTokenSecretArn`  <a name="splunk-SplunkTokenSecretArn"></a>
Rahasia AWS Secrets Manager yang menyimpan token Splunk. Ini harus berupa rahasia jenis teks.  
Nama tampilan di AWS IoT konsol: **ARN rahasia token autentikasi Splunk**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `arn:aws:secretsmanager:[a-z]{2}-[a-z]+-\d{1}:\d{12}?:secret:[a-zA-Z0-9-_]+-[a-zA-Z0-9-_]+`

`SplunkTokenSecretArn-ResourceId`  <a name="splunk-SplunkTokenSecretArn-ResourceId"></a>
Sumber daya rahasia dalam grup Greengrass yang mereferensikan rahasia Splunk.  
Nama tampilan di AWS IoT konsol: Sumber daya token **autentikasi splunk**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `.+`

`SplunkCustomCALocation`  <a name="splunk-SplunkCustomCALocation"></a>
Jalur file kustom otoritas sertifikasi (CA) untuk Splunk (sebagai contoh, `/etc/ssl/certs/splunk.crt`).  
Nama tampilan di AWS IoT konsol: Lokasi **otoritas sertifikat khusus Splunk**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^$|/.*`

`IsolationMode`  <a name="IsolationMode"></a>
Mode [kontainerisasi](connectors.md#connector-containerization) untuk konektor ini. Defaultnya adalah`GreengrassContainer`, yang berarti konektor berjalan di lingkungan runtime yang terisolasi di dalam AWS IoT Greengrass container.  
Pengaturan kontainerisasi default untuk grup tidak berlaku untuk konektor.
Nama tampilan di AWS IoT konsol: **Mode isolasi kontainer**  
Wajib: `false`  
Jenis: `string`  
Nilai yang valid: `GreengrassContainer` or `NoContainer`  
Pola yang valid: `^NoContainer$|^GreengrassContainer$`

------
#### [ Version 1 - 3 ]

`SplunkEndpoint`  <a name="splunk-SplunkEndpoint"></a>
Titik akhir dari instans Splunk Anda. Nilai ini harus berisi protokol, hostname, dan port.  
Nama tampilan di AWS IoT konsol: Titik akhir **Splunk**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^(http:\/\/|https:\/\/)?[a-z0-9]+([-.]{1}[a-z0-9]+)*.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$`

`MemorySize`  <a name="splunk-MemorySize"></a>
Jumlah memori (dalam KB) untuk mengalokasikan ke konektor.  
Nama tampilan di AWS IoT konsol: **Ukuran memori**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^[0-9]+$`

`SplunkQueueSize`  <a name="splunk-SplunkQueueSize"></a>
Jumlah maksimum item untuk dipertahankan dalam memori sebelum item dikirimkan atau dibuang. Ketika batas ini terpenuhi, item tertua dalam antrian diganti dengan item yang lebih baru. Batas ini biasanya berlaku ketika tidak ada koneksi ke internet.  
Nama tampilan di AWS IoT konsol: **Item maksimum yang harus dipertahankan**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^[0-9]+$`

`SplunkFlushIntervalSeconds`  <a name="splunk-SplunkFlushIntervalSeconds"></a>
Interval (dalam detik) untuk menerbitkan data yang diterima ke Splunk HEC. Nilai maksimumnya adalah 900. Untuk mengonfigurasi konektor untuk menerbitkan item seperti yang diterima (tanpa batching), tentukan 0.  
Nama tampilan di AWS IoT konsol: Interval **publikasi Splunk**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `[0-9]|[1-9]\d|[1-9]\d\d|900`

`SplunkTokenSecretArn`  <a name="splunk-SplunkTokenSecretArn"></a>
Rahasia AWS Secrets Manager yang menyimpan token Splunk. Ini harus berupa rahasia jenis teks.  
Nama tampilan di AWS IoT konsol: **ARN rahasia token autentikasi Splunk**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `arn:aws:secretsmanager:[a-z]{2}-[a-z]+-\d{1}:\d{12}?:secret:[a-zA-Z0-9-_]+-[a-zA-Z0-9-_]+`

`SplunkTokenSecretArn-ResourceId`  <a name="splunk-SplunkTokenSecretArn-ResourceId"></a>
Sumber daya rahasia dalam grup Greengrass yang mereferensikan rahasia Splunk.  
Nama tampilan di AWS IoT konsol: Sumber daya token **autentikasi splunk**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `.+`

`SplunkCustomCALocation`  <a name="splunk-SplunkCustomCALocation"></a>
Jalur file kustom otoritas sertifikasi (CA) untuk Splunk (sebagai contoh, `/etc/ssl/certs/splunk.crt`).  
Nama tampilan di AWS IoT konsol: Lokasi **otoritas sertifikat khusus Splunk**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^$|/.*`

------

### Buat Contoh Konektor (AWS CLI)
<a name="splunk-connector-create"></a>

Perintah CLI berikut membuat `ConnectorDefinition` dengan versi awal yang berisi konektor Integrasi Splunk.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MySplunkIntegrationConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/SplunkIntegration/versions/4",
            "Parameters": {
                "SplunkEndpoint": "https://myinstance.cloud.splunk.com:8088",
                "MemorySize": 200000,
                "SplunkQueueSize": 10000,
                "SplunkFlushIntervalSeconds": 5,
                "SplunkTokenSecretArn":"arn:aws:secretsmanager:region:account-id:secret:greengrass-secret-hash",
                "SplunkTokenSecretArn-ResourceId": "MySplunkResource", 
                "IsolationMode" : "GreengrassContainer"
            }
        }
    ]
}'
```

**catatan**  
Fungsi Lambda dalam konektor mempunyai siklus hidup yang [berumur panjang](lambda-functions.md#lambda-lifecycle) ini.

Di AWS IoT Greengrass konsol, Anda dapat menambahkan konektor dari halaman **Konektor** grup. Untuk informasi selengkapnya, lihat [Memulai dengan konektor Greengrass (konsol)](connectors-console.md).

## Data input
<a name="splunk-connector-data-input"></a>

Konektor ini menerima data logging dan peristiwa pada topik MQTT dan menerbitkan data yang diterima seperti Splunk API. Pesan input harus dalam format JSON.

<a name="topic-filter"></a>**Filter topik dalam langganan**  
`splunk/logs/put`

**Properti pesan**    
`request`  
Data peristiwa untuk mengirim ke Splunk API. Acara harus memenuhi spesifikasi dari [layanan/kolektor](https://docs.splunk.com/Documentation/Splunk/latest/RESTREF/RESTinput#services.2Fcollector) API.  
Wajib: `true`  
Jenis:`object`. Hanya `event` properti diperlukan.  
`id`  
ID arbitrer untuk permintaan. Properti ini digunakan untuk memetakan permintaan input untuk status output.  
Wajib: `false`  
Jenis: `string`

**Batas**  
Semua batas yang dikenakan oleh Splunk API berlaku ketika menggunakan konektor ini. Untuk informasi lebih lanjut, lihat [layanan/kolektor](https://docs.splunk.com/Documentation/Splunk/latest/RESTREF/RESTinput#services.2Fcollector).

**Contoh masukan**  

```
{
    "request": {
        "event": "some event",
        "fields": {
            "severity": "INFO",
            "category": [
                "value1",
                "value2"
            ]
        }
    },
    "id": "request123"
}
```

## Data output
<a name="splunk-connector-data-output"></a>

Konektor ini menerbitkan data output pada dua topik:
+ Informasi status pada `splunk/logs/put/status` topik.
+ Kesalahan pada topik `splunk/logs/put/error` ini.

**Filter topik:** `splunk/logs/put/status`  
Gunakan topik ini untuk mendengarkan status permintaan. Setiap kali konektor mengirimkan sekumpulan data yang diterima ke API Splunk, ia menerbitkan daftar permintaan IDs yang berhasil dan gagal.    
**Contoh keluaran**  

```
{
    "response": {
        "succeeded": [
            "request123",
            ...
        ],
        "failed": [
            "request789",
            ...
        ]
    }
}
```

**Filter topik:** `splunk/logs/put/error`  
Gunakan topik ini untuk mendengarkan kesalahan dari konektor. Properti `error_message` yang menjelaskan kesalahan atau timeout yang dihadapi sambil memproses permintaan.    
**Contoh keluaran**  

```
{
    "response": {
        "error": "UnauthorizedException",
        "error_message": "invalid splunk token",
        "status": "fail"
    }
}
```
Jika konektor mendeteksi kesalahan yang dapat diulang (sebagai contoh, kesalahan koneksi), konektor mengulang lagi publikasinya dalam batch berikutnya.

## Contoh Penggunaan
<a name="splunk-connector-usage"></a>

<a name="connectors-setup-intro"></a>Gunakan langkah-langkah tingkat tinggi berikut untuk mengatur contoh fungsi Lambda Python 3.7 yang dapat Anda gunakan untuk mencoba konektor.

**catatan**  <a name="connectors-setup-get-started-topics"></a>
Jika Anda menggunakan waktu aktif Python lainnya, Anda dapat membuat symlink dari Python3.x ke Python 3.7.
Topik [Memulai dengan konektor (konsol)](connectors-console.md) dan [Memulai dengan konektor (CLI)](connectors-cli.md) berisi langkah-langkah terperinci yang menunjukkan cara mengonfigurasi dan men-deploy contoh konektor Notifikasi Twilio.

1. Pastikan Anda memenuhi [persyaratan](#splunk-connector-req) untuk konektor.

1. <a name="connectors-setup-function"></a>Buat dan terbitkan fungsi Lambda yang mengirimkan data input ke konektor.

   Simpan [kode contoh](#splunk-connector-usage-example) sebagai file PY. <a name="connectors-setup-function-sdk"></a>Unduh dan unzip [AWS IoT Greengrass Core SDK for Python](lambda-functions.md#lambda-sdks-core). Kemudian, buat paket zip yang berisi file PY dan folder `greengrasssdk` dalam tingkat root. Paket zip ini adalah paket deployment yang Anda unggah ke AWS Lambda.

   <a name="connectors-setup-function-publish"></a>Setelah Anda membuat fungsi Lambda Python 3.7, terbitkankan versi fungsi dan buat alias.

1. Konfigurasikan grup Greengrass Anda.

   1. <a name="connectors-setup-gg-function"></a>Tambahkan fungsi Lambda dengan aliasnya (direkomendasikan). Konfigurasikan siklus hidup Lambda sebagai berumur panjang (atau `"Pinned": true` dalam CLI).

   1. <a name="connectors-setup-secret-resource"></a>Tambahkan sumber daya rahasia yang diperlukan dan berikan akses baca ke fungsi Lambda.

   1. Tambahkan konektor dan konfigurasikan [parameter](#splunk-connector-param).

   1. Tambahkan langganan yang mengizinkan konektor untuk menerima [data input](#splunk-connector-data-input) dan mengirim [data output](#splunk-connector-data-output) pada filter topik yang didukung.
      + <a name="connectors-setup-subscription-input-data"></a>Atur fungsi Lambda sebagai sumber, konektor sebagai target, dan gunakan filter topik input yang mendukung.
      + <a name="connectors-setup-subscription-output-data"></a>Atur konektor sebagai sumber, AWS IoT Core sebagai target, dan gunakan filter topik input yang mendukung. Anda menggunakan langganan ini untuk melihat pesan status di AWS IoT konsol.

1. <a name="connectors-setup-deploy-group"></a>Men-deploy grup.

1. <a name="connectors-setup-test-sub"></a>Di AWS IoT konsol, pada halaman **Uji**, berlangganan topik data keluaran untuk melihat pesan status dari konektor. Contoh fungsi Lambda yang berumur panjang dan mulai mengirim pesan segera setelah grup dalam-deploy.

   Setelah selesai pengujian, Anda dapat mengatur siklus hidup Lambda ke sesuai permintaan (atau `"Pinned": false` dalam CLI) dan men-deploy grup. Ini menghentikan fungsi dari mengirim pesan.

### Contoh
<a name="splunk-connector-usage-example"></a>

Contoh fungsi Lambda berikut mengirimkan pesan input ke konektor.

```
import greengrasssdk
import time
import json

iot_client = greengrasssdk.client('iot-data')
send_topic = 'splunk/logs/put'

def create_request_with_all_fields():
    return {
        "request": {
            "event": "Access log test message."
        },
        "id" : "req_123"
    }

def publish_basic_message():
    messageToPublish = create_request_with_all_fields()
    print("Message To Publish: ", messageToPublish)
    iot_client.publish(topic=send_topic,
        payload=json.dumps(messageToPublish))

publish_basic_message()

def lambda_handler(event, context):
    return
```

## Lisensi
<a name="splunk-connector-license"></a>

Konektor ini dirilis di bawah [Perjanjian Lisensi Perangkat lunak core Greengrass](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Changelog
<a name="splunk-connector-changelog"></a>

Tabel berikut menjelaskan perubahan dalam setiap versi konektor.


| Versi | Perubahan | 
| --- | --- | 
| 4 | <a name="isolation-mode-changelog"></a>Ditambahkan parameter `IsolationMode` untuk mengonfigurasi mode kontainerisasi untuk konektor. | 
| 3 | <a name="upgrade-runtime-py3.7"></a>Memperbarui waktu aktif Lambda untuk Python 3.7, yang mengubah persyaratan waktu aktif. | 
| 2 | Perbaiki untuk mengurangi pencatatan berlebihan. | 
| 1 | Pelepasan awal.  | 

<a name="one-conn-version"></a>Sebuah grup Greengrass dapat berisi hanya satu versi konektor pada suatu waktu. Untuk informasi lebih lanjut tentang pembaruan versi konektor, lihat [Versi upgrade konektor](connectors.md#upgrade-connector-versions).

## Lihat juga
<a name="splunk-connector-see-also"></a>
+ [Integrasikan dengan layanan dan protokol menggunakan konektor Greengrass](connectors.md)
+ [Memulai dengan konektor Greengrass (konsol)](connectors-console.md)
+ [Memulai dengan konektor Greengrass (CLI)](connectors-cli.md)

# Konektor Notifikasi Twilio
<a name="twilio-notifications-connector"></a>

**Awas**  <a name="connectors-extended-life-phase-warning"></a>
Konektor ini telah pindah ke *fase umur yang diperpanjang*, dan AWS IoT Greengrass tidak akan merilis pembaruan yang menyediakan fitur, penyempurnaan pada fitur yang ada, patch keamanan, atau perbaikan bug. Untuk informasi selengkapnya, lihat [AWS IoT Greengrass Version 1 kebijakan pemeliharaan](maintenance-policy.md).

[Konektor](connectors.md) Notifikasi Twilio melakukan panggilan telepon otomatis atau mengirim pesan teks melalui Twilio. Anda dapat menggunakan konektor ini untuk mengirim notifikasi dalam menanggapi peristiwa dalam grup Greengrass. Untuk panggilan telepon, konektor dapat meneruskan pesan suara ke penerima.

Konektor ini menerima informasi pesan Twilio pada topik MQTT, dan kemudian memicu notifikasi Twilio.

**catatan**  
Untuk tutorial yang menunjukkan cara menggunakan konektor notifikasi Twilio, lihat [Memulai dengan konektor Greengrass (konsol)](connectors-console.md) atau [Memulai dengan konektor Greengrass (CLI)](connectors-cli.md).

Konektor ini memiliki versi berikut.


| Versi | ARN | 
| --- | --- | 
| 5 | `arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/5` | 
| 4 | `arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/4` | 
| 3 | `arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/1` | 

Untuk informasi tentang perubahan versi, lihat [Changelog](#twilio-notifications-connector-changelog).

## Persyaratan
<a name="twilio-notifications-connector-req"></a>

Konektor ini memiliki persyaratan sebagai berikut:

------
#### [ Version 4 - 5 ]
+ <a name="conn-req-ggc-v1.9.3-secrets"></a>AWS IoT Greengrass Perangkat lunak inti v1.9.3 atau yang lebih baru. AWS IoT Greengrass harus dikonfigurasi untuk mendukung rahasia lokal, seperti yang dijelaskan dalam [Persyaratan Rahasia](secrets.md#secrets-reqs).
**catatan**  
Persyaratan ini mencakup akses ke rahasia Secrets Manager Anda. Jika Anda menggunakan peran layanan default Greengrass, Greengrass memiliki izin untuk mendapatkan nilai-nilai rahasia dengan nama yang dimulai dengan *greengrass-*.
+ <a name="conn-req-py-3.7-and-3.8"></a>[Python](https://www.python.org/) versi 3.7 atau 3.8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
**catatan**  <a name="use-runtime-py3.8"></a>
Untuk menggunakan Python 3.8, jalankan perintah berikut untuk membuat link simbolik dari folder instalasi default Python 3.7 ke binari Python 3.8 yang diinstal.  

  ```
  sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7
  ```
Ini mengonfigurasi perangkat Anda untuk memenuhi persyaratan Python untuk AWS IoT Greengrass.
+ Twilio account SID, token auth, dan nomor telepon berkemampuan Twilio. Setelah Anda membuat proyek Twilio, nilai-nilai ini tersedia dalam dasbor proyek.
**catatan**  
Anda dapat menggunakan akun percobaan Twilio. Jika menggunakan akun uji coba, Anda harus menambahkan nomor telepon penerima selain Twilio ke daftar nomor telepon terverifikasi. Untuk informasi lebih lanjut, lihat [ Cara Bekerja dengan Akun Trial Twilio Gratis](https://www.twilio.com/docs/usage/tutorials/how-to-use-your-free-trial-account).
+ <a name="conn-twilio-req-secret"></a>Rahasia tipe teks AWS Secrets Manager yang menyimpan token autentikasi Twilio. Untuk informasi lebih lanjut, lihat [Membuat rahasia dasar](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html) dalam *AWS Secrets Manager Panduan Pengguna*.
**catatan**  
Untuk membuat rahasia dalam konsol Secrets Manager, masukkan token Anda pada tab **Plaintext** ini. Jangan sertakan tanda kutip atau pemformatan lainnya. Dalam API, tentukan token sebagai nilai untuk properti `SecretString` ini.
+ Sebuah sumber daya rahasia dalam grup Greengrass yang mereferensikan rahasia Secrets Manager. Untuk informasi selengkapnya, lihat [Menyebarkan rahasia ke inti AWS IoT Greengrass](secrets.md).

------
#### [ Versions 1 - 3 ]
+ <a name="conn-req-ggc-v1.7.0-secrets"></a>AWS IoT Greengrass Perangkat lunak inti v1.7 atau yang lebih baru. AWS IoT Greengrass harus dikonfigurasi untuk mendukung rahasia lokal, seperti yang dijelaskan dalam [Persyaratan Rahasia](secrets.md#secrets-reqs).
**catatan**  
Persyaratan ini mencakup akses ke rahasia Secrets Manager Anda. Jika Anda menggunakan peran layanan default Greengrass, Greengrass memiliki izin untuk mendapatkan nilai-nilai rahasia dengan nama yang dimulai dengan *greengrass-*.
+ [Python](https://www.python.org/) versi 2.7 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
+ Twilio account SID, token auth, dan nomor telepon berkemampuan Twilio. Setelah Anda membuat proyek Twilio, nilai-nilai ini tersedia dalam dasbor proyek.
**catatan**  
Anda dapat menggunakan akun percobaan Twilio. Jika menggunakan akun uji coba, Anda harus menambahkan nomor telepon penerima selain Twilio ke daftar nomor telepon terverifikasi. Untuk informasi lebih lanjut, lihat [ Cara Bekerja dengan Akun Trial Twilio Gratis](https://www.twilio.com/docs/usage/tutorials/how-to-use-your-free-trial-account).
+ <a name="conn-twilio-req-secret"></a>Rahasia tipe teks AWS Secrets Manager yang menyimpan token autentikasi Twilio. Untuk informasi lebih lanjut, lihat [Membuat rahasia dasar](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html) dalam *AWS Secrets Manager Panduan Pengguna*.
**catatan**  
Untuk membuat rahasia dalam konsol Secrets Manager, masukkan token Anda pada tab **Plaintext** ini. Jangan sertakan tanda kutip atau pemformatan lainnya. Dalam API, tentukan token sebagai nilai untuk properti `SecretString` ini.
+ Sebuah sumber daya rahasia dalam grup Greengrass yang mereferensikan rahasia Secrets Manager. Untuk informasi selengkapnya, lihat [Menyebarkan rahasia ke inti AWS IoT Greengrass](secrets.md).

------

## Parameter Konektor
<a name="twilio-notifications-connector-param"></a>

Konektor ini menyediakan parameter berikut.

------
#### [ Version 5 ]

`TWILIO_ACCOUNT_SID`  <a name="twilio-TWILIO_ACCOUNT_SID"></a>
Akun Twilio SID yang digunakan untuk memanggil Twilio API.  
Nama tampilan di AWS IoT konsol: SID akun **Twilio**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `.+`

`TwilioAuthTokenSecretArn`  <a name="twilio-TwilioAuthTokenSecretArn"></a>
ARN rahasia Secrets Manager yang menyimpan token auth Twilio.  
Ini digunakan untuk mengakses nilai rahasia lokal pada core.
Nama tampilan di AWS IoT konsol: **ARN dari rahasia token autentikasi Twilio**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `arn:aws:secretsmanager:[a-z0-9\-]+:[0-9]{12}:secret:([a-zA-Z0-9\\]+/)*[a-zA-Z0-9/_+=,.@\-]+-[a-zA-Z0-9]+`

`TwilioAuthTokenSecretArn-ResourceId`  <a name="twilio-TwilioAuthTokenSecretArn-ResourceId"></a>
ID dari sumber rahasia dalam grup Greengrass yang mereferensikan rahasia untuk token auth Twilio.  
Nama tampilan di AWS IoT konsol: Sumber daya token **autentikasi Twilio**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `.+`

`DefaultFromPhoneNumber`  <a name="twilio-DefaultFromPhoneNumber"></a>
Nomor telepon Twilio diaktifkan default yang Twilio gunakan untuk mengirim pesan. Twilio menggunakan nomor ini untuk memulai teks atau panggilan.  
+ Jika Anda tidak mengonfigurasi nomor telepon default, Anda harus menentukan nomor telepon dalam `from_number` properti dalam tubuh pesan input.
+ Jika Anda mengonfigurasi nomor telepon default, Anda dapat mengganti default secara opsional dengan menentukan `from_number` properti dalam tubuh pesan input.
Nama tampilan di AWS IoT konsol: **Default dari nomor telepon**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^$|\+[0-9]+`

`IsolationMode`  <a name="IsolationMode"></a>
Mode [kontainerisasi](connectors.md#connector-containerization) untuk konektor ini. Defaultnya adalah`GreengrassContainer`, yang berarti konektor berjalan di lingkungan runtime yang terisolasi di dalam AWS IoT Greengrass container.  
Pengaturan kontainerisasi default untuk grup tidak berlaku untuk konektor.
Nama tampilan di AWS IoT konsol: **Mode isolasi kontainer**  
Wajib: `false`  
Jenis: `string`  
Nilai yang valid: `GreengrassContainer` or `NoContainer`  
Pola yang valid: `^NoContainer$|^GreengrassContainer$`

------
#### [ Version 1 - 4 ]

`TWILIO_ACCOUNT_SID`  <a name="twilio-TWILIO_ACCOUNT_SID"></a>
Akun Twilio SID yang digunakan untuk memanggil Twilio API.  
Nama tampilan di AWS IoT konsol: SID akun **Twilio**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `.+`

`TwilioAuthTokenSecretArn`  <a name="twilio-TwilioAuthTokenSecretArn"></a>
ARN rahasia Secrets Manager yang menyimpan token auth Twilio.  
Ini digunakan untuk mengakses nilai rahasia lokal pada core.
Nama tampilan di AWS IoT konsol: **ARN dari rahasia token autentikasi Twilio**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `arn:aws:secretsmanager:[a-z0-9\-]+:[0-9]{12}:secret:([a-zA-Z0-9\\]+/)*[a-zA-Z0-9/_+=,.@\-]+-[a-zA-Z0-9]+`

`TwilioAuthTokenSecretArn-ResourceId`  <a name="twilio-TwilioAuthTokenSecretArn-ResourceId"></a>
ID dari sumber rahasia dalam grup Greengrass yang mereferensikan rahasia untuk token auth Twilio.  
Nama tampilan di AWS IoT konsol: Sumber daya token **autentikasi Twilio**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `.+`

`DefaultFromPhoneNumber`  <a name="twilio-DefaultFromPhoneNumber"></a>
Nomor telepon Twilio diaktifkan default yang Twilio gunakan untuk mengirim pesan. Twilio menggunakan nomor ini untuk memulai teks atau panggilan.  
+ Jika Anda tidak mengonfigurasi nomor telepon default, Anda harus menentukan nomor telepon dalam `from_number` properti dalam tubuh pesan input.
+ Jika Anda mengonfigurasi nomor telepon default, Anda dapat mengganti default secara opsional dengan menentukan `from_number` properti dalam tubuh pesan input.
Nama tampilan di AWS IoT konsol: **Default dari nomor telepon**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^$|\+[0-9]+`

------

### Buat Contoh Konektor (AWS CLI)
<a name="twilio-notifications-connector-create"></a>

Contoh berikut perintah CLI membuat `ConnectorDefinition` dengan versi awal yang berisi konektor Notifikasi Twilio.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyTwilioNotificationsConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/5",
            "Parameters": {
                "TWILIO_ACCOUNT_SID": "abcd12345xyz",
                "TwilioAuthTokenSecretArn": "arn:aws:secretsmanager:region:account-id:secret:greengrass-secret-hash",
                "TwilioAuthTokenSecretArn-ResourceId": "MyTwilioSecret",
                "DefaultFromPhoneNumber": "+19999999999",
                "IsolationMode" : "GreengrassContainer"
            }
        }
    ]
}'
```

Untuk tutorial yang menunjukkan cara menambahkan konektor Notifikasi Twilio ke grup, lihat [Memulai dengan konektor Greengrass (CLI)](connectors-cli.md) dan [Memulai dengan konektor Greengrass (konsol)](connectors-console.md).

## Data input
<a name="twilio-notifications-connector-data-input"></a>

Konektor ini menerima informasi pesan Twilio pada dua topik MQTT. Pesan input harus dalam format JSON.
+ Informasi pesan teks pada `twilio/txt` topik.
+ Informasi pesan telepon dalam `twilio/call` topik.

**catatan**  
Muatan pesan input dapat mencakup pesan teks (`message`) atau pesan suara (`voice_message_location`), tapi tidak keduanya.

**Filter topik: `twilio/txt`**    
**Properti pesan**    
`request`  
Informasi tentang Notifikasi Twilio.  
Wajib: `true`  
Jenis: `object` yang mencakup properti berikut:    
`recipient`  
Penerima pesan. Hanya satu penerima yang didukung.  
Wajib: `true`  
Jenis: `object` yang mencakup properti berikut:    
`name`  
Nama penerima.  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `.*`  
`phone_number`  
Nomor telepon penerima.  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `\+[1-9]+`  
`message`  
Konten teks dari pesan teks. Hanya pesan teks yang didukung pada topik ini. Untuk pesan suara, gunakan `twilio/call`.  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `.+`  
`from_number`  
Nomor telepon pengirim. Twilio menggunakan nomor telepon ini untuk memulai pesan. Properti ini diperlukan jika parameter `DefaultFromPhoneNumber` tidak dikonfigurasi. Jika `DefaultFromPhoneNumber` dikonfigurasi, Anda dapat menggunakan properti ini untuk menimpa default.  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `\+[1-9]+`  
`retries`  
Nomor retries. Default-nya adalah 0.  
Wajib: `false`  
Jenis: `integer`  
`id`  
ID arbitrer untuk permintaan. Properti ini digunakan untuk memetakan permintaan input untuk respons output.   
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `.+`  
**Contoh masukan**  

```
{
    "request": {
        "recipient": {
            "name": "Darla",
            "phone_number": "+12345000000",
            "message": "Hello from the edge"
        },
        "from_number": "+19999999999",
        "retries": 3
    },
    "id": "request123"
}
```

**Filter topik: `twilio/call`**    
**Properti pesan**    
`request`  
Informasi tentang Notifikasi Twilio.  
Wajib: `true`  
Jenis: `object` yang mencakup properti berikut:    
`recipient`  
Penerima pesan. Hanya satu penerima yang didukung.  
Wajib: `true`  
Jenis: `object` yang mencakup properti berikut:    
`name`  
Nama penerima.  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `.+`  
`phone_number`  
Nomor telepon penerima.  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `\+[1-9]+`  
`voice_message_location`  
URL konten audio untuk pesan suara. Ini harus dalam format TWIML. Hanya pesan suara yang didukung pada topik ini. Untuk pesan teks, gunakan `twilio/txt`.  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `.+`  
`from_number`  
Nomor telepon pengirim. Twilio menggunakan nomor telepon ini untuk memulai pesan. Properti ini diperlukan jika parameter `DefaultFromPhoneNumber` tidak dikonfigurasi. Jika `DefaultFromPhoneNumber` dikonfigurasi, Anda dapat menggunakan properti ini untuk menimpa default.  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `\+[1-9]+`  
`retries`  
Nomor retries. Default-nya adalah 0.  
Wajib: `false`  
Jenis: `integer`  
`id`  
ID arbitrer untuk permintaan. Properti ini digunakan untuk memetakan permintaan input untuk respons output.   
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `.+`  
**Contoh masukan**  

```
{
    "request": {
        "recipient": {
            "name": "Darla",
            "phone_number": "+12345000000",
            "voice_message_location": "https://some-public-TwiML"
        },
        "from_number": "+19999999999",
        "retries": 3
    },
    "id": "request123"
}
```

## Data output
<a name="twilio-notifications-connector-data-output"></a>

Konektor ini menerbitkan informasi status sebagai data output pada topik MQTT.

<a name="topic-filter"></a>**Filter topik dalam langganan**  
`twilio/message/status`

**Contoh keluaran: Sukses**  

```
{
    "response": {
        "status": "success",
        "payload": {
            "from_number": "+19999999999",
            "messages": {
                "message_status": "queued",
                "to_number": "+12345000000",
                "name": "Darla"
            }
        }
    },
    "id": "request123"
}
```

**Contoh keluaran: Kegagalan**  

```
{
    "response": {
        "status": "fail",
        "error_message": "Recipient name cannot be None",
        "error": "InvalidParameter",
        "payload": None
        }
    },
    "id": "request123"
}
```
Properti `payload` dalam output adalah respon dari Twilio API ketika pesan dikirim. Jika konektor mendeteksi bahwa data input tidak valid (sebagai contoh, itu tidak menentukan field input yang diperlukan), konektor mengembalikan kesalahan dan menetapkan nilai ke `None`. Berikut ini adalah contoh muatan:  

```
{
    'from_number':'+19999999999',
    'messages': {
        'name':'Darla',
        'to_number':'+12345000000',
        'message_status':'undelivered'
    }
}
```

```
{
    'from_number':'+19999999999',
    'messages': {
        'name':'Darla',
        'to_number':'+12345000000',
        'message_status':'queued'
    }
}
```

## Contoh Penggunaan
<a name="twilio-notifications-connector-usage"></a>

<a name="connectors-setup-intro"></a>Gunakan langkah-langkah tingkat tinggi berikut untuk mengatur contoh fungsi Lambda Python 3.7 yang dapat Anda gunakan untuk mencoba konektor.

**catatan**  <a name="connectors-setup-get-started-topics"></a>
[Memulai dengan konektor Greengrass (CLI)](connectors-cli.md)Topik [Memulai dengan konektor Greengrass (konsol)](connectors-console.md) dan topik berisi end-to-end langkah-langkah yang menunjukkan cara mengatur, menyebarkan, dan menguji konektor Twilio Notifications.

1. Pastikan Anda memenuhi [persyaratan](#twilio-notifications-connector-req) untuk konektor.

1. <a name="connectors-setup-function"></a>Buat dan terbitkan fungsi Lambda yang mengirimkan data input ke konektor.

   Simpan [kode contoh](#twilio-notifications-connector-usage-example) sebagai file PY. <a name="connectors-setup-function-sdk"></a>Unduh dan unzip [AWS IoT Greengrass Core SDK for Python](lambda-functions.md#lambda-sdks-core). Kemudian, buat paket zip yang berisi file PY dan folder `greengrasssdk` dalam tingkat root. Paket zip ini adalah paket deployment yang Anda unggah ke AWS Lambda.

   <a name="connectors-setup-function-publish"></a>Setelah Anda membuat fungsi Lambda Python 3.7, terbitkankan versi fungsi dan buat alias.

1. Konfigurasikan grup Greengrass Anda.

   1. <a name="connectors-setup-gg-function"></a>Tambahkan fungsi Lambda dengan aliasnya (direkomendasikan). Konfigurasikan siklus hidup Lambda sebagai berumur panjang (atau `"Pinned": true` dalam CLI).

   1. <a name="connectors-setup-secret-resource"></a>Tambahkan sumber daya rahasia yang diperlukan dan berikan akses baca ke fungsi Lambda.

   1. Tambahkan konektor dan konfigurasikan [parameter](#twilio-notifications-connector-param).

   1. Tambahkan langganan yang mengizinkan konektor untuk menerima [data input](#twilio-notifications-connector-data-input) dan mengirim [data output](#twilio-notifications-connector-data-output) pada filter topik yang didukung.
      + <a name="connectors-setup-subscription-input-data"></a>Atur fungsi Lambda sebagai sumber, konektor sebagai target, dan gunakan filter topik input yang mendukung.
      + <a name="connectors-setup-subscription-output-data"></a>Atur konektor sebagai sumber, AWS IoT Core sebagai target, dan gunakan filter topik input yang mendukung. Anda menggunakan langganan ini untuk melihat pesan status di AWS IoT konsol.

1. <a name="connectors-setup-deploy-group"></a>Men-deploy grup.

1. <a name="connectors-setup-test-sub"></a>Di AWS IoT konsol, pada halaman **Uji**, berlangganan topik data keluaran untuk melihat pesan status dari konektor. Contoh fungsi Lambda yang berumur panjang dan mulai mengirim pesan segera setelah grup dalam-deploy.

   Setelah selesai pengujian, Anda dapat mengatur siklus hidup Lambda ke sesuai permintaan (atau `"Pinned": false` dalam CLI) dan men-deploy grup. Ini menghentikan fungsi dari mengirim pesan.

### Contoh
<a name="twilio-notifications-connector-usage-example"></a>

Contoh fungsi Lambda berikut mengirimkan pesan input ke konektor. Contoh ini memicu pesan teks.

```
import greengrasssdk
import json

iot_client = greengrasssdk.client('iot-data')
TXT_INPUT_TOPIC = 'twilio/txt'
CALL_INPUT_TOPIC = 'twilio/call'

def publish_basic_message():

    txt = {
        "request": {
            "recipient" : {
                "name": "Darla",
                "phone_number": "+12345000000",
                "message": 'Hello from the edge'
            },
            "from_number" : "+19999999999"
        },
        "id" : "request123"
    }
    
    print("Message To Publish: ", txt)

    client.publish(topic=TXT_INPUT_TOPIC,
                   payload=json.dumps(txt))

publish_basic_message()

def lambda_handler(event, context):
    return
```

## Lisensi
<a name="twilio-notifications-connector-license"></a>

Konektor Notifikasi Twilio mencakup perangkat lunak/lisensi pihak ketiga berikut ini:
+ [twilio-python](https://github.com/twilio/twilio-python)/MIT

Konektor ini dirilis di bawah [Perjanjian Lisensi Perangkat lunak core Greengrass](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Changelog
<a name="twilio-notifications-connector-changelog"></a>

Tabel berikut menjelaskan perubahan dalam setiap versi konektor.


| Versi | Perubahan | 
| --- | --- | 
| 5 | <a name="isolation-mode-changelog"></a>Ditambahkan parameter `IsolationMode` untuk mengonfigurasi mode kontainerisasi untuk konektor. | 
| 4 | <a name="upgrade-runtime-py3.7"></a>Memperbarui waktu aktif Lambda untuk Python 3.7, yang mengubah persyaratan waktu aktif. | 
| 3 | Perbaiki untuk mengurangi pencatatan berlebihan. | 
| 2 | Penyempurnaan dan perbaikan bug kecil. | 
| 1 | Pelepasan awal.  | 

<a name="one-conn-version"></a>Sebuah grup Greengrass dapat berisi hanya satu versi konektor pada suatu waktu. Untuk informasi lebih lanjut tentang pembaruan versi konektor, lihat [Versi upgrade konektor](connectors.md#upgrade-connector-versions).

## Lihat juga
<a name="twilio-notifications-connector-see-also"></a>
+ [Integrasikan dengan layanan dan protokol menggunakan konektor Greengrass](connectors.md)
+ [Memulai dengan konektor Greengrass (konsol)](connectors-console.md)
+ [Memulai dengan konektor Greengrass (CLI)](connectors-cli.md)
+ [Twilio API Referensi](https://www.twilio.com/docs/api)

# Memulai dengan konektor Greengrass (konsol)
<a name="connectors-console"></a>

Fitur ini tersedia untuk AWS IoT Greengrass Core v1.7 dan yang lebih baru.

Tutorial ini menunjukkan cara menggunakan Konsol Manajemen AWS untuk bekerja dengan konektor.

Gunakan konektor untuk mempercepat siklus hidup pengembangan Anda. Konektor prebuilt, modul dapat digunakan kembali yang dapat membuatnya lebih mudah untuk berinteraksi dengan layanan, protokol, dan sumber daya. Mereka dapat membantu Anda men-deploy logika bisnis ke perangkat Greengrass lebih cepat. Untuk informasi lebih lanjut, lihat [Integrasikan dengan layanan dan protokol menggunakan konektor Greengrass](connectors.md).

Dalam tutorial ini, Anda mengkonfigurasi dan men-deploy [ konektor](twilio-notifications-connector.md) Notifikasi Twilio. Konektor menerima informasi pesan Twilio sebagai input data, dan kemudian memicu pesan teks Twilio. Aliran data ditunjukkan pada diagram berikut.

![\[Aliran data dari fungsi Lambda untuk konektor Notifikasi Twilio ke Twilio.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/connectors/twilio-solution.png)


Setelah Anda mengkonfigurasi konektor, Anda membuat fungsi Lambda dan langganan.
+ Fungsi mengevaluasi data simulasi dari sensor temperatur. Ini kondisional menerbitkan informasi pesan Twilio untuk topik MQTT. Ini adalah topik yang konektor berlangganan.
+ Langganan membolehkan fungsi untuk menerbitkan topik dan konektor untuk menerima data dari topik tersebut.

Konektor Notifikasi Twilio memerlukan token Twilio auth untuk berinteraksi dengan Twilio API. Token adalah rahasia jenis teks yang dibuat AWS Secrets Manager dan direferensikan dari sumber daya grup. Hal ini memungkinkan AWS IoT Greengrass untuk membuat salinan lokal rahasia pada inti Greengrass, di mana ia dienkripsi dan tersedia untuk konektor. Untuk informasi selengkapnya, lihat [Menyebarkan rahasia ke inti AWS IoT Greengrass](secrets.md).

Tutorial berisi langkah-langkah tingkat tinggi berikut:

1. [Buat rahasia Secrets Manager](#connectors-console-create-secret)

1. [Tambahkan sumber daya rahasia ke grup](#connectors-console-create-resource)

1. [Tambahkan konektor ke grup](#connectors-console-create-connector)

1. [Buat fungsi Lambda paket deployment](#connectors-console-create-deployment-package)

1. [Buat fungsi Lambda](#connectors-console-create-function)

1. [Tambahkan fungsi ke grup](#connectors-console-create-gg-function)

1. [Tambahkan langganan ke grup](#connectors-console-create-subscription)

1. [Men-deploy grup](#connectors-console-create-deployment)

1. [Pengujian solusi](#connectors-console-test-solution)

Tutorial akan memakan waktu sekitar 20 menit untuk menyelesaikannya.

## Prasyarat
<a name="connectors-console-prerequisites"></a>

Untuk menyelesaikan tutorial ini, Anda memerlukan:
+ Sebuah grup Greengrass dan Greengrass core (v1.9.3 atau yang lebih baru). Untuk mempelajari cara membuat grup Greengrass dan core, lihat [Memulai dengan AWS IoT Greengrass](gg-gs.md). Tutorial Memulai Dengan juga mencakup langkah-langkah untuk menginstal perangkat lunak AWS IoT Greengrass Core.
+ Python 3.7 diinstal pada perangkat inti. AWS IoT Greengrass 
+  AWS IoT Greengrass harus dikonfigurasi untuk mendukung rahasia lokal, seperti yang dijelaskan dalam [Persyaratan Rahasia](secrets.md#secrets-reqs).
**catatan**  
Persyaratan ini mencakup akses ke rahasia Secrets Manager Anda. Jika Anda menggunakan peran layanan default Greengrass, Greengrass memiliki izin untuk mendapatkan nilai-nilai rahasia dengan nama yang dimulai dengan *Greengrass-*.
+ Akun Twilio SID, token auth, dan nomor telepon berkemampuan Twilio. Setelah Anda membuat proyek Twilio, nilai-nilai ini tersedia dalam dasbor proyek.
**catatan**  
Anda dapat menggunakan akun percobaan Twilio. Jika menggunakan akun uji coba, Anda harus menambahkan nomor telepon penerima selain Twilio ke daftar nomor telepon terverifikasi. Untuk informasi lebih lanjut, lihat [ Cara Bekerja dengan Akun Uji Coba Twilio Gratis Anda](https://www.twilio.com/docs/usage/tutorials/how-to-use-your-free-trial-account).

## Langkah 1: Buat rahasia Secrets Manager
<a name="connectors-console-create-secret"></a>

Pada langkah ini, Anda menggunakan AWS Secrets Manager konsol untuk membuat rahasia jenis teks untuk token autentikasi Twilio Anda.

1. <a name="create-secret-step-signin"></a>Masuk ke [AWS Secrets Manager konsol](https://console.aws.amazon.com/secretsmanager/).
**catatan**  
Untuk informasi lebih lanjut tentang proses ini, lihat [ Langkah 1: Buat dan simpan rahasia Anda di AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/tutorials_basic.html) dalam *AWS Secrets Manager Panduan Pengguna*.

1. <a name="create-secret-step-create"></a>Pilih **Simpan rahasia baru**.

1. <a name="create-secret-step-othertype"></a>Di bawah **Pilih tipe rahasia**, pilih **Jenis rahasia lainnya**.

1. Di bawah **Tentukan key/value pasangan yang akan disimpan untuk rahasia ini**, pada tab **Plaintext**, masukkan token autentikasi Twilio Anda. Hapus semua format JSON dan masukkan hanya nilai token.

1. <a name="create-secret-step-encryption"></a>**Tetap pilih **aws/secretsmanager** untuk kunci enkripsi, lalu pilih Berikutnya.**
**catatan**  
Anda tidak dikenakan biaya AWS KMS jika menggunakan kunci AWS terkelola default yang dibuat Secrets Manager di akun Anda.

1. Untuk **Nama rahasia**, masukkan **greengrass-TwilioAuthToken**, dan pilih **Selanjutnya**.
**catatan**  
*Secara default, peran layanan Greengrass AWS IoT Greengrass memungkinkan untuk mendapatkan nilai rahasia dengan nama yang dimulai dengan greengrass-.* Untuk informasi lebih lanjut, lihat [persyaratan rahasia](secrets.md#secrets-reqs).

1. <a name="create-secret-step-rotation"></a>Tutorial ini tidak memerlukan rotasi, jadi pilih nonaktifkan rotasi otomatis, lalu pilih **Berikutnya**.

1. <a name="create-secret-step-review"></a>Pada halaman **Tinjauan** tersebut, tinjau pengaturan Anda, dan kemudian pilih **Menyimpan**.

   Selanjutnya, Anda membuat sumber daya rahasia dalam grup Greengrass Anda yang mereferensi rahasia.

## Langkah 2: Menambahkan sumber daya rahasia ke grup Greengrass
<a name="connectors-console-create-resource"></a>

Pada langkah ini, Anda tambahkan *sumber daya rahasia* ke grup Greengrass. Sumber daya ini adalah referensi rahasia yang Anda buat pada langkah sebelumnya.

1. <a name="console-gg-groups"></a>**Di panel navigasi AWS IoT konsol, di bawah **Kelola**, perluas perangkat **Greengrass**, lalu pilih Grup (V1).**

1. <a name="create-secret-resource-step-choosegroup"></a>Pilih grup yang ingin Anda tambahkan sumber daya rahasia.

1. <a name="create-secret-resource-step-secretstab"></a>Pada halaman konfigurasi grup, pilih tab **Sumber Daya**, lalu gulir ke bawah ke bagian **Rahasia**. Bagian **Rahasia** menampilkan sumber daya rahasia milik grup. Anda dapat menambahkan, mengedit, dan menghapus sumber daya rahasia dari bagian ini.
**catatan**  
Sebagai alternatif, konsol tersebut mengizinkan Anda membuat sumber rahasia dan rahasia saat Anda mengonfigurasi konektor atau fungsi Lambda. Anda dapat melakukan hal ini dari konektor halaman **Mengonfigurasi parameter** atau fungsi Lambda halaman **Sumber Daya** ini.

1. <a name="create-secret-resource-step-addsecretresource"></a>Pilih **Tambah** di bawah bagian **Rahasia**.

1. Pada halaman **Tambahkan sumber daya rahasia**, masukkan **MyTwilioAuthToken** untuk **nama Sumber Daya**.

1. Untuk **Rahasia**, pilih **greengrass-**. TwilioAuthToken

1. <a name="create-secret-resource-step-selectlabels"></a>Di bagian **Pilih label (Opsional)**, label AWSCURRENT pementasan mewakili versi terbaru dari rahasia. Label ini selalu disertakan dalam sumber rahasia.
**catatan**  
Tutorial ini hanya membutuhkan AWSCURRENT label. Anda dapat secara opsional menyertakan label yang diperlukan oleh fungsi Lambda atau konektor.

1. Pilih **Tambahkan sumber daya**.

## Langkah 3: Tambahkan konektor ke grup Greengrass
<a name="connectors-console-create-connector"></a>

Pada langkah ini, Anda mengkonfigurasi parameter untuk [konektor Notifikasi Twilio](twilio-notifications-connector.md) dan menambahkannya ke grup.

1. Pada halaman konfigurasi grup, pilih **Konektor**, dan lalu pilih **Menambahkan konektor**.

1. Pada halaman **Tambah konektor**, pilih **Twilio** Notifications.

1. Pilih versinya.

1. Di bagian **Konfigurasi**:
   + Untuk **sumber daya token autentikasi Twilio**, masukkan sumber daya yang Anda buat di langkah sebelumnya.
**catatan**  
Saat Anda memasukkan sumber daya, **ARN properti rahasia token autentikasi Twilio** diisi untuk Anda.
   + Untuk **Default dari nomor telepon**, masukkan nomor telepon berkemampuan Twilio Anda.
   + Untuk **akun Twilio SID**, masukkan akun Twilio SID Anda.

1. Pilih **Tambahkan sumber daya**.

## Langkah 4: Buat fungsi Lambda paket deployment
<a name="connectors-console-create-deployment-package"></a>

Untuk membuat fungsi Lambda, Anda harus terlebih dahulu membuat fungsi Lambda *paket deployment* yang berisi kode fungsi dan dependensi. Fungsi Greengrass Lambda membutuhkan [AWS IoT Greengrass Core SDK](lambda-functions.md#lambda-sdks-core) untuk tugas seperti berkomunikasi dengan pesan MQTT di lingkungan core dan mengakses rahasia lokal. Tutorial ini membuat fungsi Python, sehingga Anda menggunakan versi Python dari SDK dalam paket deployment.

1. <a name="download-ggc-sdk"></a> Dari halaman unduhan [AWS IoT Greengrass Core SDK](what-is-gg.md#gg-core-sdk-download), unduh AWS IoT Greengrass Core SDK untuk Python ke komputer Anda.

1. <a name="unzip-ggc-sdk"></a>Unzip paket yang diunduh untuk mendapatkan SDK. SDK adalah folder `greengrasssdk` tersebut.

1. Simpan fungsi kode Python berikut dalam sebuah file lokal bernama `temp_monitor.py`.

   ```
   import greengrasssdk
   import json
   import random
   
   client = greengrasssdk.client('iot-data')
   
   # publish to the Twilio Notifications connector through the twilio/txt topic
   def function_handler(event, context):
       temp = event['temperature']
       
       # check the temperature
       # if greater than 30C, send a notification
       if temp > 30:
           data = build_request(event)
           client.publish(topic='twilio/txt', payload=json.dumps(data))
           print('published:' + str(data))
           
       print('temperature:' + str(temp))
       return
   
   # build the Twilio request from the input data
   def build_request(event):
       to_name = event['to_name']
       to_number = event['to_number']
       temp_report = 'temperature:' + str(event['temperature'])
   
       return {
           "request": {
               "recipient": {
                   "name": to_name,
                   "phone_number": to_number,
                   "message": temp_report
               }
           },
           "id": "request_" + str(random.randint(1,101))
       }
   ```

1. Zip item berikut ke dalam file bernama `temp_monitor_python.zip`. Saat membuat file ZIP, sertakan hanya kode dan dependensi, bukan folder yang berisi.
   + **temp\$1monitor.py**. Aplikasi logic.
   + **greengrasssdk**. Diperlukan perpustakaan untuk fungsi Python Greengrass Lambda yang menerbitkan pesan MQTT.

   Ini adalah paket deployment fungsi Lambda Anda.

Sekarang, buat fungsi Lambda yang menggunakan paket deployment.

## Langkah 5: Buat fungsi Lambda di konsol AWS Lambda
<a name="connectors-console-create-function"></a>

Pada langkah ini, Anda menggunakan AWS Lambda konsol untuk membuat fungsi Lambda dan mengonfigurasinya untuk menggunakan paket penerapan Anda. Kemudian, Anda mempublikasikan versi fungsi dan membuat alias.

1. Pertama, buat fungsi Lambda.

   1. <a name="lambda-console-open"></a>Di Konsol Manajemen AWS, pilih **Layanan**, dan buka AWS Lambda konsol.

   1. <a name="lambda-console-create-function"></a>Pilih **Buat fungsi** dan kemudian **Tulis dari awal**.

   1. Di bagian **Informasi dasar** tersebut, gunakan nilai-nilai berikut:
      + Untuk **Nama fungsi**, masukkan **TempMonitor**.
      + Untuk **Waktu pengoperasian**, pilih **Python 3.7**.
      + Untuk **Izin**, pertahankan pengaturan default. Hal ini menciptakan peran eksekusi yang memberikan izin Lambda basic. Peran ini tidak digunakan oleh AWS IoT Greengrass

   1. <a name="lambda-console-save-function"></a>Di bagian bawah halaman, pilih **Buat Fungsi**.

1. Selanjutnya, daftarkan handler dan unggah paket deployment fungsi Lambda Anda.

   1. <a name="lambda-console-upload"></a>Pada tab **Kode** ini, di bawah **Sumber kode**, pilih **Unggah dari**. Dari dropdown, pilih **file .zip**.  
![\[Unggah dari dropdown dengan file .zip disorot.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/lra-console/upload-deployment-package.png)

   1. Pilih **Unggah**, lalu pilih paket deployment `temp_monitor_python.zip` Anda. Lalu, pilih **Simpan**.

   1. <a name="lambda-console-runtime-settings-para"></a>Pada tab **Kode** fungsi, di bawah **Pengaturan waktu aktif**, pilih **Edit**, dan kemudian masukkan nilai-nilai berikut.
      + Untuk **Waktu pengoperasian**, pilih **Python 3.7**.
      + Untuk **Handler**, masukkan **temp\$1monitor.function\$1handler**

   1. <a name="lambda-console-save-config"></a>Pilih **Simpan**.
**catatan**  
Tombol **Uji** di AWS Lambda konsol tidak berfungsi dengan fungsi ini. AWS IoT Greengrass Core SDK tidak berisi modul yang diperlukan untuk menjalankan fungsi Greengrass Lambda Anda secara independen di konsol. AWS Lambda Modul-modul ini (misalnya, `greengrass_common`) dipasok ke fungsi setelah mereka di-deploy ke core Greengrass Anda.

1. Sekarang, publikasikan versi pertama fungsi Lambda Anda dan membuat [alias untuk versi](https://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html).
**catatan**  
Grup Greengrass dapat mereferensi fungsi Lambda dengan alias (direkomendasikan) atau dengan versi. Menggunakan alias membuatnya lebih mudah untuk mengelola pembaruan kode karena Anda tidak perlu mengubah tabel langganan atau definisi grup ketika kode fungsi diperbarui. Sebaliknya, Anda hanya mengarahkan alias ke versi fungsi baru.

   1. <a name="shared-publish-function-version"></a>Dari menu **Tindakan** ini, pilih **Terbitkan versi baru**.

   1. <a name="shared-publish-function-version-description"></a>Untuk **Versi Deskripsi**, masukkan **First version**, lalu pilih **Publikasikan**.

   1. Pada halaman konfigurasi **TempMonitor: 1**, dari menu **Tindakan**, pilih **Buat alias**.

   1. Pada halaman **Buat alias baru** ini, gunakan nilai-nilai berikut:
      + Untuk **Nama**, masukkan **GG\$1TempMonitor**.
      + Untuk **Versi**, pilih **1**.
**catatan**  
AWS IoT Greengrass **tidak mendukung alias Lambda untuk versi \$1LATEST.**

   1. Pilih **Buat**.

Sekarang Anda siap untuk menambahkan fungsi Lambda ke grup Greengrass Anda.

## Langkah 6: Tambahkan fungsi Lambda ke grup Greengrass
<a name="connectors-console-create-gg-function"></a>

Dalam langkah ini, Anda menambahkan fungsi Lambda ke grup lalu mengonfigurasi siklus hidup dan lingkungan variabel. Untuk informasi selengkapnya, lihat [Mengontrol eksekusi fungsi Greengrass Lambda dengan menggunakan konfigurasi grup khusus](lambda-group-config.md).

1. <a name="choose-add-lambda"></a>Pada halaman konfigurasi grup, pilih tab **fungsi Lambda**.

1. **Di bawah **fungsi Lambda Saya**, pilih Tambah.**

1. Pada halaman **fungsi Add Lambda, pilih **TempMonitor**fungsi** Lambda Anda.

1. Untuk **versi fungsi Lambda**, pilih **Alias**: GG\$1. TempMonitor

1. Pilih **Tambahkan fungsi Lambda**.

## Langkah 7: Menambahkan langganan ke grup Greengrass
<a name="connectors-console-create-subscription"></a>

<a name="connectors-how-to-add-subscriptions-p1"></a>Pada langkah ini, Anda menambahkan langganan yang memungkinkan fungsi Lambda untuk mengirim input data ke konektor. Konektor mendefinisikan topik MQTT yang berlangganan, jadi langganan ini menggunakan salah satu topik. Ini adalah topik yang sama bahwa fungsi contoh menerbitkan.

<a name="connectors-how-to-add-subscriptions-p2"></a>Untuk tutorial ini, Anda juga membuat langganan yang memungkinkan fungsi menerima pembacaan suhu simulasi dari AWS IoT dan memungkinkan AWS IoT untuk menerima informasi status dari konektor.

1. <a name="shared-subscriptions-addsubscription"></a>Pada halaman konfigurasi grup, pilih tab **Langganan**, lalu pilih **Tambah Langganan**.

1. Pada halaman **Buat langganan**, konfigurasikan sumber dan target, sebagai berikut:

   1. Untuk **tipe Sumber**, pilih **fungsi Lambda**, lalu pilih. **TempMonitor**

   1. Untuk **tipe Target**, pilih **Connector**, lalu pilih **Twilio** Notifications.

1. Untuk **filter Topik**, pilih**twilio/txt**.

1. Pilih **Buat langganan**.

1. Ulangi langkah 1 - 4 untuk membuat langganan yang memungkinkan AWS IoT untuk mempublikasikan pesan ke fungsi.

   1. Untuk **jenis Sumber**, pilih **Layanan**, lalu pilih **IoT Cloud**.

   1. Untuk **Pilih target**, pilih **fungsi Lambda**, lalu pilih. **TempMonitor**

   1. Untuk **Filter topik**, masukkan **temperature/input**.

1. Ulangi langkah 1 - 4 untuk membuat langganan yang membolehkan konektor menerbitkan pesan AWS IoT.

   1. Untuk **tipe Source**, pilih **Connector**, lalu pilih **Twilio** Notifications.

   1. Untuk **jenis Target**, pilih **Layanan**, lalu pilih **IoT Cloud**.

   1. Untuk **filter Topik**, **twilio/message/status** dimasukkan untuk Anda. Ini adalah topik yang telah ditetapkan yang diterbitkan oleh konektor.

## Langkah 8: Men-deploy grup Greengrass
<a name="connectors-console-create-deployment"></a>

Men-deploy grup ke perangkat core.

1. <a name="shared-deploy-group-checkggc"></a>Pastikan AWS IoT Greengrass inti sedang berjalan. Jalankan perintah berikut di terminal Raspberry Pi Anda, sesuai kebutuhan.

   1. Untuk memeriksa apakah daemon sedang berjalan:

      ```
      ps aux | grep -E 'greengrass.*daemon'
      ```

      Jika outputnya berisi entri `root` untuk `/greengrass/ggc/packages/ggc-version/bin/daemon`, maka daemon sedang berjalan.
**catatan**  
Versi di jalur tergantung pada versi perangkat lunak AWS IoT Greengrass Core yang diinstal pada perangkat inti Anda.

   1. Untuk memulai daemon:

      ```
      cd /greengrass/ggc/core/
      sudo ./greengrassd start
      ```

1. <a name="shared-deploy-group-deploy"></a>Pada halaman konfigurasi grup, pilih **Deploy**.

1. <a name="shared-deploy-group-ipconfig"></a>

   1. **Di tab **Fungsi Lambda, di bawah bagian Fungsi** **Lambda Sistem**, pilih **detektor IP** dan pilih Edit.**

   1. Dalam kotak dialog **Edit pengaturan detektor IP**, pilih **Secara otomatis mendeteksi dan mengganti titik akhir broker MQTT**.

   1. Pilih **Simpan**.

      Hal ini mengaktifkan perangkat untuk secara otomatis memperoleh informasi konektivitas untuk core, seperti alamat IP, DNS, dan nomor port. Deteksi otomatis direkomendasikan, tetapi AWS IoT Greengrass juga mendukung titik akhir yang ditentukan secara manual. Anda hanya diminta untuk metode penemuan pertama kalinya bahwa grup di-deploy.
**catatan**  
Jika diminta, berikan izin untuk membuat peran layanan [Greengrass dan kaitkan dengan peran layanan](service-role.md) Anda saat ini. Akun AWS Wilayah AWS Peran ini memungkinkan AWS IoT Greengrass untuk mengakses sumber daya Anda dalam AWS layanan.

      Halaman **Deployment** menampilkan timestamp deployment, ID versi, dan status. Setelah selesai, status yang ditampilkan untuk penerapan harus **Selesai**.

      Untuk langkah-langkah penyelesaian masalah, lihat [Pemecahan masalah AWS IoT Greengrass](gg-troubleshooting.md).

**catatan**  
<a name="one-conn-version"></a>Sebuah grup Greengrass dapat berisi hanya satu versi dari konektor pada suatu waktu. Untuk informasi tentang peningkatan versi konektor, lihat [Versi upgrade konektor](connectors.md#upgrade-connector-versions).

## Pengujian solusi
<a name="connectors-console-test-solution"></a>

1. <a name="choose-test-page"></a>Di halaman beranda AWS IoT konsol, pilih **Uji**.

1. Untuk **Berlangganan topik**, gunakan nilai berikut, dan lalu pilih **Langganan**. Konektor Notifikasi Twilio menerbitkan informasi status untuk topik ini.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/connectors-console.html)

1. Untuk **Publikasikan ke topik**, gunakan nilai-nilai berikut, dan kemudian pilih **Publikasikan** untuk memanggil fungsi.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/connectors-console.html)

   Jika berhasil, penerima menerima pesan teks dan konsol menampilkan `success` status dari [output data](twilio-notifications-connector.md#twilio-notifications-connector-data-output).

   Sekarang, ubah `temperature` dalam pesan input untuk **29** dan terbitkan. Karena ini kurang dari 30, TempMonitor fungsinya tidak memicu pesan Twilio.

## Lihat juga
<a name="connectors-console-see-also"></a>
+ [Integrasikan dengan layanan dan protokol menggunakan konektor Greengrass](connectors.md)
+  [AWS-disediakan konektor Greengrass](connectors-list.md)

# Memulai dengan konektor Greengrass (CLI)
<a name="connectors-cli"></a>

Fitur ini tersedia untuk AWS IoT Greengrass Core v1.7 dan yang lebih baru.

Tutorial ini menunjukkan cara menggunakan AWS CLI untuk bekerja dengan konektor.

Gunakan konektor untuk mempercepat siklus hidup pengembangan Anda. Konektor prebuilt, modul dapat digunakan kembali yang dapat membuatnya lebih mudah untuk berinteraksi dengan layanan, protokol, dan sumber daya. Mereka dapat membantu Anda men-deploy logika bisnis ke perangkat Greengrass lebih cepat. Untuk informasi lebih lanjut, lihat [Integrasikan dengan layanan dan protokol menggunakan konektor Greengrass](connectors.md).

Dalam tutorial ini, Anda mengkonfigurasi dan men-deploy [ konektor](twilio-notifications-connector.md) Notifikasi Twilio. Konektor menerima informasi pesan Twilio sebagai input data, dan kemudian memicu pesan teks Twilio. Aliran data ditunjukkan pada diagram berikut.

![\[Aliran data dari fungsi Lambda untuk konektor Notifikasi Twilio ke Twilio.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/connectors/twilio-solution.png)


Setelah Anda mengkonfigurasi konektor, Anda membuat fungsi Lambda dan langganan.
+ Fungsi mengevaluasi data simulasi dari sensor temperatur. Ini kondisional menerbitkan informasi pesan Twilio untuk topik MQTT. Ini adalah topik yang konektor berlangganan.
+ Langganan membolehkan fungsi untuk menerbitkan topik dan konektor untuk menerima data dari topik tersebut.

Konektor Notifikasi Twilio memerlukan token Twilio auth untuk berinteraksi dengan Twilio API. Token adalah rahasia jenis teks yang dibuat AWS Secrets Manager dan direferensikan dari sumber daya grup. Hal ini memungkinkan AWS IoT Greengrass untuk membuat salinan lokal rahasia pada inti Greengrass, di mana ia dienkripsi dan tersedia untuk konektor. Untuk informasi selengkapnya, lihat [Menyebarkan rahasia ke inti AWS IoT Greengrass](secrets.md).

Tutorial berisi langkah-langkah tingkat tinggi berikut:

1. [Buat rahasia Secrets Manager](#connectors-cli-create-secret)

1. [Buat definisi sumber daya dan versi](#connectors-cli-create-resource-definition)

1. [Buat definisi konektor dan versi](#connectors-cli-create-connector-definition)

1. [Buat fungsi Lambda paket deployment](#connectors-cli-create-deployment-package)

1. [Buat fungsi Lambda](#connectors-cli-create-function)

1. [Buat definisi fungsi dan versi](#connectors-cli-create-function-definition)

1. [Buat definisi langganan dan versi](#connectors-cli-create-subscription-definition)

1. [Buat versi grup](#connectors-cli-create-group-version)

1. [Buat deployment](#connectors-cli-create-deployment)

1. [Uji solusi](#connectors-cli-test-solution)

Tutorial harus memerlukan waktu sekitar 30 menit untuk menyelesaikannya.

**Menggunakan AWS IoT Greengrass API**

Hal itu sangat membantu untuk memahami pola berikut ketika Anda bekerja dengan grup Greengrass dan komponen grup (misalnya, konektor, fungsi, dan sumber daya dalam grup).
+ Di bagian atas hirarki, komponen memiliki *definisi* objek yang merupakan wadah untuk *versi* objek. Sebaliknya, versi adalah kotak untuk penyambung, fungsi, atau jenis komponen lain.
+ Ketika Anda menerapkan ke Greengrass core, Anda menerapkan versi grup tertentu. Versi grup dapat berisi satu versi dari setiap jenis komponen. Core diperlukan, tetapi yang lain disertakan sesuai kebutuhan.
+ Versi tidak berubah, jadi Anda harus membuat versi baru ketika Anda ingin membuat perubahan. 

**Tip**  
Jika Anda menerima kesalahan saat menjalankan AWS CLI perintah, tambahkan `--debug` parameter dan kemudian jalankan kembali perintah untuk mendapatkan informasi lebih lanjut tentang kesalahan tersebut.

 AWS IoT Greengrass API memungkinkan Anda membuat beberapa definisi untuk tipe komponen. Sebagai contoh, Anda dapat membuat `FunctionDefinition` objek setiap kali Anda membuat `FunctionDefinitionVersion`, atau Anda dapat tambahkan versi baru ke definisi yang ada. Fleksibilitas ini membolehkan Anda untuk menyesuaikan sistem manajemen versi Anda.

## Prasyarat
<a name="connectors-cli-prerequisites"></a>

Untuk menyelesaikan tutorial ini, Anda memerlukan:
+ Sebuah grup Greengrass dan Greengrass core (v1.9.3 atau yang lebih baru). Untuk mempelajari cara membuat grup Greengrass dan core, lihat [Memulai dengan AWS IoT Greengrass](gg-gs.md). Tutorial Memulai Dengan juga mencakup langkah-langkah untuk menginstal perangkat lunak AWS IoT Greengrass Core.
+ Python 3.7 diinstal pada perangkat inti. AWS IoT Greengrass 
+  AWS IoT Greengrass harus dikonfigurasi untuk mendukung rahasia lokal, seperti yang dijelaskan dalam [Persyaratan Rahasia](secrets.md#secrets-reqs).
**catatan**  
Persyaratan ini mencakup akses ke rahasia Secrets Manager Anda. Jika Anda menggunakan peran layanan default Greengrass, Greengrass memiliki izin untuk mendapatkan nilai-nilai rahasia dengan nama yang dimulai dengan *Greengrass-*.
+ Akun Twilio SID, token auth, dan nomor telepon berkemampuan Twilio. Setelah Anda membuat proyek Twilio, nilai-nilai ini tersedia dalam dasbor proyek.
**catatan**  
Anda dapat menggunakan akun percobaan Twilio. Jika menggunakan akun uji coba, Anda harus menambahkan nomor telepon penerima selain Twilio ke daftar nomor telepon terverifikasi. Untuk informasi lebih lanjut, lihat [ Cara Bekerja dengan Akun Trial Twilio Gratis](https://www.twilio.com/docs/usage/tutorials/how-to-use-your-free-trial-account).
+ AWS CLI diinstal dan dikonfigurasi di komputer Anda. Untuk informasi lebih lanjut, lihat [Menginstal AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) dan [Mengonfigurasi AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) di *AWS Command Line Interface Panduan Pengguna*.

   

  Contoh dalam tutorial ini ditulis untuk Linux dan sistem berbasis Unix lainnya. Jika Anda menggunakan Windows, lihat [Menentukan nilai parameter untuk AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-using-param.html) untuk memelajari perbedaan sintaks.

  Jika perintah berisi string JSON, tutorial memberikan contoh yang memiliki JSON pada satu baris. Pada beberapa sistem, mungkin lebih mudah untuk mengedit dan menjalankan perintah menggunakan format ini.

## Langkah 1: Buat rahasia Secrets Manager
<a name="connectors-cli-create-secret"></a>

Pada langkah ini, Anda menggunakan AWS Secrets Manager API untuk membuat rahasia token autentikasi Twilio Anda.

1. Pertama, buat rahasia.
   + Ganti *twilio-auth-token* dengan token autentikasi Twilio Anda.

   ```
   aws secretsmanager create-secret --name greengrass-TwilioAuthToken --secret-string twilio-auth-token
   ```
**catatan**  
*Secara default, peran layanan Greengrass AWS IoT Greengrass memungkinkan untuk mendapatkan nilai rahasia dengan nama yang dimulai dengan greengrass-.* Untuk informasi lebih lanjut, lihat [rahasia persyaratan](secrets.md#secrets-reqs).

1. Salin `ARN` rahasia dari output. Anda menggunakan ini untuk membuat sumber daya rahasia dan mengkonfigurasi konektor Notifikasi Twilio.

## Langkah 2: Buat definisi sumber daya dan versi
<a name="connectors-cli-create-resource-definition"></a>

Pada langkah ini, Anda menggunakan AWS IoT Greengrass API untuk membuat sumber daya rahasia untuk rahasia Secrets Manager Anda.

1. Buat definisi sumber daya yang mencakup versi awal.
   + Ganti *secret-arn* dengan rahasia yang Anda salin di langkah sebelumnya. `ARN`

    

------
#### [ JSON Expanded ]

   ```
   aws greengrass create-resource-definition --name MyGreengrassResources --initial-version '{
       "Resources": [
           {
               "Id": "TwilioAuthToken",
               "Name": "MyTwilioAuthToken",
               "ResourceDataContainer": {
                   "SecretsManagerSecretResourceData": {
                       "ARN": "secret-arn"
                   }
               }
           }
       ]
   }'
   ```

------
#### [ JSON Single-line ]

   ```
   aws greengrass create-resource-definition \
   --name MyGreengrassResources \
   --initial-version '{"Resources": [{"Id": "TwilioAuthToken", "Name": "MyTwilioAuthToken", "ResourceDataContainer": {"SecretsManagerSecretResourceData": {"ARN": "secret-arn"}}}]}'
   ```

------

1. Salin `LatestVersionArn` definisi sumber daya dari output. Anda menggunakan nilai ini untuk menambahkan versi definisi sumber daya untuk versi grup yang Anda terapkan ke core.

## Langkah 3: Buat definisi konektor dan versi
<a name="connectors-cli-create-connector-definition"></a>

Dalam langkah ini, Anda mengkonfigurasi parameter untuk konektor Pemberitahuan Twilio.

1. Buat definisi konektor dengan versi awal.
   + Ganti *account-sid* dengan SID akun Twilio Anda.
   + Ganti *secret-arn* dengan `ARN` rahasia Secrets Manager Anda. Konektor menggunakan ini untuk mendapatkan nilai dari rahasia lokal.
   + Ganti *phone-number* dengan nomor telepon berkemampuan Twilio Anda. Twilio menggunakan ini untuk memulai pesan teks. Hal ini dapat diganti dalam muatan pesan masukan. Gunakan format berikut: `+19999999999`.

    

------
#### [ JSON Expanded ]

   ```
   aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
       "Connectors": [
           {
               "Id": "MyTwilioNotificationsConnector",
               "ConnectorArn": "arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/4",
               "Parameters": {
                   "TWILIO_ACCOUNT_SID": "account-sid",
                   "TwilioAuthTokenSecretArn": "secret-arn",
                   "TwilioAuthTokenSecretArn-ResourceId": "TwilioAuthToken",
                   "DefaultFromPhoneNumber": "phone-number"
               }
           }
       ]
   }'
   ```

------
#### [ JSON Single-line ]

   ```
   aws greengrass create-connector-definition \
   --name MyGreengrassConnectors \
   --initial-version '{"Connectors": [{"Id": "MyTwilioNotificationsConnector", "ConnectorArn": "arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/4", "Parameters": {"TWILIO_ACCOUNT_SID": "account-sid", "TwilioAuthTokenSecretArn": "secret-arn", "TwilioAuthTokenSecretArn-ResourceId": "TwilioAuthToken", "DefaultFromPhoneNumber": "phone-number"}}]}'
   ```

------
**catatan**  
`TwilioAuthToken` adalah ID yang Anda gunakan dalam langkah sebelumnya untuk membuat sumber daya rahasia.

1. Salin `LatestVersionArn` definisi konektor dari output. Anda menggunakan nilai ini untuk menambahkan versi definisi konektor ke versi grup yang Anda terapkan ke core.

## Langkah 4: Buat fungsi Lambda paket deployment
<a name="connectors-cli-create-deployment-package"></a>

Untuk membuat fungsi Lambda, Anda harus terlebih dahulu membuat fungsi Lambda *paket deployment* yang berisi kode fungsi dan dependensi. Fungsi Greengrass Lambda membutuhkan [AWS IoT Greengrass Core SDK](lambda-functions.md#lambda-sdks-core) untuk tugas seperti berkomunikasi dengan pesan MQTT di lingkungan core dan mengakses rahasia lokal. Tutorial ini membuat fungsi Python, sehingga Anda menggunakan versi Python dari SDK dalam paket deployment.

1. <a name="download-ggc-sdk"></a> Dari halaman unduhan [AWS IoT Greengrass Core SDK](what-is-gg.md#gg-core-sdk-download), unduh AWS IoT Greengrass Core SDK untuk Python ke komputer Anda.

1. <a name="unzip-ggc-sdk"></a>Unzip paket yang diunduh untuk mendapatkan SDK. SDK adalah folder `greengrasssdk` tersebut.

1. Simpan fungsi kode Python berikut dalam sebuah file lokal bernama `temp_monitor.py`.

   ```
   import greengrasssdk
   import json
   import random
   
   client = greengrasssdk.client('iot-data')
   
   # publish to the Twilio Notifications connector through the twilio/txt topic
   def function_handler(event, context):
       temp = event['temperature']
       
       # check the temperature
       # if greater than 30C, send a notification
       if temp > 30:
           data = build_request(event)
           client.publish(topic='twilio/txt', payload=json.dumps(data))
           print('published:' + str(data))
           
       print('temperature:' + str(temp))
       return
   
   # build the Twilio request from the input data
   def build_request(event):
       to_name = event['to_name']
       to_number = event['to_number']
       temp_report = 'temperature:' + str(event['temperature'])
   
       return {
           "request": {
               "recipient": {
                   "name": to_name,
                   "phone_number": to_number,
                   "message": temp_report
               }
           },
           "id": "request_" + str(random.randint(1,101))
       }
   ```

1. Zip item berikut ke dalam file bernama `temp_monitor_python.zip`. Saat membuat file ZIP, sertakan hanya kode dan dependensi, bukan folder yang berisi.
   + **temp\$1monitor.py**. Aplikasi logic.
   + **greengrasssdk**. Diperlukan perpustakaan untuk fungsi Python Greengrass Lambda yang menerbitkan pesan MQTT.

   Ini adalah paket deployment fungsi Lambda Anda.

## Langkah 5: Buat fungsi Lambda
<a name="connectors-cli-create-function"></a>

Sekarang, buat fungsi Lambda yang menggunakan paket deployment.

1. <a name="cli-create-empty-lambda-role"></a>Buat IAM role sehingga Anda dapat lulus dalam peran ARN ketika Anda membuat fungsi.

------
#### [ JSON Expanded ]

   ```
   aws iam create-role --role-name Lambda_empty --assume-role-policy '{
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "lambda.amazonaws.com"
               },
              "Action": "sts:AssumeRole"
           }
       ]
   }'
   ```

------
#### [ JSON Single-line ]

   ```
   aws iam create-role --role-name Lambda_empty --assume-role-policy '{"Version": "2012-10-17",		 	 	  "Statement": [{"Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"},"Action": "sts:AssumeRole"}]}'
   ```

------
**catatan**  
AWS IoT Greengrass tidak menggunakan peran ini karena izin untuk fungsi Lambda Greengrass Anda ditentukan dalam peran grup Greengrass. Untuk tutorial ini, Anda membuat peran kosong.

1. <a name="cli-copy-lambda-role-arn"></a>Salin `Arn` dari output.

1. Gunakan AWS Lambda API untuk membuat TempMonitor fungsi. Perintah berikut mengasumsikan bahwa file zip dalam direktori saat ini.
   + Ganti *role-arn* dengan `Arn` yang Anda salin.

   ```
   aws lambda create-function \
   --function-name TempMonitor \
   --zip-file fileb://temp_monitor_python.zip \
   --role role-arn \
   --handler temp_monitor.function_handler \
   --runtime python3.7
   ```

1. Mempublikasikan versi fungsi.

   ```
   aws lambda publish-version --function-name TempMonitor --description 'First version'
   ```

1. Buat alias untuk versi yang dipublikasikan.

   Grup Greengrass dapat mereferensi fungsi Lambda dengan alias (direkomendasikan) atau dengan versi. Menggunakan alias membuatnya lebih mudah untuk mengelola pembaruan kode karena Anda tidak perlu mengubah tabel langganan atau definisi grup ketika kode fungsi diperbarui. Sebaliknya, Anda hanya mengarahkan alias ke versi fungsi baru.
**catatan**  
AWS IoT Greengrass **tidak mendukung alias Lambda untuk versi \$1LATEST.**

   ```
   aws lambda create-alias --function-name TempMonitor --name GG_TempMonitor --function-version 1
   ```

1. Salin `AliasArn` dari output. Anda menggunakan nilai ini saat mengonfigurasi fungsi untuk AWS IoT Greengrass dan saat Anda membuat langganan.

Sekarang Anda siap untuk mengkonfigurasi fungsi untuk AWS IoT Greengrass.

## Langkah 6: Buat definisi fungsi dan versi
<a name="connectors-cli-create-function-definition"></a>

Untuk menggunakan fungsi Lambda pada AWS IoT Greengrass inti, Anda membuat versi definisi fungsi yang mereferensikan fungsi Lambda dengan alias dan mendefinisikan konfigurasi tingkat grup. Untuk informasi selengkapnya, lihat [Mengontrol eksekusi fungsi Greengrass Lambda dengan menggunakan konfigurasi grup khusus](lambda-group-config.md).

1. Buat definisi fungsi yang mencakup versi awal.
   + Ganti *alias-arn* dengan `AliasArn` yang Anda salin saat Anda membuat alias.

    

------
#### [ JSON Expanded ]

   ```
   aws greengrass create-function-definition --name MyGreengrassFunctions --initial-version '{
       "Functions": [
           {
               "Id": "TempMonitorFunction",
               "FunctionArn": "alias-arn",
               "FunctionConfiguration": {
                   "Executable": "temp_monitor.function_handler",
                   "MemorySize": 16000,
                   "Timeout": 5
               }
           }
       ]
   }'
   ```

------
#### [ JSON Single-line ]

   ```
   aws greengrass create-function-definition \
   --name MyGreengrassFunctions \
   --initial-version '{"Functions": [{"Id": "TempMonitorFunction", "FunctionArn": "alias-arn", "FunctionConfiguration": {"Executable": "temp_monitor.function_handler", "MemorySize": 16000,"Timeout": 5}}]}'
   ```

------

1. Salin `LatestVersionArn` dari output. Anda menggunakan nilai ini untuk menambahkan versi definisi fungsi untuk versi grup yang Anda terapkan ke inti.

1. Salin `Id` dari output. Anda menggunakan nilai ini kemudian ketika Anda memperbarui fungsi.

## Langkah 7: Buat definisi langganan dan versi
<a name="connectors-cli-create-subscription-definition"></a>

<a name="connectors-how-to-add-subscriptions-p1"></a>Pada langkah ini, Anda tambahkan langganan yang memungkinkan fungsi Lambda untuk mengirim input data ke konektor. Konektor mendefinisikan topik MQTT yang berlangganan, jadi langganan ini menggunakan salah satu topik. Ini adalah topik yang sama bahwa fungsi contoh menerbitkan.

<a name="connectors-how-to-add-subscriptions-p2"></a>Untuk tutorial ini, Anda juga membuat langganan yang memungkinkan fungsi menerima pembacaan suhu simulasi dari AWS IoT dan memungkinkan AWS IoT untuk menerima informasi status dari konektor.

1. Buat definisi langganan yang berisi versi awal yang mencakup langganan.
   + Ganti *alias-arn* dengan `AliasArn` yang Anda salin saat Anda membuat alias untuk fungsi tersebut. Gunakan ARN ini untuk kedua langganan yang menggunakannya.

    

------
#### [ JSON Expanded ]

   ```
   aws greengrass create-subscription-definition --initial-version '{
       "Subscriptions": [
           {
               "Id": "TriggerNotification",
               "Source": "alias-arn",
               "Subject": "twilio/txt",
               "Target": "arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/4"
           },        
           {
               "Id": "TemperatureInput",
               "Source": "cloud",
               "Subject": "temperature/input",
               "Target": "alias-arn"
           },
           {
               "Id": "OutputStatus",
               "Source": "arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/4",
               "Subject": "twilio/message/status",
               "Target": "cloud"
           }
       ]
   }'
   ```

------
#### [ JSON Single-line ]

   ```
   aws greengrass create-subscription-definition \
   --initial-version '{"Subscriptions": [{"Id": "TriggerNotification", "Source": "alias-arn", "Subject": "twilio/txt", "Target": "arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/4"},{"Id": "TemperatureInput", "Source": "cloud", "Subject": "temperature/input", "Target": "alias-arn"},{"Id": "OutputStatus", "Source": "arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/4", "Subject": "twilio/message/status", "Target": "cloud"}]}'
   ```

------

1. Salin `LatestVersionArn` dari output. Anda gunakan nilai ini untuk menambahkan versi definisi langganan ke versi grup yang Anda terapkan ke core.

## Langkah 8: Buat versi grup
<a name="connectors-cli-create-group-version"></a>

Sekarang, Anda siap untuk membuat versi grup yang berisi semua item yang ingin Anda terapkan. Anda melakukannya dengan membuat versi grup yang referensi versi target dari setiap jenis komponen.

Pertama, dapatkan ID grup dan ARN versi definisi core. Nilai-nilai ini diperlukan untuk membuat versi grup.

1. Dapatkan ID grup dan versi grup terbaru:

   1. <a name="get-group-id-latestversion"></a>Dapatkan IDs versi grup dan grup Greengrass target. Prosedur ini mengasumsikan bahwa ini adalah versi grup dan grup terbaru. Query berikut mengembalikan grup yang paling baru dibuat.

      ```
      aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"
      ```

      Atau, Anda dapat melakukan query berdasarkan nama. Nama grup tidak perlu unik, sehingga beberapa grup mungkin ditampilkan.

      ```
      aws greengrass list-groups --query "Groups[?Name=='MyGroup']"
      ```
**catatan**  
<a name="find-group-ids-console"></a>Anda juga dapat menemukan nilai-nilai ini di AWS IoT konsol. ID grup ditampilkan pada halaman **Pengaturan** grup. Versi grup IDs ditampilkan di tab **Deployment** grup.

   1. <a name="copy-target-group-id"></a>Salin `Id` dari grup target dari output. Anda menggunakan ini untuk mendapatkan versi definisi core dan ketika Anda men-deploy grup.

   1. <a name="copy-latest-group-version-id"></a>Salin `LatestVersion` dari output, yang merupakan ID dari versi terakhir ditambahkan ke grup. Anda menggunakan ini untuk mendapatkan versi definisi core.

1. Dapatkan ARN dari versi definisi core:

   1. Dapatkan versi grup. Untuk langkah ini, kita berasumsi bahwa versi grup terbaru mencakup versi definisi core.
      + Ganti *group-id* dengan `Id` yang Anda salin untuk grup.
      + Ganti *group-version-id* dengan `LatestVersion` yang Anda salin untuk grup.

      ```
      aws greengrass get-group-version \
      --group-id group-id \
      --group-version-id group-version-id
      ```

   1. Salin `CoreDefinitionVersionArn` dari output.

1. Buat versi grup.
   + Ganti *group-id* dengan `Id` yang Anda salin untuk grup.
   + Ganti *core-definition-version-arn* dengan `CoreDefinitionVersionArn` yang Anda salin untuk versi definisi inti.
   + Ganti *resource-definition-version-arn* dengan `LatestVersionArn` yang Anda salin untuk definisi sumber daya.
   + Ganti *connector-definition-version-arn* dengan `LatestVersionArn` yang Anda salin untuk definisi konektor.
   + Ganti *function-definition-version-arn* dengan `LatestVersionArn` yang Anda salin untuk definisi fungsi.
   + Ganti *subscription-definition-version-arn* dengan `LatestVersionArn` yang Anda salin untuk definisi langganan.

   ```
   aws greengrass create-group-version \
   --group-id group-id \
   --core-definition-version-arn core-definition-version-arn \
   --resource-definition-version-arn resource-definition-version-arn \
   --connector-definition-version-arn connector-definition-version-arn \
   --function-definition-version-arn function-definition-version-arn \
   --subscription-definition-version-arn subscription-definition-version-arn
   ```

1. Salin nilai `Version` dari outputnya. Ini adalah ID dari versi grup. Anda menggunakan nilai ini untuk menerapkan versi grup.

## Langkah 9: Buat deployment
<a name="connectors-cli-create-deployment"></a>

Terapkan grup ke perangkat core.

1. <a name="check-gg-daemon-is-running"></a>Di terminal perangkat inti, pastikan AWS IoT Greengrass daemon berjalan.

   1. Untuk memeriksa apakah daemon sedang berjalan:

      ```
      ps aux | grep -E 'greengrass.*daemon'
      ```

      Jika output berisi `root` entri untuk `/greengrass/ggc/packages/1.11.6/bin/daemon`, maka daemon sedang berjalan.

   1. Mulai daemon:

      ```
      cd /greengrass/ggc/core/
      sudo ./greengrassd start
      ```

1. <a name="create-deployment"></a>Buat deployment.
   + Ganti *group-id* dengan `Id` yang Anda salin untuk grup.
   + Ganti *group-version-id* dengan `Version` yang Anda salin untuk versi grup baru.

   ```
   aws greengrass create-deployment \
   --deployment-type NewDeployment \
   --group-id group-id \
   --group-version-id group-version-id
   ```

1. <a name="copy-deployment-id"></a>Salin `DeploymentId` dari output.

1. <a name="get-deployment-status"></a>Dapatkan status deployment.
   + Ganti *group-id* dengan `Id` yang Anda salin untuk grup.
   + Ganti *deployment-id* dengan `DeploymentId` yang Anda salin untuk penerapan.

   ```
   aws greengrass get-deployment-status \
   --group-id group-id \
   --deployment-id deployment-id
   ```

   Jika statusnya `Success`, deployment berhasil. Untuk langkah-langkah penyelesaian masalah, lihat [Pemecahan masalah AWS IoT Greengrass](gg-troubleshooting.md).

## Uji solusi
<a name="connectors-cli-test-solution"></a>

1. <a name="choose-test-page"></a>Di halaman beranda AWS IoT konsol, pilih **Uji**.

1. Untuk **Berlangganan topik**, gunakan nilai berikut, dan lalu pilih **Langganan**. Konektor Notifikasi Twilio menerbitkan informasi status untuk topik ini.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/connectors-cli.html)

1. Untuk **Publikasikan ke topik**, gunakan nilai-nilai berikut, dan kemudian pilih **Publikasikan** untuk memanggil fungsi.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/connectors-cli.html)

   Jika berhasil, penerima menerima pesan teks dan konsol menampilkan `success` status dari [output data](twilio-notifications-connector.md#twilio-notifications-connector-data-output).

   Sekarang, ubah `temperature` dalam pesan input untuk **29** dan terbitkan. Karena ini kurang dari 30, TempMonitor fungsinya tidak memicu pesan Twilio.

## Lihat juga
<a name="connectors-cli-see-also"></a>
+ [Integrasikan dengan layanan dan protokol menggunakan konektor Greengrass](connectors.md)
+ [AWS-disediakan konektor Greengrass](connectors-list.md)
+ [Memulai dengan konektor Greengrass (konsol)](connectors-console.md)
+ [AWS Secrets Manager perintah](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager) dalam *Referensi AWS CLI Perintah*
+ <a name="see-also-iam-cli"></a>[AWS Identity and Access Management (IAM) perintah di *AWS CLI Command*](https://docs.aws.amazon.com/cli/latest/reference/iam) Reference
+ <a name="see-also-lambda-cli"></a>[AWS Lambda perintah](https://docs.aws.amazon.com/cli/latest/reference/lambda) dalam *Referensi AWS CLI Perintah*
+ <a name="see-also-gg-cli"></a>[AWS IoT Greengrass perintah](https://docs.aws.amazon.com/cli/latest/reference/greengrass/index.html) dalam *Referensi AWS CLI Perintah*