

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

# Langkah 5: Buat komponen Anda dalam AWS IoT Greengrass layanan
<a name="upload-first-component"></a>

Ketika Anda selesai mengembangkan komponen pada perangkat inti Anda, Anda dapat mengunggahnya ke AWS IoT Greengrass layanan di AWS Cloud. Anda juga dapat langsung membuat komponen di [AWS IoT Greengrass konsol](https://console.aws.amazon.com/greengrass). AWS IoT Greengrass menyediakan layanan manajemen komponen yang menghosting komponen Anda sehingga Anda dapat menyebarkannya ke perangkat individual atau armada perangkat. Untuk mengunggah komponen ke AWS IoT Greengrass layanan, Anda menyelesaikan langkah-langkah berikut:
+ Unggah artefak komponen ke bucket S3.
+ Tambahkan setiap URI Amazon Simple Storage Service (Amazon S3) artefak ke resep komponen.
+ Buat komponen AWS IoT Greengrass dari resep komponen.

Di bagian ini, Anda menyelesaikan langkah-langkah ini pada perangkat inti Greengrass Anda untuk mengunggah komponen Hello World Anda ke layanan. AWS IoT Greengrass 

## Buat komponen Anda di AWS IoT Greengrass (konsol)
<a name="upload-first-component-console"></a>

1. Gunakan bucket S3 di AWS akun Anda untuk meng-host artefak AWS IoT Greengrass komponen. Saat Anda men-deploy komponen ke perangkat inti, perangkat akan mengunduh artefak komponen dari bucket.

   Anda dapat menggunakan bucket S3 yang sudah ada, atau Anda dapat membuat bucket baru. 

   1. **Di [konsol Amazon S3](https://console.aws.amazon.com/s3), di bawah **Bucket, pilih Buat ember**.**

   1. Untuk **nama Bucket**, masukkan nama bucket yang unik. Misalnya, Anda dapat menggunakan**greengrass-component-artifacts-*region*-*123456789012***. Ganti *123456789012* dengan ID AWS akun Anda dan *region* dengan Wilayah AWS yang Anda gunakan untuk tutorial ini.

   1. Untuk **AWS wilayah**, pilih AWS Wilayah yang Anda gunakan untuk tutorial ini.

   1. Pilih **Buat bucket**.

   1. Di bawah **Bucket**, pilih bucket yang Anda buat, unggah `hello_world.py` skrip ke `artifacts/com.example.HelloWorld/1.0.0` folder di bucket. Untuk informasi tentang mengunggah objek ke bucket S3, lihat [Mengunggah objek di Panduan Pengguna](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) Layanan *Penyimpanan Sederhana Amazon*.

   1. Salin URI S3 `hello_world.py` objek di bucket S3. URI ini akan terlihat serupa dengan contoh berikut. Ganti amzn-s3-demo-bucket dengan nama bucket S3.

      ```
      s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
      ```

1. <a name="core-device-allow-s3-bucket-access-console"></a><a name="core-device-allow-s3-bucket-access-console-intro-1"></a>Izinkan perangkat inti mengakses artefak komponen dalam bucket S3.

   <a name="core-device-allow-s3-bucket-access-console-intro-2"></a>Setiap perangkat [inti memiliki peran IAM perangkat inti](device-service-role.md) yang memungkinkannya berinteraksi dengan AWS IoT dan mengirim log ke AWS Cloud. Peran perangkat ini tidak mengizinkan akses ke bucket S3 secara default, sehingga Anda harus membuat dan melampirkan kebijakan yang memungkinkan perangkat inti mengambil artefak komponen dari bucket S3.

   <a name="core-device-allow-s3-bucket-access-console-intro-3"></a>Jika peran perangkat Anda sudah memungkinkan akses ke bucket S3, Anda dapat melewati langkah ini. Jika tidak, buat kebijakan IAM yang memungkinkan akses dan melampirkannya pada peran, sebagai berikut:

   1. <a name="core-device-allow-s3-bucket-access-console-step-1"></a>Di menu navigasi [konsol IAM](https://console.aws.amazon.com/iam), pilih **Kebijakan**, lalu pilih **Buat kebijakan**.

   1. <a name="core-device-allow-s3-bucket-access-console-step-2"></a>Pada tab **JSON**, ganti placeholder konten dengan kebijakan berikut. Ganti amzn-s3-demo-bucket dengan nama bucket S3 yang berisi artefak komponen untuk diunduh perangkat inti.

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

   1. <a name="core-device-allow-s3-bucket-access-console-step-3"></a>Pilih **Berikutnya**.

   1. <a name="core-device-allow-s3-bucket-access-console-step-4"></a>Di **bagian Detail kebijakan**, untuk **Nama**, masukkan**MyGreengrassV2ComponentArtifactPolicy**.

   1. <a name="core-device-allow-s3-bucket-access-console-step-5"></a>Pilih **Buat kebijakan**.

   1. <a name="core-device-allow-s3-bucket-access-console-step-6"></a>Di menu navigasi [konsol IAM](https://console.aws.amazon.com/iam), pilih **Peran**, lalu pilih nama peran untuk perangkat inti. Anda menentukan nama peran ini saat menginstal perangkat lunak AWS IoT Greengrass Inti. Jika Anda tidak menentukan nama, defaultnya adalah`GreengrassV2TokenExchangeRole`.

   1. <a name="core-device-allow-s3-bucket-access-console-step-7"></a>Di bawah **Izin**, pilih **Tambahkan izin**, lalu pilih **Lampirkan** kebijakan.

   1. <a name="core-device-allow-s3-bucket-access-console-step-8"></a>Pada halaman **Tambahkan izin**, pilih kotak centang di samping `MyGreengrassV2ComponentArtifactPolicy` kebijakan yang Anda buat, lalu pilih **Tambahkan izin**.

1. Gunakan resep komponen untuk membuat komponen di [AWS IoT Greengrass konsol](https://console.aws.amazon.com/greengrass).

   1. Di menu navigasi [AWS IoT Greengrass konsol](https://console.aws.amazon.com/greengrass), pilih **Komponen**, lalu pilih **Buat komponen**.

   1. Di bawah **Informasi komponen**, pilih **Masukkan resep sebagai JSON**. Resep placeholder akan terlihat mirip dengan contoh berikut. 

      ```
      {
        "RecipeFormatVersion": "2020-01-25",
        "ComponentName": "com.example.HelloWorld",
        "ComponentVersion": "1.0.0",
        "ComponentDescription": "My first AWS IoT Greengrass component.",
        "ComponentPublisher": "Amazon",
        "ComponentConfiguration": {
          "DefaultConfiguration": {
            "Message": "world"
          }
        },
        "Manifests": [
          {
            "Platform": {
              "os": "linux"
            },
            "Lifecycle": {
              "Run": "python3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\""
            },
            "Artifacts": [
              {
                "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py"
              }
            ]
          },
          {
            "Platform": {
              "os": "windows"
            },
            "Lifecycle": {
              "Run": "py -3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\""
            },
            "Artifacts": [
              {
                "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py"
              }
            ]
          }
        ]
      }
      ```

   1. Ganti URI placeholder di setiap `Artifacts` bagian dengan URI S3 objek Anda. `hello_world.py` 

   1. Pilih **Buat komponen**. 

   1. Di **com.example. HelloWorld**halaman komponen, verifikasi bahwa **Status** komponen adalah **Deployable**.

## Buat komponen Anda di AWS IoT Greengrass (AWS CLI)
<a name="upload-first-component-cli"></a>

**Untuk mengunggah komponen Hello World anda**

1. Gunakan bucket S3 di artefak AWS IoT Greengrass komponen Anda Akun AWS untuk meng-host. Saat Anda men-deploy komponen ke perangkat inti, perangkat akan mengunduh artefak komponen dari bucket.

   Anda dapat menggunakan bucket S3 yang ada, atau menjalankan perintah berikut untuk membuat bucket. Perintah ini membuat bucket dengan Akun AWS ID Anda dan Wilayah AWS untuk membentuk nama bucket yang unik. Ganti *123456789012* dengan Akun AWS ID Anda dan *region* dengan Wilayah AWS yang Anda gunakan untuk tutorial ini.

   ```
   aws s3 mb s3://greengrass-component-artifacts-123456789012-region
   ```

   Perintah ini mengeluarkan informasi berikut jika permintaan berhasil.

   ```
   make_bucket: greengrass-component-artifacts-123456789012-region
   ```

1. <a name="core-device-allow-s3-bucket-access-cli"></a>Izinkan perangkat inti mengakses artefak komponen dalam bucket S3. 

   Setiap perangkat [inti memiliki peran IAM perangkat inti](device-service-role.md) yang memungkinkannya berinteraksi dengan AWS IoT dan mengirim log ke file. AWS Cloud Peran perangkat ini tidak mengizinkan akses ke bucket S3 secara default, sehingga Anda harus membuat dan melampirkan kebijakan yang memungkinkan perangkat inti mengambil artefak komponen dari bucket S3.

   Jika peran perangkat inti sudah memungkinkan akses ke bucket S3, Anda dapat melewati langkah ini. Jika tidak, buat kebijakan IAM yang memungkinkan akses dan melampirkannya pada peran, sebagai berikut:

   1. Buat file bernama `component-artifact-policy.json` dan salin JSON berikut ke dalam file. Kebijakan ini memungkinkan akses ke semua file dalam bucket S3. Ganti amzn-s3-demo-bucket dengan nama bucket S3.

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

   1. Jalankan perintah berikut untuk membuat kebijakan dari dokumen kebijakan di `component-artifact-policy.json`.

------
#### [ Linux or Unix ]

      ```
      aws iam create-policy \\
        --policy-name MyGreengrassV2ComponentArtifactPolicy \\
        --policy-document file://component-artifact-policy.json
      ```

------
#### [ Windows Command Prompt (CMD) ]

      ```
      aws iam create-policy ^
        --policy-name MyGreengrassV2ComponentArtifactPolicy ^
        --policy-document file://component-artifact-policy.json
      ```

------
#### [ PowerShell ]

      ```
      aws iam create-policy `
        --policy-name MyGreengrassV2ComponentArtifactPolicy `
        --policy-document file://component-artifact-policy.json
      ```

------

      Salin Amazon Resource Name (ARN) kebijakan dari metadata kebijakan dalam output. Anda menggunakan ARN ini untuk melampirkan kebijakan ini ke peran perangkat inti di langkah berikutnya.

   1. Jalankan perintah berikut untuk melampirkan kebijakan tersebut pada peran perangkat inti. Ganti *GreengrassV2TokenExchangeRole* dengan nama peran untuk perangkat inti. Anda menentukan nama peran ini saat menginstal perangkat lunak AWS IoT Greengrass Inti. Ganti ARN kebijakan dengan ARN dari langkah sebelumnya.

------
#### [ Linux or Unix ]

      ```
      aws iam attach-role-policy \\
        --role-name GreengrassV2TokenExchangeRole \\
        --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
      ```

------
#### [ Windows Command Prompt (CMD) ]

      ```
      aws iam attach-role-policy ^
        --role-name GreengrassV2TokenExchangeRole ^
        --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
      ```

------
#### [ PowerShell ]

      ```
      aws iam attach-role-policy `
        --role-name GreengrassV2TokenExchangeRole `
        --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
      ```

------

      Jika perintah tidak memiliki output, itu berhasil. Perangkat inti sekarang dapat mengakses artefak yang Anda unggah ke bucket S3 ini.

1. Unggah artefak skrip Python Hello World ke bucket S3. 

   Jalankan perintah berikut untuk mengunggah skrip ke jalur yang sama di bucket tempat skrip ada di AWS IoT Greengrass inti Anda. Ganti amzn-s3-demo-bucket dengan nama bucket S3.

------
#### [ Linux or Unix ]

   ```
   aws s3 cp \
     artifacts/com.example.HelloWorld/1.0.0/hello_world.py \
     s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   aws s3 cp ^
     artifacts/com.example.HelloWorld/1.0.0/hello_world.py ^
     s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
   ```

------
#### [ PowerShell ]

   ```
   aws s3 cp `
     artifacts/com.example.HelloWorld/1.0.0/hello_world.py `
     s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
   ```

------

   Perintah itu mengeluarkan baris yang dimulai dengan `upload:` jika permintaan berhasil.

1. Tambahkan URI Amazon S3 artefak ke resep komponen. 

   URI Amazon S3 terdiri atas nama bucket dan path ke objek artefak dalam bucket. URI Amazon S3 Anda adalah URI tujuan Anda mengunggah artefak pada langkah sebelumnya. URI ini akan terlihat serupa dengan contoh berikut. Ganti amzn-s3-demo-bucket dengan nama bucket S3.

   ```
   s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
   ```

   Untuk menambahkan artefak ke resep, tambahkan daftar `Artifacts` yang berisi struktur dengan URI Amazon S3.

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

   ```
   "Artifacts": [
     {
       "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py"
     }
   ]
   ```

   Buka file resep di editor teks.

   <a name="nano-command-intro"></a>Misalnya, pada sistem berbasis Linux, Anda dapat menjalankan perintah berikut untuk menggunakan GNU nano untuk membuat file.

   ```
   nano recipes/com.example.HelloWorld-1.0.0.json
   ```

   Tambahkan artefak ke resep. File resep Anda akan terlihat seperti contoh berikut.

   ```
   {
     "RecipeFormatVersion": "2020-01-25",
     "ComponentName": "com.example.HelloWorld",
     "ComponentVersion": "1.0.0",
     "ComponentDescription": "My first AWS IoT Greengrass component.",
     "ComponentPublisher": "Amazon",
     "ComponentConfiguration": {
       "DefaultConfiguration": {
         "Message": "world"
       }
     },
     "Manifests": [
       {
         "Platform": {
           "os": "linux"
         },
         "Lifecycle": {
           "Run": "python3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\""
         },
         "Artifacts": [
           {
             "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py"
           }
         ]
       },
       {
         "Platform": {
           "os": "windows"
         },
         "Lifecycle": {
           "Run": "py -3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\""
         },
         "Artifacts": [
           {
             "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py"
           }
         ]
       }
     ]
   }
   ```

------
#### [ YAML ]

   ```
   Artifacts:
     - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
   ```

   Buka file resep di editor teks.

   <a name="nano-command-intro"></a>Misalnya, pada sistem berbasis Linux, Anda dapat menjalankan perintah berikut untuk menggunakan GNU nano untuk membuat file.

   ```
   nano recipes/com.example.HelloWorld-1.0.0.yaml
   ```

   Tambahkan artefak ke resep. File resep Anda akan terlihat seperti contoh berikut.

   ```
   ---
   RecipeFormatVersion: '2020-01-25'
   ComponentName: com.example.HelloWorld
   ComponentVersion: '1.0.0'
   ComponentDescription: My first AWS IoT Greengrass component.
   ComponentPublisher: Amazon
   ComponentConfiguration:
     DefaultConfiguration:
       Message: world
   Manifests:
     - Platform:
         os: linux
       Lifecycle:
         Run: |
           python3 -u {artifacts:path}/hello_world.py "{configuration:/Message}"
       Artifacts:
         - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
     - Platform:
         os: windows
       Lifecycle:
         Run: |
           py -3 -u {artifacts:path}/hello_world.py "{configuration:/Message}"
       Artifacts:
         - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
   ```

------

1. Buat sumber daya komponen AWS IoT Greengrass dari resep. Jalankan perintah berikut untuk membuat komponen dari resep, yang Anda sediakan sebagai file biner.

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

   ```
   aws greengrassv2 create-component-version --inline-recipe fileb://recipes/com.example.HelloWorld-1.0.0.json
   ```

------
#### [ YAML ]

   ```
   aws greengrassv2 create-component-version --inline-recipe fileb://recipes/com.example.HelloWorld-1.0.0.yaml
   ```

------

   Responsnya terlihat seperti contoh berikut jika permintaan berhasil.

   ```
   {
     "arn": "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorld:versions:1.0.0",
     "componentName": "com.example.HelloWorld",
     "componentVersion": "1.0.0",
     "creationTimestamp": "Mon Nov 30 09:04:05 UTC 2020",
     "status": {
       "componentState": "REQUESTED",
       "message": "NONE",
       "errors": {}
     }
   }
   ```

   Salin `arn` dari output untuk memeriksa keadaan komponen pada langkah berikutnya.
**catatan**  
Anda juga dapat melihat komponen Hello World di [Konsol AWS IoT Greengrass](https://console.aws.amazon.com/greengrass) pada halaman **Komponen**.

1. Verifikasi bahwa komponen tersebut terbuat dan siap untuk di-deploy. Ketika Anda membuat komponen, keadaannya adalah `REQUESTED`. Kemudian, AWS IoT Greengrass memvalidasi bahwa komponen tersebut dapat di-deploy. Anda dapat menjalankan perintah berikut untuk melakukan kueri atas status komponen dan memverifikasi bahwa komponen Anda dapat di-deploy. Ganti `arn` dengan ARN dari langkah sebelumnya.

   ```
   aws greengrassv2 describe-component --arn "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorld:versions:1.0.0"
   ```

   Jika komponen tervalidasi, respons akan menunjukkan bahwa keadaan komponen adalah `DEPLOYABLE`.

   ```
   {
     "arn": "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorld:versions:1.0.0",
     "componentName": "com.example.HelloWorld",
     "componentVersion": "1.0.0",
     "creationTimestamp": "2020-11-30T18:04:05.823Z",
     "publisher": "Amazon",
     "description": "My first Greengrass component.",
     "status": {
       "componentState": "DEPLOYABLE",
       "message": "NONE",
       "errors": {}
     },
     "platforms": [
       {
         "os": "linux",
         "architecture": "all"
       }
     ]
   }
   ```

Komponen Hello World Anda sekarang tersedia di AWS IoT Greengrass. Anda dapat men-deploy-nya kembali ke perangkat inti Greengrass ini atau ke perangkat inti lainnya.