

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

# Menulis kode cetak biru
<a name="developing-blueprints-code"></a>

Setiap proyek cetak biru yang Anda buat harus berisi paling tidak file-file berikut ini:
+ Skrip tata letak Python yang mendefinisikan alur kerja. Skrip yang berisi fungsi yang mendefinisikan entitas (tugas dan crawler) dalam sebuah alur kerja, dan dependensi di antara mereka.
+ File konfigurasi, `blueprint.cfg`, yang mendefinisikan:
  + Path lengkap dari fungsi definisi tata letak alur kerja.
  + Parameter yang diterima cetak biru.

**Topics**
+ [

# Membuat skrip tata letak cetak biru
](developing-blueprints-code-layout.md)
+ [

# Membuat file konfigurasi
](developing-blueprints-code-config.md)
+ [

# Menentukan parameter cetak biru
](developing-blueprints-code-parameters.md)

# Membuat skrip tata letak cetak biru
<a name="developing-blueprints-code-layout"></a>

Skrip tata letak cetak biru harus menyertakan fungsi yang menghasilkan entitas dalam alur kerja Anda. Anda dapat memberi nama fungsi ini apa pun yang Anda suka. AWS Gluemenggunakan file konfigurasi untuk menentukan nama fungsi yang sepenuhnya memenuhi syarat.

Fungsi tata letak Anda melakukan hal-hal berikut:
+ (Opsional) Instansiasi kelas `Job` untuk membuat objek `Job`, dan memberikan argumen seperti `Command` dan `Role`. Ini adalah properti pekerjaan yang akan Anda tentukan jika Anda membuat pekerjaan menggunakan AWS Glue konsol atau API.
+ (Opsional) Instansiasi kelas `Crawler` untuk membuat objek `Crawler`, dan memberikan nama, peran, dan argumen target.
+ Untuk menunjukkan dependensi antara objek (entitas alur kerja), berikan `DependsOn` dan argumen tambahan `WaitForDependencies` untuk `Job()` dan `Crawler()`. Argumen ini dijelaskan nanti dalam bagian ini.
+ Membuat instance `Workflow` kelas untuk membuat objek alur kerja yang dikembalikan keAWS Glue, meneruskan argumen, `Name` argumen, dan `Entities` argumen opsional. `OnSchedule` Argumen `Entities` menentukan semua tugas dan crawler yang akan disertakan dalam alur kerja. Untuk melihat bagaimana membangun sebuah objek `Entities`, lihat contoh proyek dalam bagian ini nanti.
+ Mengembalikan objek `Workflow`.

Untuk definisi `Job`, `Crawler`, dan kelas `Workflow`, lihat [AWS Gluereferensi kelas cetak biru](developing-blueprints-code-classes.md).

Fungsi tata letak harus menerima argumen-argumen masukan berikut.


| Pendapat | Deskripsi | 
| --- | --- | 
| user\$1params | Kamus Python tentang nama parameter dan nilai-nilai cetak biru. Untuk informasi selengkapnya, lihat [Menentukan parameter cetak biru](developing-blueprints-code-parameters.md). | 
| system\$1params | Kamus Python berisi dua properti: region dan accountId. | 

Berikut ini adalah contoh skrip tata letak generator dalam sebuah file bernama `Layout.py`:

```
import argparse
import sys
import os
import json
from awsglue.blueprint.workflow import *
from awsglue.blueprint.job import *
from awsglue.blueprint.crawler import *


def generate_layout(user_params, system_params):

    etl_job = Job(Name="{}_etl_job".format(user_params['WorkflowName']),
                  Command={
                      "Name": "glueetl",
                      "ScriptLocation": user_params['ScriptLocation'],
                      "PythonVersion": "2"
                  },
                  Role=user_params['PassRole'])
    post_process_job = Job(Name="{}_post_process".format(user_params['WorkflowName']),
                            Command={
                                "Name": "pythonshell",
                                "ScriptLocation": user_params['ScriptLocation'],
                                "PythonVersion": "2"
                            },
                            Role=user_params['PassRole'],
                            DependsOn={
                                etl_job: "SUCCEEDED"
                            },
                            WaitForDependencies="AND")
    sample_workflow = Workflow(Name=user_params['WorkflowName'],
                            Entities=Entities(Jobs=[etl_job, post_process_job]))
    return sample_workflow
```

Skrip contoh mengimpor perpustakaan cetak biru yang diperlukan dan menyertakan fungsi `generate_layout` yang menghasilkan sebuah alur kerja dengan dua tugas. Ini adalah skrip yang sangat sederhana. Skrip yang lebih kompleks dapat menggunakan logika dan parameter tambahan untuk menghasilkan sebuah alur kerja dengan banyak tugas dan crawler, atau bahkan sejumlah variabel tugas dan crawler.

## Menggunakan DependsOn argumen
<a name="developing-blueprints-code-layout-depends-on"></a>

Argumen `DependsOn` adalah sebuah representasi kamus dependensi yang dimiliki entitas ini atas entitas lain dalam alur kerja. Ia memiliki bentuk berikut. 

```
DependsOn = {dependency1 : state, dependency2 : state, ...}
```

Kunci dalam kamus ini mewakili referensi objek, bukan nama, entitas, sedangkan nilainya adalah string yang sesuai dengan status yang harus diperhatikan. AWS Gluemenyimpulkan pemicu yang tepat. Untuk status yang valid, lihat [Struktur Kondisi](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-trigger.html#aws-glue-api-jobs-trigger-Condition).

Sebagai contoh, sebuah tugas mungkin bergantung pada keberhasilan penyelesaian sebuah crawler. Jika anda menentukan sebuah objek crawler bernama `crawler2` sebagai berikut:

```
crawler2 = Crawler(Name="my_crawler", ...)
```

Maka sebuah objek yang tergantung pada `crawler2` akan mencakup argumen konstruktor seperti: 

```
DependsOn = {crawler2 : "SUCCEEDED"}
```

Contoh:

```
job1 = Job(Name="Job1", ..., DependsOn = {crawler2 : "SUCCEEDED", ...})
```

Jika `DependsOn` dihilangkan dan diganti sebuah entitas, maka entitas tersebut tergantung pada pemicu awal alur kerja.

## Menggunakan WaitForDependencies argumen
<a name="developing-blueprints-code-layout-wait-for-dependencies"></a>

Argumen `WaitForDependencies` mendefinisikan apakah sebuah entitas tugas atau crawler harus menunggu sampai *semua* entitas yang tergantung selesai atau sampai *salah satu* selesai.

Nilai yang diijinkan adalah "`AND`" atau "`ANY`".

## Menggunakan OnSchedule argumen
<a name="developing-blueprints-code-layout-on-schedule"></a>

Argumen `OnSchedule` untuk konstruktor kelas `Workflow` adalah sebuah ekspresi `cron` yang menentukan definisi pemicu awal untuk alur kerja.

Jika argumen ini ditentukan, AWS Glue membuat pemicu jadwal dengan jadwal yang sesuai. Jika tidak ditentukan, maka pemicu awal untuk alur kerja adalah pemicu sesuai permintaan.

# Membuat file konfigurasi
<a name="developing-blueprints-code-config"></a>

File konfigurasi cetak biru adalah sebuah file yang diperlukan yang menentukan titik entri skrip untuk menghasilkan alur kerja, dan parameter yang diterima cetak biru. File tersebut harus diberi nama `blueprint.cfg`.

Berikut ini adalah file konfigurasi sampel.

```
{
    "layoutGenerator": "DemoBlueprintProject.Layout.generate_layout",
    "parameterSpec" : {
           "WorkflowName" : {
                "type": "String",
                "collection": false
           },
           "WorkerType" : {
                "type": "String",
                "collection": false,
                "allowedValues": ["G1.X", "G2.X"],
                "defaultValue": "G1.X"
           },
           "Dpu" : {
                "type" : "Integer",
                "allowedValues" : [2, 4, 6],
                "defaultValue" : 2
           },
           "DynamoDBTableName": {
                "type": "String",
                "collection" : false
           },
           "ScriptLocation" : {
                "type": "String",
                "collection": false
    	}
    }
}
```

Properti `layoutGenerator` menentukan nama memenuhi syarat fungsi dalam skrip yang menghasilkan tata letak.

Properti `parameterSpec` menentukan parameter yang diterima cetak biru ini. Untuk informasi selengkapnya, lihat [Menentukan parameter cetak biru](developing-blueprints-code-parameters.md).

**penting**  
File konfigurasi Anda harus menyertakan nama alur kerja sebagai sebuah parameter cetak biru, atau Anda harus membuat nama alur kerja yang unik dalam skrip tata letak Anda.

# Menentukan parameter cetak biru
<a name="developing-blueprints-code-parameters"></a>

File konfigurasi berisi spesifikasi parameter cetak biru dalam objek JSON `parameterSpec`. `parameterSpec` berisi satu atau beberapa objek parameter.

```
"parameterSpec": {
    "<parameter_name>": {
      "type": "<parameter-type>",
      "collection": true|false, 
      "description": "<parameter-description>",
      "defaultValue": "<default value for the parameter if value not specified>"
      "allowedValues": "<list of allowed values>" 
    },
    "<parameter_name>": {    
       ...
    }
  }
```

Berikut ini adalah aturan untuk melakukan coding pada setiap objek parameter:
+ Nama parameter dan `type` adalah wajib. Semua properti lainnya opsional.
+ Jika Anda menentukan properti `defaultValue`, maka parameter bersifat opsional. Jika tidak, parameter tersebut bersifat wajib dan analis data yang menciptakan alur kerja dari cetak biru tersebut harus memberikan nilai untuk itu.
+ Jika Anda mengatur properti `collection` ke `true`, maka parameter dapat mengambil koleksi nilai-nilai. Koleksi tersebut dapat berupa jenis data apa pun.
+ Jika Anda menentukan`allowedValues`, AWS Glue konsol akan menampilkan daftar tarik-turun nilai untuk dipilih analis data saat membuat alur kerja dari cetak biru.

Berikut ini adalah nilai yang diizinkan untuk `type`:


| Jenis data parameter | Catatan | 
| --- | --- | 
| String | - | 
| Integer | - | 
| Double | - | 
| Boolean | Kemungkinan nilainya adalah true and false. Menghasilkan kotak centang pada Buat alur kerja dari <blueprint>halaman di AWS Glue konsol. | 
| S3Uri | Lengkapi path Amazon S3, yang dimulai dengan s3://. Buat bidang teks dan tombol Jelajahi pada halaman Membuat alur kerja dari <blueprint>. | 
| S3Bucket | Nama bucket Amazon S3 saja. Buat pemilih bucket pada halaman Membuat alur kerja dari <blueprint>. | 
| IAMRoleArn | Nama Sumber Daya Amazon (ARN) dari peran AWS Identity and Access Management (IAM). Buat pemilih peran pada halaman Membuat alur kerja dari <blueprint>. | 
| IAMRoleName | Nama dari sebuah IAM role. Buat pemilih peran pada halaman Membuat alur kerja dari <blueprint>. | 