Acessando recursos entre contas usando regras AWS IoT - AWS IoT Core

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

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
1111-1111-1111 Conta A Ação da regra: sqs:SendMessage
2222-2222-2222 Conta B SQSFila da Amazon
  • ARN: arn:aws:sqs:region:2222-2222-2222:ExampleQueue

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

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.

  1. Configure AWS CLI usando o IAM usuário da conta A.

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

  3. 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
  1. Configure AWS CLI usando o IAM usuário da conta B.

  2. 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 --label SendMessagesToMyQueue --aws-account-ids 1111-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
1111-1111-1111 Conta A Ação da regra: sns:Publish
2222-2222-2222 Conta B SNSTópico da AmazonARN: arn:aws:sns:region:2222-2222-2222:ExampleTopic
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.

  1. Configure AWS CLI usando o IAM usuário da conta A.

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

  3. 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
  1. Configure AWS CLI usando o IAM usuário da conta B.

  2. 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 --label Publish-Permission --aws-account-id 1111-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
1111-1111-1111 Conta A Ação da regra: s3:PutObject
2222-2222-2222 Conta B Bucket Amazon S3: ARN arn:aws:s3:::amzn-s3-demo-bucket
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.

  1. Configure AWS CLI usando o IAM usuário da conta A.

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

  3. 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
  1. Configure AWS CLI usando o IAM usuário da conta B.

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

  3. 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
  4. 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
1111-1111-1111 Conta A Ação da regra: lambda:InvokeFunction
2222-2222-2222 Conta B Função Lambda: ARN arn:aws:lambda:region:2222-2222-2222:function:example-function
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.

  1. Configure AWS CLI usando o IAM usuário da conta A.

  2. 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
  1. Configure AWS CLI usando o IAM usuário da conta B.

  2. 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 --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"

    Opções:

    --entidade principal

    Esse campo dá permissão para AWS IoT (representado poriot.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.