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
-
Pemahaman tentang IAMpengguna, peran, dan izin berbasis sumber daya
-
Setelah AWS CLImenginstal
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 |
---|---|---|
|
Akun A | Tindakan aturan: sqs:SendMessage |
|
Akun B | SQSAntrian Amazon
|
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
-
Konfigurasikan AWS CLI menggunakan IAM pengguna akun A.
-
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.
-
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
-
Konfigurasikan AWS CLI menggunakan IAM pengguna akun B.
-
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
--labelSendMessagesToMyQueue
--aws-account-ids1111-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 |
---|---|---|
|
Akun A | Tindakan aturan: sns:Publish |
|
Akun B | SNSTopik AmazonARN: |
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
-
Konfigurasikan AWS CLI menggunakan IAM pengguna akun A.
-
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.
-
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
-
Konfigurasikan AWS CLI menggunakan IAM pengguna akun B.
-
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
--labelPublish-Permission
--aws-account-id1111-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 |
---|---|---|
|
Akun A | Tindakan aturan: s3:PutObject |
|
Akun B | Ember Amazon S3: ARN |
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
-
Konfigurasikan AWS CLI menggunakan IAM pengguna akun A.
-
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.
-
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
-
Konfigurasikan AWS CLI menggunakan IAM pengguna akun B.
-
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.
-
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
-
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 |
---|---|---|
|
Akun A | Tindakan aturan: lambda:InvokeFunction |
|
Akun B | Fungsi Lambda: ARN |
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
-
Konfigurasikan AWS CLI menggunakan IAM pengguna akun A.
-
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
-
Konfigurasikan AWS CLI menggunakan IAM pengguna akun B.
-
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
--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 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.--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.