Mengakses sumber daya lintas akun menggunakan aturan AWS IoT - AWS IoT Core

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 aturan AWS IoT

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

Aturan lintas akun dapat dikonfigurasi menggunakan izin berbasis sumber daya 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 AmazonSQS, AmazonSNS, Amazon S3, dan. AWS Lambda

catatan

Untuk tujuan yang didukung, kecuali AmazonSQS, Anda harus menentukan aturan yang Wilayah AWS 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. Untuk informasi selengkapnya tentang SQS tindakan aturan, lihatSQS.

Prasyarat

Penyiapan lintas akun untuk Amazon SQS

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

Akun AWS Akun disebut sebagai Deskripsi
1111-1111-1111 Akun A Tindakan aturan: sqs:SendMessage
2222-2222-2222 Akun B SQSAntrian Amazon
  • ARN: arn:aws:sqs:region:2222-2222-2222:ExampleQueue

  • URL: https://sqs.region.amazonaws.com/2222-2222-2222/ExampleQueue

catatan

SQSAntrian Amazon tujuan Anda tidak harus Wilayah AWS sama dengan AWS IoT aturan Anda. Untuk informasi selengkapnya tentang SQS tindakan aturan, lihatSQS.

Lakukan tugas Akun A
Catatan

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

  1. Konfigurasikan AWS CLI menggunakan IAM pengguna akun A.

  2. Buat IAM peran 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.

  3. Untuk membuat aturan yang dilampirkan ke topik, jalankan create-topic-rule perintah.

    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. SQLPernyataan tersebut memfilter pesan dan peran ARN memberikan AWS IoT izin untuk menambahkan pesan ke antrian AmazonSQS.

    { "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 SQS tindakan Amazon dalam AWS IoT aturan, lihat tindakan AWS IoT aturan - Amazon SQS.

Lakukan tugas Akun B
  1. Konfigurasikan AWS CLI menggunakan IAM pengguna akun B.

  2. Untuk memberikan izin sumber daya SQS antrian Amazon ke akun A, jalankan perintah add-permission.

    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

Penyiapan lintas akun untuk Amazon SNS

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

Akun AWS Akun disebut sebagai Deskripsi
1111-1111-1111 Akun A Tindakan aturan: sns:Publish
2222-2222-2222 Akun B SNSTopik AmazonARN: arn:aws:sns:region:2222-2222-2222:ExampleTopic
Lakukan tugas Akun A
Catatan

Untuk menjalankan perintah berikut, IAM pengguna 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 menggunakan IAM pengguna akun A.

  2. Buat IAM peran 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.

  3. Untuk membuat aturan yang dilampirkan ke topik, jalankan create-topic-rule perintah.

    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. SQLPernyataan tersebut memfilter pesan, dan peran ARN memberikan AWS IoT izin untuk mengirim pesan ke topik AmazonSNS.

    { "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 SNS tindakan Amazon dalam AWS IoT aturan, lihat tindakan AWS IoT aturan - Amazon SNS.

Lakukan tugas Akun B
  1. Konfigurasikan AWS CLI menggunakan IAM pengguna akun B.

  2. Untuk memberikan izin pada sumber daya SNS topik Amazon ke akun A, jalankan perintah add-permission.

    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

Penyiapan lintas akun untuk Amazon S3

Skenario: Akun A mengirim data dari MQTT pesan 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, IAM pengguna 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 menggunakan IAM pengguna akun A.

  2. Buat IAM peran yang mempercayai mesin AWS IoT aturan dan lampirkan kebijakan yang memungkinkan akses ke bucket Amazon S3 akun B. Misalnya perintah dan dokumen kebijakan, lihat Memberikan akses AWS IoT yang diperlukan.

  3. Untuk membuat aturan yang dilampirkan ke bucket S3 target Anda, jalankan create-topic-rule perintah.

    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. SQLPernyataan tersebut memfilter pesan, dan peran ARN memberikan AWS IoT 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.

Lakukan tugas Akun B
  1. Konfigurasikan AWS CLI menggunakan IAM pengguna akun B.

  2. Buat kebijakan bucket yang mempercayai prinsipal akun A.

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

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

    Untuk informasi selengkapnya, lihat contoh kebijakan bucket.

  3. Untuk melampirkan kebijakan bucket ke bucket yang ditentukan, jalankan put-bucket-policy perintah.

    aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://./amzn-s3-demo-bucket-policy.json
  4. 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.

Penyiapan lintas akun untuk AWS Lambda

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

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, IAM pengguna 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 menggunakan IAM pengguna akun A.

  2. Jalankan create-topic-rule perintah 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. SQLPernyataan memfilter pesan dan peran ARN memberikan AWS IoT 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.

Lakukan tugas Akun B
  1. Konfigurasikan AWS CLI menggunakan IAM pengguna akun B.

  2. Jalankan perintah add-permission Lambda untuk memberikan izin AWS IoT aturan untuk mengaktifkan fungsi Lambda. Untuk menjalankan perintah berikut, IAM pengguna 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 olehiot.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.

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