As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Acessando recursos entre contas usando regras AWS IoT
Você pode configurar AWS IoT regras para acesso entre contas para que os dados ingeridos em MQTT tópicos de uma conta possam ser roteados para os AWS serviços, como Amazon e SQS Lambda, de outra conta. A seguir, explicamos como configurar AWS IoT regras para a ingestão de dados entre contas, de um MQTT tópico em uma conta até um destino em outra conta.
As regras entre contas podem ser configuradas usando permissões baseadas em recursos no recurso de destino. Portanto, somente destinos que oferecem suporte a permissões baseadas em recursos podem ser habilitados para o acesso entre contas com regras. AWS IoT Os destinos suportados incluem AmazonSQS, AmazonSNS, Amazon S3 e. AWS Lambda
nota
Para os destinos compatíveis, exceto a AmazonSQS, você deve definir a regra da mesma forma Região da AWS que o recurso de outro serviço para que a ação da regra possa interagir com esse recurso. Para obter mais informações sobre ações de AWS IoT regras, consulte ações de AWS IoT regras. Para obter mais informações sobre a SQS ação da regra, consulteSQS.
Pré-requisitos
-
Familiaridade com as AWS IoT regras
-
Uma compreensão dos IAMusuários, das funções e da permissão baseada em recursos
-
Tendo AWS CLI instalado
Configuração de várias contas para a Amazon SQS
Cenário: a conta A envia dados de uma MQTT mensagem para a SQS fila da Amazon da conta B.
Conta da AWS | Conta referida como | Descrição |
---|---|---|
|
Conta A | Ação da regra: sqs:SendMessage |
|
Conta B | SQSFila da Amazon
|
nota
Sua SQS fila de destino na Amazon não precisa estar na mesma Região da AWS AWS IoT regra. Para obter mais informações sobre a SQS ação da regra, consulteSQS.
Realizar as tarefas da Conta A
Observação
Para executar os comandos a seguir, seu IAM usuário deve ter permissões para iot:CreateTopicRule
usar o Amazon Resource Name (ARN) da regra como recurso e permissões para iam:PassRole
agir com um recurso como funçãoARN.
-
Configure AWS CLI usando o IAM usuário da conta A.
-
Crie uma IAM função que confie no mecanismo de AWS IoT regras e anexe uma política que permita acesso à fila da Amazon SQS da conta B. Veja exemplos de comandos e documentos de política em Concedendo AWS IoT o acesso necessário.
-
Para criar uma regra anexada a um tópico, execute o create-topic-rule comando.
aws iot create-topic-rule --rule-name
myRule
--topic-rule-payload file://./my-rule.json
Veja a seguir um exemplo de arquivo de carga útil com uma regra que insere todas as mensagens enviadas ao
iot/test
tópico na fila especificada da AmazonSQS. A SQL declaração filtra as mensagens e a função ARN concede AWS IoT permissões para adicionar a mensagem à SQS fila da Amazon.{ "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 } } ] }
Para obter mais informações sobre como definir uma SQS ação da Amazon em uma AWS IoT regra, consulte Ações de AWS IoT regras - Amazon SQS.
Realizar as tarefas da Conta B
-
Configure AWS CLI usando o IAM usuário da conta B.
-
Para conceder permissões para o recurso de SQS fila da Amazon para a conta A, execute o comando 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
Configuração de várias contas para a Amazon SNS
Cenário: a conta A envia dados de uma MQTT mensagem para um SNS tópico da conta B. da Amazon
Conta da AWS | Conta referida como | Descrição |
---|---|---|
|
Conta A | Ação da regra: sns:Publish |
|
Conta B | SNSTópico da AmazonARN: |
Realizar as tarefas da Conta A
Observações
Para executar os comandos a seguir, seu IAM usuário deve ter permissões para iot:CreateTopicRule
com a regra ARN como recurso e permissões para a iam:PassRole
ação com um recurso como funçãoARN.
-
Configure AWS CLI usando o IAM usuário da conta A.
-
Crie uma IAM função que confie no mecanismo de AWS IoT regras e anexe uma política que permita acesso ao tópico da Amazon SNS da conta B. Por exemplo, comandos e documentos de política, consulte Concedendo AWS IoT o acesso necessário.
-
Para criar uma regra anexada a um tópico, execute o create-topic-rule comando.
aws iot create-topic-rule --rule-name
myRule
--topic-rule-payload file://./my-rule.json
Veja a seguir um exemplo de arquivo de carga útil com uma regra que insere todas as mensagens enviadas ao
iot/test
tópico no tópico especificado da AmazonSNS. A SQL declaração filtra as mensagens e a função ARN concede AWS IoT permissões para enviar a mensagem para o SNS tópico da Amazon.{ "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" } } ] }
Para obter mais informações sobre como definir uma SNS ação da Amazon em uma AWS IoT regra, consulte Ações de AWS IoT regras - Amazon SNS.
Realizar as tarefas da Conta B
-
Configure AWS CLI usando o IAM usuário da conta B.
-
Para dar permissão no recurso de SNS tópicos da Amazon para a conta A, execute o comando 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
Configuração entre contas para o Amazon S3
Cenário: a conta A envia dados de uma MQTT mensagem para um bucket Amazon S3 da conta B.
Conta da AWS | Conta referida como | Descrição |
---|---|---|
|
Conta A | Ação da regra: s3:PutObject |
|
Conta B | Bucket Amazon S3: ARN |
Realizar as tarefas da Conta A
Observação
Para executar os comandos a seguir, seu IAM usuário deve ter permissões para iot:CreateTopicRule
usar a regra ARN como recurso e para iam:PassRole
agir com um recurso como funçãoARN.
-
Configure AWS CLI usando o IAM usuário da conta A.
-
Crie uma IAM função que confie no mecanismo de AWS IoT regras e anexe uma política que permita acesso ao bucket Amazon S3 da conta B. Por exemplo, comandos e documentos de política, consulte Concedendo AWS IoT o acesso necessário.
-
Para criar uma regra anexada ao seu bucket S3 de destino, execute o create-topic-rule comando.
aws iot create-topic-rule --rule-name
my-rule
--topic-rule-payload file://./my-rule.json
Veja a seguir um exemplo de arquivo de carga útil com uma regra que insere todas as mensagens enviadas ao tópico
iot/test
no bucket do Amazon S3 especificado. A SQL declaração filtra as mensagens e a função ARN concede AWS IoT permissões para adicionar a mensagem ao bucket do 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" } } ] }
Para obter mais informações sobre como definir uma ação do Amazon S3 em uma AWS IoT regra, consulte Ações de AWS IoT regras - Amazon S3.
Realizar as tarefas da Conta B
-
Configure AWS CLI usando o IAM usuário da conta B.
-
Crie uma política de bucket que confie na entidade principal da conta A.
Veja a seguir um exemplo de arquivo de carga útil que define uma política de bucket que confia na entidade principal de outra conta.
{ "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/*" } ] }
Para obter mais informações, consulte Exemplos de políticas de bucket.
-
Para anexar a política do bucket ao bucket especificado, execute o put-bucket-policy comando.
aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://./
amzn-s3-demo-bucket-policy.json
-
Para fazer o acesso entre contas funcionar, certifique-se de ter as configurações corretas de Bloquear todo o acesso público. Para obter mais informações, consulte Práticas recomendadas de segurança para o Amazon S3.
Configuração de várias contas para AWS Lambda
Cenário: a conta A invoca uma AWS Lambda função da conta B, transmitindo uma MQTT mensagem.
Conta da AWS | Conta referida como | Descrição |
---|---|---|
|
Conta A | Ação da regra: lambda:InvokeFunction |
|
Conta B | Função Lambda: ARN |
Realizar as tarefas da Conta A
Observações
Para executar os comandos a seguir, seu IAM usuário deve ter permissões para iot:CreateTopicRule
com regra ARN como recurso e permissões para iam:PassRole
ação com recurso como funçãoARN.
-
Configure AWS CLI usando o IAM usuário da conta A.
-
Execute o create-topic-rule comando para criar uma regra que defina o acesso entre contas à função Lambda da conta B.
aws iot create-topic-rule --rule-name
my-rule
--topic-rule-payload file://./my-rule.json
Veja a seguir um exemplo de arquivo de carga útil com uma regra que insere todas as mensagens enviadas para o tópico
iot/test
em uma função do Lambda especificada. A SQL declaração filtra as mensagens e a função ARN concede AWS IoT permissão para passar os dados para a função 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" } } ] }
Para obter mais informações sobre como definir uma AWS Lambda ação em uma AWS IoT regra, leia Ações de AWS IoT regras - Lambda.
Realizar as tarefas da Conta B
-
Configure AWS CLI usando o IAM usuário da conta B.
-
Execute o comando add-permission do Lambda para dar permissão às AWS IoT regras para ativar a função Lambda. Para executar o comando a seguir, seu IAM usuário deve ter permissão para
lambda:AddPermission
agir.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"Opções:
--entidade principal
Esse campo dá permissão para AWS IoT (representado por
iot.amazonaws.com
) chamar a função Lambda.--arn de origem
Este campo confirma que apenas
arn:aws:iot:region:1111-1111-1111:rule/example-rule
nos acionadores AWS IoT esta função do Lambda e nenhuma outra regra na mesma conta ou em conta diferente pode ativar esta função do Lambda.--conta de origem
Esse campo confirma que AWS IoT ativa essa função Lambda somente em nome da conta.
1111-1111-1111
Observações
Se você vir uma mensagem de erro "A regra não foi encontrada" no console da sua AWS Lambda função em Configuração, ignore a mensagem de erro e prossiga para testar a conexão.