

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

# Kembangkan plugin penyediaan khusus
<a name="develop-custom-provisioning-plugins"></a>

Untuk mengembangkan plugin penyediaan kustom, buat kelas Java yang mengimplementasikan antarmuka. `com.aws.greengrass.provisioning.DeviceIdentityInterface` Anda dapat menyertakan file JAR inti Greengrass dalam proyek Anda untuk mengakses antarmuka ini dan kelasnya. Antarmuka ini mendefinisikan metode yang memasukkan konfigurasi plugin dan mengeluarkan konfigurasi penyediaan. [Konfigurasi penyediaan mendefinisikan konfigurasi untuk sistem dan komponen inti Greengrass.](greengrass-nucleus-component.md) Penginstal perangkat lunak AWS IoT Greengrass Core menggunakan konfigurasi penyediaan ini untuk mengonfigurasi perangkat lunak AWS IoT Greengrass Core pada perangkat.

Setelah Anda mengembangkan plugin penyediaan khusus, buat sebagai file JAR yang dapat Anda berikan ke penginstal perangkat lunak AWS IoT Greengrass Core untuk menjalankan plugin Anda selama instalasi. Penginstal menjalankan plugin penyediaan khusus Anda di JVM yang sama dengan yang digunakan penginstal, sehingga Anda dapat membuat JAR yang hanya berisi kode plugin Anda.

**catatan**  
[Plugin penyediaan AWS IoT armada mengimplementasikan](fleet-provisioning.md) penyediaan armada `DeviceIdentityInterface` untuk menggunakan selama instalasi. Plugin penyediaan armada adalah open source, sehingga Anda dapat menjelajahi kode sumbernya untuk melihat contoh cara menggunakan antarmuka plugin penyediaan. Untuk informasi selengkapnya, lihat [plugin penyediaan AWS IoT armada](https://github.com/aws-greengrass/aws-greengrass-fleet-provisioning-by-claim) di. GitHub

**Topics**
+ [Persyaratan](#custom-provisioning-plugin-requirements)
+ [Menerapkan DeviceIdentityInterface antarmuka](#implement-device-identity-interface)

## Persyaratan
<a name="custom-provisioning-plugin-requirements"></a>

Untuk mengembangkan plugin penyediaan kustom, Anda harus membuat kelas Java yang memenuhi persyaratan berikut:
+ Menggunakan `com.aws.greengrass` paket, atau paket dalam `com.aws.greengrass` paket.
+ Memiliki konstruktor tanpa argumen apa pun.
+ Mengimplementasikan `DeviceIdentityInterface` antarmuka. Untuk informasi selengkapnya, lihat [Menerapkan DeviceIdentityInterface antarmuka](#implement-device-identity-interface).

## Menerapkan DeviceIdentityInterface antarmuka
<a name="implement-device-identity-interface"></a>

Untuk menggunakan `com.aws.greengrass.provisioning.DeviceIdentityInterface` antarmuka di plugin kustom Anda, tambahkan inti Greengrass sebagai dependensi ke proyek Anda.

**Untuk menggunakan DeviceIdentityInterface dalam proyek plugin penyediaan khusus**
+ Anda dapat menambahkan file JAR inti Greengrass sebagai pustaka, atau menambahkan inti Greengrass sebagai ketergantungan Maven. Lakukan salah satu tindakan berikut:
  + Untuk menambahkan file JAR inti Greengrass sebagai pustaka, unduh perangkat AWS IoT Greengrass lunak Core, yang berisi JAR inti Greengrass. Anda dapat mengunduh versi terbaru perangkat lunak AWS IoT Greengrass Core dari lokasi berikut:
    + [https://d2s8p88vqu9w66.cloudfront. net/releases/greengrass](https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip)-nucleus-latest.zip

    Anda dapat menemukan file JAR inti Greengrass `Greengrass.jar` () di folder dalam file ZIP`lib`. Tambahkan file JAR ini ke proyek Anda.
  + Untuk mengkonsumsi inti Greengrass dalam proyek Maven, tambahkan ketergantungan pada artefak dalam grup. `nucleus` `com.aws.greengrass` Anda juga harus menambahkan `greengrass-common` repositori, karena inti Greengrass tidak tersedia di Repositori Pusat Maven.

    ```
    <project ...>
        ...
        <repositories>
            <repository>
                <id>greengrass-common</id>
                <name>greengrass common</name>
                <url>https://d2jrmugq4soldf.cloudfront.net/snapshots</url>
            </repository>
        </repositories>
        ...
        <dependencies>
            <dependency>
                <groupId>com.aws.greengrass</groupId>
                <artifactId>nucleus</artifactId>
                <version>2.5.0-SNAPSHOT</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    </project>
    ```

### DeviceIdentityInterface Antarmuka
<a name="device-identity-interface-shape"></a>

`com.aws.greengrass.provisioning.DeviceIdentityInterface`Antarmuka memiliki bentuk sebagai berikut.

**catatan**  
[Anda juga dapat menjelajahi kelas-kelas ini dalam paket [com.aws.greengrass.provisioning dari kode sumber inti Greengrass](https://github.com/aws-greengrass/aws-greengrass-nucleus/tree/main/src/main/java/com/aws/greengrass/provisioning) di.](https://github.com/aws-greengrass/aws-greengrass-nucleus) GitHub

```
public interface com.aws.greengrass.provisioning.DeviceIdentityInterface {
    ProvisionConfiguration updateIdentityConfiguration(ProvisionContext context)
            throws RetryableProvisioningException, InterruptedException;

    // Return the name of the plugin.
    String name(); 
}

com.aws.greengrass.provisioning.ProvisionConfiguration {
    SystemConfiguration systemConfiguration;
    NucleusConfiguration nucleusConfiguration    
}

com.aws.greengrass.provisioning.ProvisionConfiguration.SystemConfiguration {
    String certificateFilePath;
    String privateKeyPath;
    String rootCAPath;
    String thingName;
}

com.aws.greengrass.provisioning.ProvisionConfiguration.NucleusConfiguration {
    String awsRegion;
    String iotCredentialsEndpoint;
    String iotDataEndpoint;
    String iotRoleAlias;
}

com.aws.greengrass.provisioning.ProvisioningContext {
    Map<String, Object> parameterMap;
    String provisioningPolicy;  // The policy is always "PROVISION_IF_NOT_PROVISIONED".
}
   
com.aws.greengrass.provisioning.exceptions.RetryableProvisioningException {}
```

Setiap nilai konfigurasi dalam `SystemConfiguration` dan `NucleusConfiguration` diperlukan untuk menginstal perangkat lunak AWS IoT Greengrass Core, tetapi Anda dapat kembali`null`. Jika plugin penyediaan kustom Anda mengembalikan `null` nilai konfigurasi apa pun, Anda harus memberikan nilai tersebut dalam konfigurasi sistem atau inti saat Anda membuat `config.yaml` file yang akan diberikan kepada penginstal perangkat lunak AWS IoT Greengrass Core. Jika plugin penyediaan kustom Anda mengembalikan nilai non-null untuk opsi yang juga Anda tentukan`config.yaml`, maka penginstal mengganti nilai `config.yaml` dengan nilai yang dikembalikan oleh plugin.