

Pemberitahuan akhir dukungan: Pada 15 Desember 2025, AWS akan mengakhiri dukungan untuk AWS IoT Analytics. Setelah 15 Desember 2025, Anda tidak akan lagi dapat mengakses AWS IoT Analytics konsol, atau AWS IoT Analytics sumber daya. Untuk informasi selengkapnya, lihat [AWS IoT Analytics akhir dukungan](https://docs.aws.amazon.com/iotanalytics/latest/userguide/iotanalytics-end-of-support.html).

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

# Kegiatan pipa
<a name="pipeline-activities"></a>

Pipa fungsional paling sederhana menghubungkan saluran ke penyimpanan data, yang membuatnya menjadi pipa dengan dua aktivitas: `channel` aktivitas dan `datastore` aktivitas. Anda dapat mencapai pemrosesan pesan yang lebih kuat dengan menambahkan aktivitas tambahan ke pipeline Anda. 

Anda dapat menggunakan [RunPipelineActivity](https://docs.aws.amazon.com/iotanalytics/latest/APIReference/API_RunPipelineActivity.html)operasi untuk mensimulasikan hasil menjalankan aktivitas pipeline pada payload pesan yang Anda berikan. Anda mungkin menemukan ini berguna ketika Anda mengembangkan dan men-debug aktivitas pipeline Anda. [RunPipelineActivity contoh](run-pipeline-activity.md) menunjukkan bagaimana itu digunakan.

# Aktivitas saluran
<a name="pipeline-activities-channel"></a>

Aktivitas pertama dalam pipeline haruslah `channel` aktivitas yang menentukan sumber pesan yang akan diproses.

```
{
    "channel": {
        "name": "MyChannelActivity",
        "channelName": "mychannel",
        "next": "MyLambdaActivity"
    }
}
```

# Aktivitas datastore
<a name="pipeline-activities-datastore"></a>

`datastore`Aktivitas, yang menentukan tempat menyimpan data yang diproses, adalah aktivitas terakhir.

```
{
    "datastore": {
        "name": "MyDatastoreActivity",
        "datastoreName": "mydatastore"
    }
}
```

# AWS Lambda Aktivitas
<a name="pipeline-activities-lambda"></a>

Anda dapat menggunakan **`lambda`aktivitas** untuk melakukan pemrosesan kompleks pada pesan. Misalnya, Anda dapat memperkaya pesan dengan data dari output operasi API eksternal, atau memfilter pesan berdasarkan logika dari Amazon DynamoDB. Namun, Anda tidak dapat menggunakan aktivitas pipeline ini untuk menambahkan pesan tambahan, atau menghapus pesan yang ada, sebelum memasuki penyimpanan data. 

 AWS Lambda Fungsi yang digunakan dalam **`lambda`aktivitas** harus menerima dan mengembalikan array objek JSON. Sebagai contoh, lihat [Contoh fungsi Lambda 1](#pipeline-activities-lambda-ex1).

 Untuk memberikan AWS IoT Analytics izin untuk menjalankan fungsi Lambda Anda, Anda harus menambahkan kebijakan. Misalnya, jalankan perintah CLI berikut dan ganti *exampleFunctionName* dengan nama fungsi Lambda Anda, ganti *123456789012* dengan ID AWS Akun Anda, dan gunakan Nama Sumber Daya Amazon (ARN) dari pipeline yang memanggil fungsi Lambda yang diberikan. 

```
aws lambda add-permission --function-name exampleFunctionName --action lambda:InvokeFunction --statement-id iotanalytics --principal iotanalytics.amazonaws.com --source-account 123456789012 --source-arn arn:aws:iotanalytics:us-east-1:123456789012:pipeline/examplePipeline
```

Perintah mengembalikan yang berikut:

```
{
    "Statement": "{\"Sid\":\"iotanalyticsa\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"iotanalytics.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:aws-region:aws-account:function:exampleFunctionName\",\"Condition\":{\"StringEquals\":{\"AWS:SourceAccount\":\"123456789012\"},\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:iotanalytics:us-east-1:123456789012:pipeline/examplePipeline\"}}}"
}
```

*Untuk informasi selengkapnya, lihat [Menggunakan kebijakan berbasis sumber daya AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html) di Panduan Pengembang.AWS Lambda *

## Contoh fungsi Lambda 1
<a name="pipeline-activities-lambda-ex1"></a>

Dalam contoh ini, fungsi Lambda menambahkan informasi berdasarkan data dalam pesan asli. Perangkat menerbitkan pesan dengan muatan yang mirip dengan contoh berikut.

```
{
  "thingid": "00001234abcd",
  "temperature": 26,
  "humidity": 29,
  "location": {
    "lat": 52.4332935,
    "lon": 13.231694
  },
  "ip": "192.168.178.54",
  "datetime": "2018-02-15T07:06:01"
}
```

Dan perangkat memiliki definisi pipa berikut.

```
{
    "pipeline": {
        "activities": [
            {
                "channel": {
                    "channelName": "foobar_channel",
                    "name": "foobar_channel_activity",
                    "next": "lambda_foobar_activity"
                }
            },
            {
                "lambda": {
                    "lambdaName": "MyAnalyticsLambdaFunction",
                    "batchSize": 5,
                    "name": "lambda_foobar_activity",
                    "next": "foobar_store_activity"
                }
            },
            {
                "datastore": {
                    "datastoreName": "foobar_datastore",
                    "name": "foobar_store_activity"
                }
            }
        ],
        "name": "foobar_pipeline",
        "arn": "arn:aws:iotanalytics:eu-west-1:123456789012:pipeline/foobar_pipeline"
    }
}
```

Fungsi Lambda Python berikut (`MyAnalyticsLambdaFunction`) menambahkan GMaps URL dan suhu, di Fahrenheit, ke pesan.

```
import logging
import sys

# Configure logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
streamHandler = logging.StreamHandler(stream=sys.stdout)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
streamHandler.setFormatter(formatter)
logger.addHandler(streamHandler)

def c_to_f(c):
    return 9.0/5.0 * c + 32

def lambda_handler(event, context):
    logger.info("event before processing: {}".format(event))
    maps_url = 'N/A'

    for e in event:
        #e['foo'] = 'addedByLambda'
        if 'location' in e:
            lat = e['location']['lat']
            lon = e['location']['lon']
            maps_url = "http://maps.google.com/maps?q={},{}".format(lat,lon)

        if 'temperature' in e:
            e['temperature_f'] = c_to_f(e['temperature'])

        logger.info("maps_url: {}".format(maps_url))
        e['maps_url'] = maps_url

    logger.info("event after processing: {}".format(event))

    return event
```

## Contoh fungsi Lambda 2
<a name="pipeline-activities-lambda-ex2"></a>

Teknik yang berguna adalah mengompres dan membuat serial muatan pesan untuk mengurangi biaya transportasi dan penyimpanan. Dalam contoh kedua ini, fungsi Lambda mengasumsikan bahwa muatan pesan mewakili asli JSON, yang telah dikompresi dan kemudian dikodekan base64 (serial) sebagai string. Ia mengembalikan JSON asli.

```
import base64
import gzip
import json
import logging
import sys

# Configure logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
streamHandler = logging.StreamHandler(stream=sys.stdout)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
streamHandler.setFormatter(formatter)
logger.addHandler(streamHandler)

def decode_to_bytes(e):
    return base64.b64decode(e)

def decompress_to_string(binary_data):
    return gzip.decompress(binary_data).decode('utf-8')

def lambda_handler(event, context):
    logger.info("event before processing: {}".format(event))

    decompressed_data = []

    for e in event:
        binary_data = decode_to_bytes(e)
        decompressed_string = decompress_to_string(binary_data)

        decompressed_data.append(json.loads(decompressed_string))

    logger.info("event after processing: {}".format(decompressed_data))

    return decompressed_data
```

# AddAttributes Aktivitas
<a name="pipeline-activities-add-attributes"></a>

`addAttributes`Aktivitas menambahkan atribut berdasarkan atribut yang ada dalam pesan. Ini memungkinkan Anda mengubah bentuk pesan sebelum disimpan. Misalnya, Anda dapat menggunakan `addAttributes` untuk menormalkan data yang berasal dari berbagai generasi firmware perangkat.

Pertimbangkan pesan masukan berikut.

```
{
    "device": {
        "id": "device-123",
        "coord": [ 47.6152543, -122.3354883 ]
    }
}
```

`addAttributes`Aktivitasnya terlihat seperti berikut ini.

```
{
    "addAttributes": {
        "name": "MyAddAttributesActivity",
        "attributes": {
            "device.id": "id",
            "device.coord[0]": "lat",
            "device.coord[1]": "lon"
        },
        "next": "MyRemoveAttributesActivity"
    }
}
```

Aktivitas ini memindahkan ID perangkat ke tingkat root dan mengekstrak nilai dalam `coord` array, mempromosikannya ke atribut tingkat atas yang disebut `lat` dan`lon`. Sebagai hasil dari aktivitas ini, pesan input diubah menjadi contoh berikut.

```
{
    "device": {
        "id": "device-123",
        "coord": [ 47.6, -122.3 ]
    },
    "id": "device-123",
    "lat": 47.6,
    "lon": -122.3
}
```

Atribut perangkat asli masih ada. Jika Anda ingin menghapusnya, Anda dapat menggunakan `removeAttributes` aktivitas tersebut.

# RemoveAttributes Aktivitas
<a name="pipeline-activities.removeattributes"></a>

`removeAttributes`Aktivitas menghapus atribut dari pesan. Misalnya, diberi pesan yang merupakan hasil dari `addAttributes` kegiatan tersebut.

```
{
    "device": {
        "id": "device-123",
        "coord": [ 47.6, -122.3 ]
    },
    "id": "device-123",
    "lat": 47.6,
    "lon": -122.3
}
```

Untuk menormalkan pesan itu sehingga hanya mencakup data yang diperlukan di tingkat root, gunakan `removeAttributes` aktivitas berikut.

```
{
    "removeAttributes": {
        "name": "MyRemoveAttributesActivity",
        "attributes": [
            "device"
        ],
        "next": "MyDatastoreActivity"
    }
}
```

Ini menghasilkan pesan berikut yang mengalir di sepanjang pipa.

```
{
    "id": "device-123",
    "lat": 47.6,
    "lon": -122.3
}
```

# SelectAttributes Aktivitas
<a name="pipeline-activities-selectattributes"></a>

`selectAttributes`Aktivitas membuat pesan baru hanya menggunakan atribut yang ditentukan dari pesan asli. Setiap atribut lainnya dijatuhkan. `selectAttributes`membuat atribut baru di bawah root pesan saja. Jadi diberikan pesan ini:

```
{
    "device": {
        "id": "device-123",
        "coord": [ 47.6152543, -122.3354883 ],
        "temp": 50,
        "hum": 40
    },
    "light": 90
}
```

dan kegiatan ini:

```
{
    "selectAttributes": {
        "name": "MySelectAttributesActivity",
        "attributes": [
            "device.temp",
            "device.hum",
            "light"
        ],
        "next": "MyDatastoreActivity"
    }
}
```

Hasilnya adalah pesan berikut yang mengalir melalui pipa.

```
{
    "temp": 50,
    "hum": 40,
    "light": 90
}
```

Sekali lagi, hanya `selectAttributes` dapat membuat objek tingkat root. 

# Aktivitas filter
<a name="pipeline-activities-filter"></a>

`filter`Aktivitas memfilter pesan berdasarkan atributnya. Ekspresi yang digunakan dalam aktivitas ini terlihat seperti `WHERE` klausa SQL, yang harus mengembalikan Boolean.

```
{
    "filter": {
        "name": "MyFilterActivity",
        "filter": "temp > 40 AND hum < 20",
        "next": "MyDatastoreActivity"
    }
}
```

# DeviceRegistryEnrich Aktivitas
<a name="pipeline-activities-deviceregistryenrich"></a>

`deviceRegistryEnrich`Aktivitas ini memungkinkan Anda untuk menambahkan data dari registri AWS IoT perangkat ke payload pesan Anda. Misalnya, diberikan pesan berikut:

```
{
    "temp": 50,
    "hum": 40,
    "device" {
        "thingName": "my-thing"
    }
}
```

dan `deviceRegistryEnrich` aktivitas yang terlihat seperti ini:

```
{
    "deviceRegistryEnrich": {
        "name": "MyDeviceRegistryEnrichActivity",
        "attribute": "metadata",
        "thingName": "device.thingName",
        "roleArn": "arn:aws:iam::<your-account-number>:role:MyEnrichRole",
        "next": "MyDatastoreActivity"
    }
}
```

Pesan output sekarang terlihat seperti contoh ini.

```
{
    "temp" : 50,
    "hum" : 40,
    "device" {
        "thingName" : "my-thing"
    },
    "metadata" : {
        "defaultClientId": "my-thing",
        "thingTypeName": "my-thing",
        "thingArn": "arn:aws:iot:us-east-1:<your-account-number>:thing/my-thing",
        "version": 1,
        "thingName": "my-thing",
        "attributes": {},
        "thingId": "aaabbbccc-dddeeef-gghh-jjkk-llmmnnoopp"
    }
}
```

Anda harus menentukan peran di `roleArn` bidang definisi aktivitas yang memiliki izin yang sesuai dilampirkan. Peran harus memiliki kebijakan izin yang terlihat seperti contoh berikut.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:DescribeThing"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:thing/your-thingName"
            ]
        }
    ]
}
```

------

dan kebijakan kepercayaan yang terlihat seperti:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "Service": "iotanalytics.amazonaws.com"
            },
            "Action": [
                "sts:AssumeRole"
            ]
        }
    ]
}
```

------

# DeviceShadowEnrich Aktivitas
<a name="pipeline-activities-deviceshadowenrich"></a>

`deviceShadowEnrich`Aktivitas menambahkan informasi dari layanan AWS IoT Device Shadow ke pesan. Misalnya, diberikan pesan:

```
{
    "temp": 50,
    "hum": 40,
    "device": { "thingName": "my-thing" }
}
```

dan `deviceShadowEnrich` kegiatan berikut:

```
{
    "deviceShadowEnrich": {
        "name": "MyDeviceShadowEnrichActivity",
        "attribute": "shadow",
        "thingName": "device.thingName",
        "roleArn": "arn:aws:iam::<your-account-number>:role:MyEnrichRole",
        "next": "MyDatastoreActivity"
    }
}
```

Hasilnya adalah pesan yang terlihat seperti contoh berikut.

```
{
    "temp": 50,
    "hum": 40,
    "device": {
        "thingName": "my-thing"
    },
    "shadow": {
        "state": {
            "desired": {
                "attributeX": valueX, ...
            },
            "reported": {
                "attributeX": valueX, ...
            },
            "delta": {
                "attributeX": valueX, ...
            }
        },
        "metadata": {
            "desired": {
                "attribute1": {
                    "timestamp": timestamp
                }, ...
            },
            "reported": ": {
                "attribute1": {
                    "timestamp": timestamp
                }, ...
            }
        },
        "timestamp": timestamp,
        "clientToken": "token",
        "version": version
    }
}
```

Anda harus menentukan peran di `roleArn` bidang definisi aktivitas yang memiliki izin yang sesuai dilampirkan. Peran harus memiliki kebijakan izin yang terlihat seperti berikut ini.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:GetThingShadow"
            ],
            "Resource": [
            "arn:aws:iot:us-east-1:123456789012:thing/your-thingName"
            ]
        }
    ]
}
```

------

dan kebijakan kepercayaan yang terlihat seperti:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "Service": "iotanalytics.amazonaws.com"
            },
            "Action": [
                "sts:AssumeRole"
            ]
        }
    ]
}
```

------

# Aktivitas matematika
<a name="pipeline-activities-math"></a>

`math`Aktivitas menghitung ekspresi aritmatika menggunakan atribut pesan. Ekspresi harus mengembalikan angka. Misalnya, diberikan pesan masukan berikut:

```
{
    "tempF": 50,
}
```

setelah diproses oleh `math` kegiatan berikut:

```
{
    "math": {
        "name": "MyMathActivity",
        "math": "(tempF - 32) / 2",
        "attribute": "tempC",
        "next": "MyDatastoreActivity"
    }
}
```

pesan yang dihasilkan terlihat seperti:

```
{
    "tempF" : 50,
    "tempC": 9
}
```

# Operator dan fungsi aktivitas matematika
<a name="math-operators-functions"></a>

Anda dapat menggunakan operator berikut dalam suatu `math` aktivitas:


|  |  | 
| --- |--- |
|  \$1  |  tambahan  | 
|  -  |  pengurangan  | 
|  \$1  |  perkalian  | 
|  /  |  pembagian  | 
|  %  |  modulo  | 

Anda dapat menggunakan fungsi-fungsi berikut dalam suatu `math` aktivitas:
+ [abs (Desimal)](math-abs.md)
+ [acos (Desimal)](math-acos.md)
+ [asin (Desimal)](math-asin.md)
+ [atan (Desimal)](math-atan.md)
+ [atan2 (Desimal, Desimal)](math-atan2.md)
+ [ceil (Desimal)](math-ceil.md)
+ [cos (Desimal)](math-cos.md)
+ [cosh (Desimal)](math-cosh.md)
+ [exp (Desimal)](math-exp.md)
+ [ln (Desimal)](math-ln.md)
+ [log (Desimal)](math-log.md)
+ [mod (Desimal, Desimal)](math-mod.md)
+ [kekuatan (Desimal, Desimal)](math-power.md)
+ [bulat (Desimal)](math-round.md)
+ [tanda (Desimal)](math-sign.md)
+ [sin (Desimal)](math-sin.md)
+ [sinh (Desimal)](math-sinh.md)
+ [sqrt (Desimal)](math-sqrt.md)
+ [tan (Desimal)](math-tan.md)
+ [tanh (Desimal)](math-tanh.md)
+ [batang (Desimal, Integer)](math-trunc.md)

# abs (Desimal)
<a name="math-abs"></a>

Mengembalikan nilai absolut dari sebuah angka.

Contoh: `abs(-5)` mengembalikan 5. 


| Jenis Argumen | Hasil | 
| --- | --- | 
|  `Int`  |  `Int`, nilai absolut dari argumen.  | 
|  `Decimal`  |  `Decimal`, nilai absolut dari argumen  | 
|  `Boolean`  |  `Undefined`.  | 
|  `String`  |  `Decimal`. Hasilnya adalah nilai absolut dari argumen. Jika string tidak dapat dikonversi, hasilnya adalah`Undefined`.  | 
|  Susunan  |  `Undefined`.  | 
|  Objek  |  `Undefined`.  | 
|  Null  |  `Undefined`.  | 
|  Tidak terdefinisi  |  `Undefined`.  | 

# acos (Desimal)
<a name="math-acos"></a>

Mengembalikan cosinus terbalik dari angka dalam radian. `Decimal`argumen dibulatkan ke presisi ganda sebelum aplikasi fungsi.

Contoh: `acos(0)` = 1.5707963267948966


| Jenis Argumen | Hasil | 
| --- | --- | 
|  `Int`  |  `Decimal`(dengan presisi ganda), kosinus terbalik dari argumen. Hasil imajiner dikembalikan sebagai`Undefined`.  | 
|  `Decimal`  |  `Decimal`(dengan presisi ganda), kosinus terbalik dari argumen. Hasil imajiner dikembalikan sebagai`Undefined`.  | 
|  `Boolean`  |  `Undefined`.  | 
|  `String`  |  `Decimal`(dengan presisi ganda) kosinus terbalik dari argumen. Jika string tidak dapat dikonversi, hasilnya adalah`Undefined`. Hasil imajiner dikembalikan sebagai`Undefined`.  | 
|  Susunan  |  `Undefined`.  | 
|  Objek  |  `Undefined`.  | 
|  Null  |  `Undefined`.  | 
|  Tidak terdefinisi  |  `Undefined`.  | 

# asin (Desimal)
<a name="math-asin"></a>

Mengembalikan sinus terbalik dari angka dalam radian. `Decimal`argumen dibulatkan ke presisi ganda sebelum aplikasi fungsi.

Contoh: `asin(0)` = 0.0


| Jenis Argumen | Hasil | 
| --- | --- | 
|  `Int`  |  `Decimal`(dengan presisi ganda), sinus terbalik dari argumen. Hasil imajiner dikembalikan sebagai`Undefined`.  | 
|  `Decimal`  |  `Decimal`(dengan presisi ganda), sinus terbalik dari argumen. Hasil imajiner dikembalikan sebagai`Undefined`.  | 
|  `Boolean`  |  `Undefined`.  | 
|  `String`  |  `Decimal`(dengan presisi ganda), sinus terbalik dari argumen. Jika string tidak dapat dikonversi, hasilnya adalah`Undefined`. Hasil imajiner dikembalikan sebagai`Undefined`.  | 
|  Susunan  |  `Undefined`.  | 
|  Objek  |  `Undefined`.  | 
|  Null  |  `Undefined`.  | 
|  Tidak terdefinisi  |  `Undefined`.  | 

# atan (Desimal)
<a name="math-atan"></a>

Mengembalikan tangen terbalik dari angka dalam radian. `Decimal`argumen dibulatkan ke presisi ganda sebelum aplikasi fungsi.

Contoh: `atan(0)` = 0.0


| Jenis Argumen | Hasil | 
| --- | --- | 
|  `Int`  |  `Decimal`(dengan presisi ganda), singgung terbalik dari argumen. Hasil imajiner dikembalikan sebagai`Undefined`.  | 
|  `Decimal`  |  `Decimal`(dengan presisi ganda), singgung terbalik dari argumen. Hasil imajiner dikembalikan sebagai`Undefined`.  | 
|  `Boolean`  |  `Undefined`.  | 
|  `String`  |  `Decimal`(dengan presisi ganda), singgung terbalik dari argumen. Jika string tidak dapat dikonversi, hasilnya adalah`Undefined`. Hasil imajiner dikembalikan sebagai`Undefined`.  | 
|  Susunan  |  `Undefined`.  | 
|  Objek  |  `Undefined`.  | 
|  Null  |  `Undefined`.  | 
|  Tidak terdefinisi  |  `Undefined`.  | 

# atan2 (Desimal, Desimal)
<a name="math-atan2"></a>

Mengembalikan sudut, dalam radian, antara sumbu x positif dan titik (x, y) yang didefinisikan dalam dua argumen. Sudut positif untuk sudut berlawanan arah jarum jam (setengah bidang atas, y > 0), dan negatif untuk `Decimal` argumen sudut searah jarum jam dibulatkan ke presisi ganda sebelum aplikasi fungsi.

Contoh: `atan(1, 0)` = 1.5707963267948966


| Jenis Argumen | Jenis Argumen | Hasil | 
| --- | --- | --- | 
|  `Int` / `Decimal`  |  `Int` / `Decimal`  |  `Decimal`(dengan presisi ganda), sudut antara sumbu x dan titik (x, y) yang ditentukan  | 
|  `Int` / `Decimal` / `String`  |  `Int` / `Decimal` / `String`  |  `Decimal`, singgung terbalik dari titik yang dijelaskan. Jika string tidak dapat dikonversi, hasilnya adalah`Undefined`.  | 
|  Nilai Lainnya  |  Nilai Lainnya  |  `Undefined`.  | 

# ceil (Desimal)
<a name="math-ceil"></a>

Membulatkan yang diberikan `Decimal` ke yang terdekat`Int`.

Contoh: 

`ceil(1.2)`= 2

`ceil(11.2)`= 1


| Jenis Argumen | Hasil | 
| --- | --- | 
|  `Int`  |  `Int`, nilai argumen.  | 
|  `Decimal`  |  `Int`, string dikonversi ke `Decimal` dan dibulatkan ke atas ke terdekat`Int`. Jika string tidak dapat dikonversi ke a`Decimal`, hasilnya adalah`Undefined`.  | 
|  Nilai Lainnya  |  `Undefined`.  | 

# cos (Desimal)
<a name="math-cos"></a>

Mengembalikan cosinus dari angka dalam radian. `Decimal`argumen dibulatkan ke presisi ganda sebelum aplikasi fungsi.

Contoh: `cos(0)` = 1


| Jenis Argumen | Hasil | 
| --- | --- | 
|  `Int`  |  `Decimal`(dengan presisi ganda), kosinus argumen. Hasil imajiner dikembalikan sebagai`Undefined`.  | 
|  `Decimal`  |  `Decimal`(dengan presisi ganda), kosinus argumen. Hasil imajiner dikembalikan sebagai`Undefined`.  | 
|  `Boolean`  |  `Undefined`.  | 
|  `String`  |  `Decimal`(dengan presisi ganda), kosinus argumen. Jika string tidak dapat dikonversi ke a`Decimal`, hasilnya adalah`Undefined`. Hasil imajiner dikembalikan sebagai`Undefined`.  | 
|  Susunan  |  `Undefined`.  | 
|  Objek  |  `Undefined`.  | 
|  Null  |  `Undefined`.  | 
|  Tidak terdefinisi  |  `Undefined`.  | 

# cosh (Desimal)
<a name="math-cosh"></a>

Mengembalikan kosinus hiperbolik dari suatu angka dalam radian. `Decimal`argumen dibulatkan ke presisi ganda sebelum aplikasi fungsi.

Contoh: `cosh(2.3)` = 5.037220649268761


| Jenis Argumen | Hasil | 
| --- | --- | 
|  `Int`  |  `Decimal`(dengan presisi ganda), kosinus hiperbolik argumen. Hasil imajiner dikembalikan sebagai`Undefined`.  | 
|  `Decimal`  |  `Decimal`(dengan presisi ganda), kosinus hiperbolik argumen. Hasil imajiner dikembalikan sebagai`Undefined`.  | 
|  `Boolean`  |  `Undefined`.  | 
|  `String`  |  `Decimal`(dengan presisi ganda), kosinus hiperbolik argumen. Jika string tidak dapat dikonversi ke a`Decimal`, hasilnya adalah`Undefined`. Hasil imajiner dikembalikan sebagai`Undefined`.  | 
|  Susunan  |  `Undefined`.  | 
|  Objek  |  `Undefined`.  | 
|  Null  |  `Undefined`.  | 
|  Tidak terdefinisi  |  `Undefined`.  | 

# exp (Desimal)
<a name="math-exp"></a>

Mengembalikan `e` diangkat ke argumen desimal. `Decimal`argumen dibulatkan ke presisi ganda sebelum aplikasi fungsi.

Contoh: `exp(1)` = 1


| Jenis Argumen | Hasil | 
| --- | --- | 
|  `Int`  |  `Decimal`(dengan presisi ganda), argumen e ^.  | 
|  `Decimal`  |  `Decimal`(dengan presisi ganda), e ^ argumen  | 
|  `String`  |  `Decimal`(dengan presisi ganda), argumen e ^. Jika `String` tidak dapat dikonversi ke a`Decimal`, hasilnya jika`Undefined`.  | 
|  Nilai Lainnya  |  `Undefined`.  | 

# ln (Desimal)
<a name="math-ln"></a>

Mengembalikan logaritma natural dari argumen. `Decimal`argumen dibulatkan ke presisi ganda sebelum aplikasi fungsi.

Contoh: `ln(e)` = 1


| Jenis Argumen | Hasil | 
| --- | --- | 
|  `Int`  |  `Decimal`(dengan presisi ganda), log alami argumen.  | 
|  `Decimal`  |  `Decimal`(dengan presisi ganda), log alami dari argumen  | 
|  `Boolean`  |  `Undefined`.  | 
|  `String`  |  `Decimal`(dengan presisi ganda), log alami argumen. Jika string tidak dapat dikonversi ke `Decimal` hasilnya adalah`Undefined`.  | 
|  Susunan  |  `Undefined`.  | 
|  Objek  |  `Undefined`.  | 
|  Null  |  `Undefined`.  | 
|  Tidak terdefinisi  |  `Undefined`.  | 

# log (Desimal)
<a name="math-log"></a>

Mengembalikan basis 10 logaritma argumen. `Decimal`argumen dibulatkan ke presisi ganda sebelum aplikasi fungsi. 

Contoh: `log(100)` = 2.0


| Jenis Argumen | Hasil | 
| --- | --- | 
|  `Int`  |  `Decimal`(dengan presisi ganda), log dasar 10 argumen.  | 
|  `Decimal`  |  `Decimal`(dengan presisi ganda), log dasar 10 argumen.  | 
|  `Boolean`  |  `Undefined`.  | 
|  `String`  |  `Decimal`(dengan presisi ganda), log dasar 10 argumen. Jika `String` tidak dapat dikonversi ke a`Decimal`, hasilnya adalah`Undefined`.  | 
|  Susunan  |  `Undefined`.  | 
|  Objek  |  `Undefined`.  | 
|  Null  |  `Undefined`.  | 
|  Tidak terdefinisi  |  `Undefined`.  | 

# mod (Desimal, Desimal)
<a name="math-mod"></a>

Mengembalikan sisa pembagian argumen pertama dari argumen kedua. Anda juga dapat menggunakan `%` sebagai operator infix untuk fungsionalitas modulo yang sama. 

Contoh: `mod(8, 3)` = 2


| Operan kiri | Operan kanan | Output | 
| --- | --- | --- | 
|  `Int`  |  `Int`  |  `Int`, modulo argumen pertama dari argumen kedua.  | 
|  `Int` / `Decimal`  |  `Int` / `Decimal`  |  `Decimal`, modulo argumen pertama dari argumen kedua.  | 
|  `String` / `Int` / `Decimal`  |  `String` / `Int` / `Decimal`  |  Jika semua string dikonversi ke`Decimals`, hasilnya jika argumen pertama modulo argumen kedua. Atau, `Undefined`.  | 
|  Nilai Lainnya  |  Nilai Lainnya  |  `Undefined`.  | 

# kekuatan (Desimal, Desimal)
<a name="math-power"></a>

Mengembalikan argumen pertama diangkat ke argumen kedua. `Decimal`argumen dibulatkan ke presisi ganda sebelum aplikasi fungsi.

Contoh: `power(2, 5)` = 32,0


| Tipe argumen 1 | Argumen tipe 2 | Output | 
| --- | --- | --- | 
|  `Int` / `Decimal`  |  `Int` / `Decimal`  |  A `Decimal` (dengan presisi ganda), argumen pertama diangkat ke kekuatan argumen kedua.  | 
|  `Int` / `Decimal` / `String`  |  `Int` / `Decimal` / `String`  |  A `Decimal` (dengan presisi ganda), argumen pertama diangkat ke kekuatan argumen kedua. Setiap string dikonversi ke`Decimals`. Jika ada yang `String` gagal dikonversi`Decimal`, hasilnya adalah`Undefined`.  | 
|  Nilai Lainnya  |  Nilai Lainnya  |  `Undefined`.  | 

# bulat (Desimal)
<a name="math-round"></a>

Membulatkan yang diberikan `Decimal` ke yang terdekat`Int`. Jika `Decimal` berjarak sama dari dua `Int` nilai (misalnya, 0,5), `Decimal` dibulatkan ke atas. 

Contoh:

`Round(1.2)`= 1

`Round(1.5)`= 2

`Round(1.7)`= 2

`Round(-1.1)`= 1

`Round(-1.5)`= 2


| Jenis Argumen | Hasil | 
| --- | --- | 
|  `Int`  |  Argumen  | 
|  `Decimal`  |  `Decimal`dibulatkan ke bawah ke yang terdekat`Int`.  | 
|  `String`  |  `Decimal`dibulatkan ke bawah ke yang terdekat`Int`. Jika string tidak dapat dikonversi ke a`Decimal`, hasilnya adalah`Undefined`.  | 
|  Nilai Lainnya  |  `Undefined`.  | 

# tanda (Desimal)
<a name="math-sign"></a>

Mengembalikan tanda nomor yang diberikan. Ketika tanda argumen positif, 1 dikembalikan. Ketika tanda argumen negatif, -1 dikembalikan. Jika argumen adalah 0, 0 dikembalikan. 

Contoh:

`sign(-7)`= 1

`sign(0)`= 0

`sign(13)`= 1


| Jenis Argumen | Hasil | 
| --- | --- | 
|  `Int`  |  `Int`, tanda `Int` nilai.  | 
|  `Decimal`  |  `Int`, tanda `Decimal` nilai.  | 
|  `String`  |  `Int`, tanda `Decimal` nilai. String jika dikonversi ke `Decimal` nilai, dan tanda `Decimal` nilai dikembalikan. Jika `String` tidak dapat dikonversi ke a`Decimal`, hasilnya adalah`Undefined`.  | 
|  Nilai Lainnya  |  `Undefined`.  | 

# sin (Desimal)
<a name="math-sin"></a>

Mengembalikan sinus dari angka dalam radian. `Decimal`argumen dibulatkan ke presisi ganda sebelum aplikasi fungsi.

Contoh: `sin(0)` = 0.0


| Jenis Argumen | Hasil | 
| --- | --- | 
|  `Int`  |  `Decimal`(dengan presisi ganda), sinus argumen.  | 
|  `Decimal`  |  `Decimal`(dengan presisi ganda), sinus argumen.  | 
|  `Boolean`  |  `Undefined`.  | 
|  `String`  |  `Decimal`, sinus argumen. Jika string tidak dapat dikonversi ke a`Decimal`, hasilnya adalah`Undefined`.  | 
|  `Array`  |  `Undefined`.  | 
|  `Object`  |  `Undefined`.  | 
|  `Null`  |  `Undefined`.  | 
|  `Undefined`  |  `Undefined`.  | 

# sinh (Desimal)
<a name="math-sinh"></a>

Mengembalikan sinus hiperbolik dari suatu angka. `Decimal`nilai dibulatkan ke presisi ganda sebelum aplikasi fungsi. Hasilnya adalah `Decimal` nilai presisi ganda. 

Contoh: `sinh(2.3)` = 4.936961805545957


| Jenis Argumen | Hasil | 
| --- | --- | 
|  `Int`  |  `Decimal`(dengan presisi ganda), sinus hiperbolik argumen.  | 
|  `Decimal`  |  `Decimal`(dengan presisi ganda), sinus hiperbolik argumen.  | 
|  `Boolean`  |  `Undefined`.  | 
|  `String`  |  `Decimal`, sinus hiperbolik argumen. Jika string tidak dapat dikonversi ke a`Decimal`, hasilnya adalah`Undefined`.  | 
|  `Array`  |  `Undefined`.  | 
|  `Object`  |  `Undefined`.  | 
|  `Null`  |  `Undefined`.  | 
|  `Undefined`  |  `Undefined`.  | 

# sqrt (Desimal)
<a name="math-sqrt"></a>

Mengembalikan akar kuadrat dari sebuah angka. `Decimal`argumen dibulatkan ke presisi ganda sebelum aplikasi fungsi.

Contoh: `sqrt(9)` = 3.0


| Jenis Argumen | Hasil | 
| --- | --- | 
|  `Int`  |  Akar kuadrat dari argumen.  | 
|  `Decimal`  |  Akar kuadrat dari argumen.  | 
|  `Boolean`  |  `Undefined`.  | 
|  `String`  |  Akar kuadrat dari argumen. Jika string tidak dapat dikonversi ke a`Decimal`, hasilnya adalah`Undefined`.  | 
|  `Array`  |  `Undefined`.  | 
|  `Object`  |  `Undefined`.  | 
|  `Null`  |  `Undefined`.  | 
|  `Undefined`  |  `Undefined`.  | 

# tan (Desimal)
<a name="math-tan"></a>

Mengembalikan garis singgung angka dalam radian. `Decimal`nilai dibulatkan ke presisi ganda sebelum aplikasi fungsi.

Contoh: `tan(3)` = -0,1425465430742778


| Jenis Argumen | Hasil | 
| --- | --- | 
|  `Int`  |  `Decimal`(dengan presisi ganda), garis singgung argumen.  | 
|  `Decimal`  |  `Decimal`(dengan presisi ganda), garis singgung argumen.  | 
|  `Boolean`  |  `Undefined`.  | 
|  `String`  |  `Decimal`(dengan presisi ganda), garis singgung argumen. Jika string tidak dapat dikonversi ke a`Decimal`, hasilnya adalah`Undefined`.  | 
|  `Array`  |  `Undefined`.  | 
|  `Object`  |  `Undefined`.  | 
|  `Null`  |  `Undefined`.  | 
|  `Undefined`  |  `Undefined`.  | 

# tanh (Desimal)
<a name="math-tanh"></a>

Mengembalikan tangen hiperbolik dari angka dalam radian. `Decimal`nilai dibulatkan ke presisi ganda sebelum aplikasi fungsi.

Contoh: `tanh(2.3)` = 0,9800963962661914


| Jenis Argumen | Hasil | 
| --- | --- | 
|  `Int`  |  `Decimal`(dengan presisi ganda), garis singgung hiperbolik argumen.  | 
|  `Decimal`  |  `Decimal`(dengan presisi ganda), garis singgung hiperbolik argumen.  | 
|  `Boolean`  |  `Undefined`.  | 
|  `String`  |  `Decimal`(dengan presisi ganda), garis singgung hiperbolik argumen. Jika string tidak dapat dikonversi ke a`Decimal`, hasilnya adalah`Undefined`.  | 
|  `Array`  |  `Undefined`.  | 
|  `Object`  |  `Undefined`.  | 
|  `Null`  |  `Undefined`.  | 
|  `Undefined`  |  `Undefined`.  | 

# batang (Desimal, Integer)
<a name="math-trunc"></a>

Memotong argumen pertama ke jumlah `Decimal` tempat yang ditentukan oleh argumen kedua. Jika argumen kedua kurang dari nol, maka akan diatur ke nol. Jika argumen kedua lebih besar dari 34, maka akan diatur ke 34. Nol belakang dilucuti dari hasilnya.

Contoh:

`trunc(2.3, 0)`= 2

`trunc(2.3123, 2)`= 2.31

`trunc(2.888, 2)`= 2.88

`trunc(2.00, 5)`= 2


| Tipe argumen 1 | Argumen tipe 2 | Hasil | 
| --- | --- | --- | 
|  `Int`  |  `Int`  |  Nilai sumbernya.  | 
|  `Int` / `Decimal` / `String`  |  `Int` / `Decimal`  |  Argumen pertama dipotong dengan panjang yang dijelaskan oleh argumen kedua. Argumen kedua, jika bukan`Int`, akan dibulatkan ke bawah ke yang terdekat`Int`. String dikonversi ke `Decimal` nilai. Jika konversi string gagal, hasilnya adalah`Undefined`.  | 
|  Nilai Lainnya  |    |  Tidak terdefinisi.  | 

# RunPipelineActivity
<a name="run-pipeline-activity"></a>

Berikut adalah contoh bagaimana Anda akan menggunakan `RunPipelineActivity` perintah untuk menguji aktivitas pipeline. Untuk contoh ini, kami menguji aktivitas matematika.

1. Buat `maths.json` file, yang berisi definisi aktivitas pipeline yang ingin Anda uji.

   ```
   {
       "math": {
           "name": "MyMathActivity",
           "math": "((temp - 32) * 5.0) / 9.0",
           "attribute": "tempC"
       }
   }
   ```

1. Buat file `payloads.json` file, yang berisi contoh muatan yang digunakan untuk menguji aktivitas pipeline.

   ```
   [
       "{\"humidity\": 52, \"temp\": 68 }",
       "{\"humidity\": 52, \"temp\": 32 }"
   ]
   ```

1. Panggil `RunPipelineActivities` operasi dari baris perintah.

   ```
   aws iotanalytics run-pipeline-activity  --pipeline-activity file://maths.json  --payloads file://payloads.json --cli-binary-format raw-in-base64-out
   ```

   Ini menghasilkan hasil sebagai berikut.

   ```
   {
       "logResult": "",
       "payloads": [
           "eyJodW1pZGl0eSI6NTIsInRlbXAiOjY4LCJ0ZW1wQyI6MjB9",
           "eyJodW1pZGl0eSI6NTIsInRlbXAiOjMyLCJ0ZW1wQyI6MH0="
       ]
   }
   ```

   Muatan yang tercantum dalam hasil adalah string yang dikodekan Base64. Ketika string ini diterjemahkan, Anda mendapatkan hasil sebagai berikut.

   ```
   {"humidity":52,"temp":68,"tempC":20}
   {"humidity":52,"temp":32,"tempC":0}
   ```