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
Anda dapat mengonfigurasi AWS IoT aturan untuk akses lintas akun sehingga data yang dicerna pada topik MQTT dari satu akun dapat dialihkan ke AWS layanan, seperti Amazon SQS dan Lambda, dari akun lain. Berikut ini menjelaskan cara mengatur AWS IoT aturan untuk penyerapan data lintas akun, dari topik MQTT di satu akun, ke tujuan di akun lain.
Cross-account aturan 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 Amazon SQS, Amazon SNS, Amazon S3, dan. AWS Lambda
catatan
Untuk tujuan yang didukung, kecuali untuk Amazon SQS, 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 tindakan SQS aturan, lihatSQS.
Prasyarat
-
Keakraban dengan aturan AWS IoT
-
Pemahaman tentang pengguna IAM, peran, dan izin berbasis sumber daya
-
Setelah AWS CLI menginstal
Cross-account pengaturan untuk Amazon SQS
Skenario: Akun A mengirimkan data dari pesan MQTT ke antrian Amazon SQS akun B.
| Akun AWS | Akun disebut sebagai | Deskripsi |
|---|---|---|
|
Akun A | Tindakan aturan: sqs:SendMessage |
|
Akun B | Antrean Amazon SQS
|
catatan
Antrian Amazon SQS tujuan Anda tidak harus Wilayah AWS sama dengan AWS IoT aturan Anda. Untuk informasi selengkapnya tentang tindakan SQS aturan, lihatSQS.
Lakukan tugas Akun A
Catatan
Untuk menjalankan perintah berikut, pengguna IAM Anda harus memiliki izin untuk iot:CreateTopicRule menggunakan Nama Sumber Daya Amazon (ARN) aturan sebagai sumber daya, dan izin untuk iam:PassRole bertindak dengan sumber daya sebagai ARN peran.
-
Konfigur AWS CLI asikan menggunakan pengguna IAM akun A.
-
Buat peran IAM yang mempercayai mesin AWS IoT aturan, dan melampirkan kebijakan yang memungkinkan akses ke antrian Amazon SQS akun B. Lihat contoh perintah dan dokumen kebijakan di Mem berikan akses AWS IoT yang diperlukan.
-
Untuk membuat aturan yang dilampirkan ke topik, jalankan perintah create-topic-rule.
aws iot create-topic-rule --rule-namemyRule--topic-rule-payload file://./my-rule.jsonBerikut ini adalah contoh file payload dengan aturan yang menyisipkan semua pesan yang dikirim ke
iot/testtopik ke dalam antrian Amazon SQS yang ditentukan. Pernyataan SQL memfilter pesan dan peran ARN memberikan AWS IoT 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 SQ S.
Lakukan tugas Akun B
-
Konfigur AWS CLI asikan menggunakan pengguna IAM akun B.
-
Untuk memberikan izin untuk sumber daya antrian Amazon SQS ke akun A, jalankan perintah add-permissions.
aws sqs add-permission --queue-urlhttps://sqs.region.amazonaws.com/2222-2222-2222/ExampleQueue--labelSendMessagesToMyQueue--aws-account-ids1111-1111-1111--actions SendMessage
Cross-account pengaturan untuk Amazon SNS
Skenario: Akun A mengirimkan data dari pesan MQTT ke topik Amazon SNS akun B.
| Akun AWS | Akun disebut sebagai | Deskripsi |
|---|---|---|
|
Akun A | Tindakan aturan: sns:Publish |
|
Akun B | Topik Amazon SNS ARN: |
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.
-
Konfigur AWS CLI asikan menggunakan pengguna IAM akun A.
-
Buat peran IAM yang mempercayai mesin AWS IoT aturan, dan melampirkan kebijakan yang memungkinkan akses ke topik Amazon SNS akun B. Misalnya perintah dan dokumen kebijakan, lihat Mem berikan akses AWS IoT yang diperlukan.
-
Untuk membuat aturan yang dilampirkan ke topik, jalankan perintah create-topic-rule.
aws iot create-topic-rule --rule-namemyRule--topic-rule-payload file://./my-rule.jsonBerikut ini adalah contoh file payload dengan aturan yang menyisipkan semua pesan yang dikirim ke
iot/testtopik 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 SN S.
Lakukan tugas Akun B
-
Konfigur AWS CLI asikan menggunakan pengguna IAM akun B.
-
Untuk memberikan izin pada sumber daya topik Amazon SNS ke akun A, jalankan perintah add-permissions.
aws sns add-permission --topic-arnarn:aws:sns:region:2222-2222-2222:ExampleTopic--labelPublish-Permission--aws-account-id1111-1111-1111--action-name Publish
Cross-account pengaturan untuk Amazon S3
Skenario: Akun A mengirimkan data dari pesan MQTT ke bucket Amazon S3 akun B.
| Akun AWS | Akun disebut sebagai | Deskripsi |
|---|---|---|
|
Akun A | Tindakan aturan: s3:PutObject |
|
Akun B | Ember Amazon S3 ARN: |
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.
-
Konfigur AWS CLI asikan menggunakan pengguna IAM akun A.
-
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 Mem berikan akses AWS IoT yang diperlukan.
-
Untuk membuat aturan yang dilampirkan ke bucket S3 target Anda, jalankan perintah create-topic-rule.
aws iot create-topic-rule --rule-namemy-rule--topic-rule-payload file://./my-rule.jsonBerikut ini adalah contoh file payload dengan aturan yang menyisipkan semua pesan yang dikirim ke
iot/testtopik 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.
Lakukan tugas Akun B
-
Konfigur AWS CLI asikan menggunakan pengguna IAM akun B.
-
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.
-
Untuk melampirkan kebijakan bucket ke bucket yang ditentukan, jalankan perintah put-bucket-policy.
aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://./amzn-s3-demo-bucket-policy.json -
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.
Cross-account pengaturan untuk AWS Lambda
Skenario: Akun A memanggil AWS Lambda fungsi akun B, meneruskan pesan MQTT.
| Akun AWS | Akun disebut sebagai | Deskripsi |
|---|---|---|
|
Akun A | Tindakan aturan: lambda:InvokeFunction |
|
Akun B | Fungsi Lambda ARN: |
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 resource sebagai peran ARN.
-
Konfigur AWS CLI asikan menggunakan pengguna IAM akun A.
-
Jalankan perintah create-topic-rule untuk membuat aturan yang mendefinisikan akses lintas akun ke fungsi Lambda akun B.
aws iot create-topic-rule --rule-namemy-rule--topic-rule-payload file://./my-rule.jsonBerikut ini adalah contoh file payload dengan aturan yang menyisipkan semua pesan yang dikirim ke
iot/testtopik ke fungsi Lambda yang ditentukan. Pernyataan SQL menyaring 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 selengkapnya tentang cara mendefinisikan AWS Lambda tindakan dalam AWS IoT aturan, baca tindakan AWS IoT aturan - Lambda.
Lakukan tugas Akun B
-
Konfigur AWS CLI asikan menggunakan pengguna IAM akun B.
-
Jalankan perintah add-permissions Lambda untuk memberikan izin AWS IoT aturan untuk mengaktifkan fungsi Lambda. Untuk menjalankan perintah berikut, pengguna IAM Anda harus memiliki izin untuk
lambda:AddPermissionbertindak.aws lambda add-permission --function-nameexample-function--regionus-east-1--principal iot.amazonaws.com --source-arnarn:aws:iot:region:1111-1111-1111:rule/example-rule--source-account1111-1111-1111--statement-id"unique_id"--action "lambda:InvokeFunction"Pilihan:
--kepala sekolah
Bidang ini memberikan izin kepada 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-ruledalam 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
1111-1111-1111akun.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.