

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

# Mengakses sumber daya lintas akun menggunakan AWS IoT aturan
<a name="accessing-cross-account-resources-using-rules"></a>

Anda dapat mengonfigurasi AWS IoT aturan untuk akses lintas akun sehingga data yang dicerna pada topik MQTT dari satu akun dapat dialihkan ke layanan, AWS seperti Amazon SQS dan Lambda, dari akun lain. Berikut ini menjelaskan cara mengatur AWS IoT aturan untuk konsumsi data lintas akun, dari topik MQTT di satu akun, hingga tujuan di akun lain. 

Cross-account aturan dapat dikonfigurasi menggunakan [izin berbasis sumber daya](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_controlling.html#TypesPermissions) pada sumber daya tujuan. Oleh karena itu, hanya tujuan yang mendukung izin berbasis sumber daya yang dapat diaktifkan untuk akses lintas akun dengan aturan. AWS IoT Tujuan yang didukung termasuk Amazon SQS, Amazon SNS, Amazon S3, dan. AWS Lambda

**catatan**  
Untuk tujuan yang didukung, kecuali Amazon SQS, Anda harus menentukan aturan yang AWS Region sama dengan sumber daya layanan lain sehingga tindakan aturan dapat berinteraksi dengan sumber daya tersebut. Untuk informasi selengkapnya tentang tindakan AWS IoT aturan, lihat [tindakan AWS IoT aturan](iot-rule-actions.md). Untuk informasi selengkapnya tentang tindakan SQS aturan, lihat[SQS](sqs-rule-action.md).

## Prasyarat
<a name="cross-account-prerequisites"></a>
+ [Keakraban dengan AWS IoT aturan](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html)
+ Pemahaman tentang [pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_identity-management.html), [peran](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html), dan izin berbasis sumber [daya](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_permissions.html#TypesPermissions)
+ Setelah [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)menginstal

## Cross-account penyiapan untuk Amazon SQS
<a name="cross-account-sqs"></a>

Skenario: Akun A mengirimkan data dari pesan MQTT ke antrian Amazon SQS akun B.


| Akun AWS | Akun disebut sebagai  | Deskripsi | 
| --- | --- | --- | 
| {{1111-1111-1111}} | Akun A | Tindakan aturan: sqs:SendMessage | 
| {{2222-2222-2222}} | Akun B | Antrean Amazon SQS [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/iot/latest/developerguide/accessing-cross-account-resources-using-rules.html)  | 

**catatan**  
[Antrian Amazon SQS tujuan Anda tidak harus AWS Region sama dengan aturan Anda.AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html) Untuk informasi selengkapnya tentang tindakan SQS aturan, lihat[SQS](sqs-rule-action.md).

**Lakukan tugas Akun A**
**Catatan**  
Untuk menjalankan perintah berikut, pengguna IAM Anda harus memiliki izin untuk `iot:CreateTopicRule` menggunakan Amazon Resource Name (ARN) aturan sebagai sumber daya, dan izin untuk `iam:PassRole` bertindak dengan sumber daya sebagai ARN peran.

1. [Konfigurasikan AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) menggunakan pengguna IAM akun A. 

1. Buat peran IAM yang mempercayai mesin AWS IoT aturan, dan lampirkan kebijakan yang memungkinkan akses ke antrean Amazon SQS akun B. Lihat contoh perintah dan dokumen kebijakan di [Pemberian akses AWS IoT yang diperlukan](https://docs.aws.amazon.com/iot/latest/developerguide/iot-create-role.html).

1. Untuk membuat aturan yang dilampirkan ke topik, jalankan perintah [create-topic-rule](https://docs.aws.amazon.com/cli/latest/reference/iot/create-topic-rule.html).

   ```
   aws iot create-topic-rule --rule-name {{myRule}} --topic-rule-payload file://./{{my-rule.json}}
   ```

   Berikut ini adalah contoh file payload dengan aturan yang menyisipkan semua pesan yang dikirim ke `iot/test` topik ke dalam antrean Amazon SQS yang ditentukan. Pernyataan SQL memfilter pesan dan peran ARN AWS IoT memberikan izin untuk menambahkan pesan ke antrian Amazon SQS.

   ```
   {
   	"sql": "SELECT * FROM 'iot/test'",
   	"ruleDisabled": false,
   	"awsIotSqlVersion": "2016-03-23",
   	"actions": [
   		{
   			"sqs": {
   				"queueUrl": "https://sqs.region.amazonaws.com/2222-2222-2222/ExampleQueue",
   				"roleArn": "arn:aws:iam::1111-1111-1111:role/my-iot-role",
   				"useBase64": false
   			}
   		}
   	]
   }
   ```

   Untuk informasi selengkapnya tentang cara menentukan tindakan Amazon SQS dalam AWS IoT aturan, lihat [tindakan AWS IoT aturan - Amazon SQS.](https://docs.aws.amazon.com/iot/latest/developerguide/sqs-rule-action.html)

**Lakukan tugas Akun B**

1. [Konfigurasikan AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) menggunakan pengguna IAM akun B. 

1. [Untuk memberikan izin sumber daya antrian Amazon SQS ke akun A, jalankan perintah add-permission.](https://docs.aws.amazon.com/cli/latest/reference/sqs/add-permission.html)

   ```
   aws sqs add-permission --queue-url {{https://sqs.region.amazonaws.com/2222-2222-2222/ExampleQueue}} --label {{SendMessagesToMyQueue}} --aws-account-ids {{1111-1111-1111}} --actions SendMessage
   ```

## Cross-account penyiapan untuk Amazon SNS
<a name="cross-account-sns"></a>

Skenario: Akun A mengirim data dari pesan MQTT ke topik akun Amazon SNS B.


| Akun AWS | Akun disebut sebagai  | Deskripsi | 
| --- | --- | --- | 
| {{1111-1111-1111}} | Akun A | Tindakan aturan: sns:Publish | 
| {{2222-2222-2222}} | Akun B | Amazon SNS topik ARN: {{arn:aws:sns:region:2222-2222-2222:ExampleTopic}}  | 

**Lakukan tugas Akun A**
**Catatan**  
 Untuk menjalankan perintah berikut, pengguna IAM Anda harus memiliki izin `iot:CreateTopicRule` dengan aturan ARN sebagai sumber daya dan izin untuk `iam:PassRole` tindakan dengan sumber daya sebagai peran ARN.

1. [Konfigurasikan AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) menggunakan pengguna IAM akun A. 

1. Buat peran IAM yang mempercayai mesin AWS IoT aturan, dan lampirkan kebijakan yang memungkinkan akses ke topik Amazon SNS akun B. Misalnya perintah dan dokumen kebijakan, lihat [Memberikan akses AWS IoT yang diperlukan](https://docs.aws.amazon.com/iot/latest/developerguide/iot-create-role.html).

1. Untuk membuat aturan yang dilampirkan ke topik, jalankan perintah [create-topic-rule](https://docs.aws.amazon.com/cli/latest/reference/iot/create-topic-rule.html).

   ```
   aws iot create-topic-rule --rule-name {{myRule}} --topic-rule-payload file://./{{my-rule.json}}
   ```

   Berikut ini adalah contoh file payload dengan aturan yang menyisipkan semua pesan yang dikirim ke `iot/test` topik ke topik Amazon SNS yang ditentukan. Pernyataan SQL memfilter pesan, dan peran ARN AWS IoT memberikan izin untuk mengirim pesan ke topik Amazon SNS.

   ```
   {
   	"sql": "SELECT * FROM 'iot/test'",
   	"ruleDisabled": false,
   	"awsIotSqlVersion": "2016-03-23",
   	"actions": [
   		{
   			"sns": {
   				"targetArn": "arn:aws:sns:region:2222-2222-2222:ExampleTopic",
   				"roleArn": "arn:aws:iam::1111-1111-1111:role/my-iot-role"
   			}
   		}
   	]
   }
   ```

   Untuk informasi selengkapnya tentang cara menentukan tindakan Amazon SNS dalam AWS IoT aturan, lihat [tindakan AWS IoT aturan - Amazon SNS](https://docs.aws.amazon.com/iot/latest/developerguide/sns-rule-action.html).

**Lakukan tugas Akun B**

1. [Konfigurasikan AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) menggunakan pengguna IAM akun B. 

1. Untuk memberikan izin pada sumber daya topik Amazon SNS ke akun A, jalankan perintah [add-permission](https://docs.aws.amazon.com/cli/latest/reference/sns/add-permission.html).

   ```
   aws sns add-permission --topic-arn {{arn:aws:sns:region:2222-2222-2222:ExampleTopic}} --label {{Publish-Permission}} --aws-account-id {{1111-1111-1111}} --action-name Publish
   ```

## Cross-account penyiapan untuk Amazon S3
<a name="cross-account-s3"></a>

Skenario: Akun A mengirimkan data dari pesan MQTT ke ember akun Amazon S3 B.


| Akun AWS | Akun disebut sebagai  | Deskripsi | 
| --- | --- | --- | 
| {{1111-1111-1111}} | Akun A | Tindakan aturan: s3:PutObject | 
| {{2222-2222-2222}} | Akun B | Ember Amazon S3 ARN: {{arn:aws:s3:::amzn-s3-demo-bucket}}  | 

**Lakukan tugas Akun A**
**Catatan**  
Untuk menjalankan perintah berikut, pengguna IAM Anda harus memiliki izin `iot:CreateTopicRule` dengan aturan ARN sebagai sumber daya dan izin untuk `iam:PassRole` bertindak dengan sumber daya sebagai peran ARN.

1. [Konfigurasikan AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) menggunakan pengguna IAM akun A. 

1. Buat peran IAM yang mempercayai mesin AWS IoT aturan dan melampirkan kebijakan yang memungkinkan akses ke bucket Amazon S3 akun B. Misalnya perintah dan dokumen kebijakan, lihat [Memberikan akses AWS IoT yang diperlukan](https://docs.aws.amazon.com/iot/latest/developerguide/iot-create-role.html).

1. Untuk membuat aturan yang dilampirkan ke bucket S3 target Anda, jalankan perintah [create-topic-rule](https://docs.aws.amazon.com/cli/latest/reference/iot/create-topic-rule.html).

   ```
   aws iot create-topic-rule --rule-name {{my-rule}} --topic-rule-payload file://./{{my-rule.json}}
   ```

   Berikut ini adalah contoh file payload dengan aturan yang menyisipkan semua pesan yang dikirim ke `iot/test` topik ke dalam bucket Amazon S3 yang ditentukan. Pernyataan SQL memfilter pesan, dan peran ARN AWS IoT memberikan izin untuk menambahkan pesan ke bucket Amazon S3.

   ```
   {
   	"sql": "SELECT * FROM 'iot/test'",
   	"ruleDisabled": false,
   	"awsIotSqlVersion": "2016-03-23",
   	"actions": [
   		{
   			"s3": {
   				"bucketName": "amzn-s3-demo-bucket",
   				"key": "${topic()}/${timestamp()}",
   				"roleArn": "arn:aws:iam::1111-1111-1111:role/my-iot-role"
   			}
   		}
   	]
   }
   ```

   Untuk informasi selengkapnya tentang cara menentukan tindakan Amazon S3 dalam AWS IoT aturan, lihat [tindakan AWS IoT aturan - Amazon S3](https://docs.aws.amazon.com/iot/latest/developerguide/s3-rule-action.html).

**Lakukan tugas Akun B**

1. [Konfigurasikan AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) menggunakan pengguna IAM akun B. 

1. Buat kebijakan bucket yang mempercayai prinsipal akun A.

   Berikut ini adalah contoh file payload yang mendefinisikan kebijakan bucket yang mempercayai prinsipal akun lain.  
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AddCannedAcl",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::123456789012:root"
                   ]
           },
               "Action": "s3:PutObject",
               "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
           }
       ]
   }
   ```

   Untuk informasi selengkapnya, lihat [contoh kebijakan bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-use-case-1).

1. Untuk melampirkan kebijakan bucket ke bucket yang ditentukan, jalankan perintah [put-bucket-policy](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-policy.html).

   ```
   aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://./{{amzn-s3-demo-bucket-policy.json}}
   ```

1. Untuk membuat akses lintas akun berfungsi, pastikan Anda memiliki pengaturan **Blokir semua akses publik** yang benar. Untuk informasi selengkapnya, lihat [Praktik Terbaik Keamanan untuk Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html).

## Cross-account penyiapan untuk AWS Lambda
<a name="cross-account-lambda"></a>

Skenario: Akun A memanggil AWS Lambda fungsi akun B, meneruskan pesan MQTT.


| Akun AWS | Akun disebut sebagai  | Deskripsi | 
| --- | --- | --- | 
| {{1111-1111-1111}} | Akun A | Tindakan aturan: lambda:InvokeFunction | 
| {{2222-2222-2222}} | Akun B | Fungsi Lambda ARN: {{ arn:aws:lambda:region:2222-2222-2222:function:example-function}}  | 

**Lakukan tugas Akun A**
**Catatan**  
 Untuk menjalankan perintah berikut, pengguna IAM Anda harus memiliki izin `iot:CreateTopicRule` dengan aturan ARN sebagai sumber daya, dan izin untuk `iam:PassRole` bertindak dengan sumber daya sebagai peran ARN.

1. [Konfigurasikan AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) menggunakan pengguna IAM akun A. 

1. Jalankan [perintah create-topic-rule](https://docs.aws.amazon.com/cli/latest/reference/iot/create-topic-rule.html) untuk membuat aturan yang mendefinisikan akses lintas akun ke fungsi Lambda akun B.

   ```
   aws iot create-topic-rule --rule-name {{my-rule}} --topic-rule-payload file://./{{my-rule.json}}
   ```

   Berikut ini adalah contoh file payload dengan aturan yang menyisipkan semua pesan yang dikirim ke `iot/test` topik ke dalam fungsi Lambda yang ditentukan. Pernyataan SQL memfilter pesan dan peran ARN AWS IoT memberikan izin untuk meneruskan data ke fungsi Lambda.

   ```
   {
   	"sql": "SELECT * FROM 'iot/test'",
   	"ruleDisabled": false,
   	"awsIotSqlVersion": "2016-03-23",
   	"actions": [
   		{
   			"lambda": {
   				"functionArn": "arn:aws:lambda:region:2222-2222-2222:function:example-function"
   			}
   		}
   	]
   }
   ```

   Untuk informasi lebih lanjut tentang cara mendefinisikan AWS Lambda tindakan dalam AWS IoT aturan, baca [tindakan AWS IoT aturan - Lambda](https://docs.aws.amazon.com/iot/latest/developerguide/lambda-rule-action.html).

**Lakukan tugas Akun B**

1. [Konfigurasikan AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) menggunakan pengguna IAM akun B. 

1. Jalankan [perintah add-permission Lambda](https://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html) untuk memberikan izin AWS IoT aturan untuk mengaktifkan fungsi Lambda. Untuk menjalankan perintah berikut, pengguna IAM Anda harus memiliki izin untuk `lambda:AddPermission` bertindak.

   ```
   aws lambda add-permission --function-name {{example-function}} --region {{us-east-1}} --principal iot.amazonaws.com --source-arn {{arn:aws:iot:region:1111-1111-1111:rule/example-rule}} --source-account {{1111-1111-1111}} --statement-id {{"unique_id"}} --action "lambda:InvokeFunction"
   ```

   **Pilihan:**

   **--kepala sekolah**

    Bidang ini memberikan izin untuk AWS IoT (diwakili oleh`iot.amazonaws.com`) untuk memanggil fungsi Lambda.

   **--sumber-arn**

   Bidang ini mengonfirmasi bahwa hanya `arn:aws:iot:region:1111-1111-1111:rule/example-rule` dalam AWS IoT memicu fungsi Lambda ini dan tidak ada aturan lain di akun yang sama atau berbeda yang dapat mengaktifkan fungsi Lambda ini.

   **--sumber-akun**

   Bidang ini mengonfirmasi bahwa AWS IoT mengaktifkan fungsi Lambda ini hanya atas nama akun. `1111-1111-1111`
**Catatan**  
Jika Anda melihat pesan kesalahan “Aturan tidak dapat ditemukan” dari konsol AWS Lambda fungsi Anda di bawah **Konfigurasi**, abaikan pesan kesalahan dan lanjutkan untuk menguji koneksi.