

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

# 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.