기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
규칙을 사용하여 AWS IoT 교차 계정 리소스에 액세스
계정 간 액세스에 대한 AWS IoT 규칙을 구성하여 한 계정의 MQTT 주제에 수집된 데이터를 다른 계정의 Amazon SQS 및 Lambda 같은 AWS 서비스로 라우팅할 수 있습니다. 다음은 한 계정의 MQTT 주제에서 다른 계정의 대상으로 계정 간 데이터 수집 AWS IoT 규칙을 설정하는 방법을 설명합니다.
대상 리소스에 대한 리소스 기반 권한을 사용하여 교차 계정 규칙을 구성할 수 있습니다. 따라서 리소스 기반 권한을 지원하는 대상만 규칙을 통한 계정 간 액세스를 활성화할 수 있습니다. AWS IoT 지원되는 대상에는 Amazon SQS, Amazon SNS, Amazon S3 및 AWS Lambda가 있습니다.
참고
Amazon SQS를 제외한 지원되는 대상의 경우, 규칙 작업이 해당 리소스와 상호 작용할 수 있도록 다른 서비스의 리소스와 동일한 AWS 리전 위치에 규칙을 정의해야 합니다. 규칙 작업에 대한 자세한 내용은 AWS IoT 규칙 조치를 참조하십시오AWS IoT . 규칙의 SQS 작업에 대한 자세한 내용은 을 참조하십시오SQS.
사전 조건
-
AWS IoT 규칙 숙지
-
AWS CLI가 설치되어 있음
Amazon SQS에 대한 교차 계정 설정
시나리오: 계정 A는 MQTT 메시지의 데이터를 계정 B의 Amazon SQS 대기열에 전송합니다.
AWS 계정 | 계정 이름 | 설명 |
---|---|---|
|
계정 A | 규칙 작업: sqs:SendMessage |
|
계정 B | Amazon SQS 대기열
|
참고
대상 Amazon SQS 대기열이 AWS 리전 규칙과 같을 필요는 없습니다.AWS IoT 규칙의 SQS 작업에 대한 자세한 내용은 을 참조하십시오. SQS
계정 A 태스크 수행
참고
다음 명령을 실행하려면 규칙의 Amazon 리소스 이름(ARN)을 리소스로 사용하는 iot:CreateTopicRule
에 대한 권한과 리소스를 역할의 ARN으로 사용하는 iam:PassRole
작업에 대한 권한이 IAM 사용자에게 있어야 합니다.
-
계정 A의 IAM 사용자를 사용하여 AWS CLI를 구성합니다.
-
AWS IoT 규칙 엔진을 신뢰하는 IAM 역할을 생성하고 계정 B의 Amazon SQS 대기열에 대한 액세스를 허용하는 정책을 연결합니다. 필요한 액세스 권한 AWS IoT 부여의 예제 명령 및 정책 문서를 참조하십시오.
-
주제에 첨부된 규칙을 만들려면 create-topic-rule 명령을 실행합니다.
aws iot create-topic-rule --rule-name
myRule
--topic-rule-payload file://./my-rule.json
다음은
iot/test
주제에 전송된 모든 메시지를 지정된 Amazon SQS 대기열에 삽입하는 규칙이 있는 페이로드 파일의 예입니다. SQL 문은 메시지를 필터링하고 역할 ARN은 Amazon SQS 대기열에 메시지를 추가할 수 있는 권한을 AWS IoT 에 부여합니다.{ "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 } } ] }
규칙에서 Amazon SQS 작업을 정의하는 방법에 대한 자세한 내용은 AWS IoT AWS IoT 규칙 작업 - Amazon SQS를 참조하십시오.
계정 B 태스크 수행
-
계정 B의 IAM 사용자를 사용하여 AWS CLI를 구성합니다.
-
Amazon SQS 대기열 리소스에 대한 권한을 계정 A에 부여하려면 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
Amazon SNS를 위한 교차 계정 설정
시나리오: 계정 A는 MQTT 메시지의 데이터를 계정 B의 Amazon SNS 주제에 전송합니다.
AWS 계정 | 계정 이름 | 설명 |
---|---|---|
|
계정 A | 규칙 작업: sns:Publish |
|
계정 B | Amazon SNS 주제 ARN: |
계정 A 태스크 수행
참고
다음 명령을 실행하려면 규칙 ARN을 리소스로 사용하는 iot:CreateTopicRule
에 대한 권한과 리소스를 역할 ARN으로 사용하는 iam:PassRole
작업에 대한 권한이 IAM 사용자에게 있어야 합니다.
-
계정 A의 IAM 사용자를 사용하여 AWS CLI를 구성합니다.
-
AWS IoT 규칙 엔진을 신뢰하는 IAM 역할을 생성하고 계정 B의 Amazon SNS 주제에 대한 액세스를 허용하는 정책을 연결합니다. 명령 및 정책 문서의 예는 필요한 액세스 권한 AWS IoT 부여를 참조하십시오.
-
주제에 첨부된 규칙을 만들려면 create-topic-rule 명령을 실행합니다.
aws iot create-topic-rule --rule-name
myRule
--topic-rule-payload file://./my-rule.json
다음은
iot/test
주제에 전송된 모든 메시지를 지정된 Amazon SNS 주제에 삽입하는 규칙이 있는 예제 페이로드 파일입니다. SQL 문은 메시지를 필터링하고, 역할 ARN은 메시지를 Amazon SNS 주제로 전송할 AWS IoT 권한을 부여합니다.{ "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" } } ] }
규칙에서 Amazon SNS 작업을 정의하는 방법에 대한 자세한 내용은 AWS IoT AWS IoT 규칙 작업 - Amazon SNS를 참조하십시오.
계정 B 태스크 수행
-
계정 B의 IAM 사용자를 사용하여 AWS CLI를 구성합니다.
-
Amazon SNS 주제 리소스에 대한 권한을 계정 A에 부여하려면 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
Amazon S3를 위한 교차 계정 설정
시나리오: 계정 A는 MQTT 메시지의 데이터를 계정 B의 Amazon S3 버킷에 전송합니다.
AWS 계정 | 계정 이름 | 설명 |
---|---|---|
|
계정 A | 규칙 작업: s3:PutObject |
|
계정 B | Amazon S3 버킷 ARN: |
계정 A 태스크 수행
참고
다음 명령을 실행하려면 규칙 ARN을 리소스로 사용하는 iot:CreateTopicRule
에 대한 권한과 리소스를 역할 ARN으로 사용하는 iam:PassRole
작업에 대한 권한이 IAM 사용자에게 있어야 합니다.
-
계정 A의 IAM 사용자를 사용하여 AWS CLI를 구성합니다.
-
AWS IoT 규칙 엔진을 신뢰하고 계정 B의 Amazon S3 버킷에 대한 액세스를 허용하는 정책을 연결하는 IAM 역할을 생성합니다. 명령 및 정책 문서의 예는 필요한 액세스 권한 AWS IoT 부여를 참조하십시오.
-
대상 S3 버킷에 연결된 규칙을 생성하려면 create-topic-rule 명령을 실행합니다.
aws iot create-topic-rule --rule-name
my-rule
--topic-rule-payload file://./my-rule.json
다음 예제는
iot/test
주제에 전송된 모든 메시지를 지정된 Amazon S3 버킷에 삽입하는 규칙을 포함한 페이로드 파일입니다. SQL 문은 메시지를 필터링하고 역할 ARN은 Amazon S3 버킷에 메시지를 추가할 수 있는 권한을 AWS IoT 에 부여합니다.{ "sql": "SELECT * FROM 'iot/test'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "s3": { "bucketName": "ExampleBucket", "key": "${topic()}/${timestamp()}", "roleArn": "arn:aws:iam::1111-1111-1111:role/my-iot-role" } } ] }
규칙에서 Amazon S3 작업을 정의하는 방법에 대한 자세한 내용은 AWS IoT AWS IoT 규칙 작업 - Amazon S3를 참조하십시오.
계정 B 태스크 수행
-
계정 B의 IAM 사용자를 사용하여 AWS CLI를 구성합니다.
-
계정 A의 보안 주체를 신뢰하는 버킷 정책을 만듭니다.
다음 예제는 다른 계정의 보안 주체를 신뢰하는 버킷 정책을 정의하는 페이로드 파일입니다.
{ "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:::ExampleBucket/*" } ] }
자세한 정보는 버킷 정책 예제 단원을 참조하세요.
-
지정된 버킷에 버킷 정책을 연결하려면 put-bucket-policy 명령을 실행합니다.
aws s3api put-bucket-policy --bucket ExampleBucket --policy file://./
my-bucket-policy.json
-
교차 계정 액세스가 작동하도록 하려면 모든 퍼블릭 액세스 차단(Block all public access) 설정이 올바른지 확인하세요. 자세한 내용은 Amazon S3 보안 모범 사례를 참조하세요.
교차 계정 설정: AWS Lambda
시나리오: 계정 A가 계정 B의 AWS Lambda 함수를 호출하여 MQTT 메시지를 전달합니다.
AWS 계정 | 계정 이름 | 설명 |
---|---|---|
|
계정 A | 규칙 작업: lambda:InvokeFunction |
|
계정 B | Lambda 함수 ARN: |
계정 A 태스크 수행
참고
다음 명령을 실행하려면 규칙 ARN을 리소스로 사용하는 iot:CreateTopicRule
에 대한 권한과 리소스를 역할 ARN으로 사용하는 iam:PassRole
작업에 대한 권한이 IAM 사용자에게 있어야 합니다.
-
계정 A의 IAM 사용자를 사용하여 AWS CLI를 구성합니다.
-
create-topic-rule 명령을 실행하여 계정 B의 Lambda 함수에 대한 계정 간 액세스를 정의하는 규칙을 생성합니다.
aws iot create-topic-rule --rule-name
my-rule
--topic-rule-payload file://./my-rule.json
다음 예제는
iot/test
주제에 전송된 모든 메시지를 지정된 Lambda 함수에 삽입하는 규칙을 포함한 페이로드 파일입니다. SQL 문은 메시지를 필터링하고 역할 ARN은 Lambda 함수에 데이터를 전달할 AWS IoT 권한을 부여합니다.{ "sql": "SELECT * FROM 'iot/test'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "lambda": { "functionArn": "arn:aws:lambda:region:2222-2222-2222:function:example-function" } } ] }
규칙에서 AWS Lambda 작업을 정의하는 방법에 대한 자세한 내용은 AWS IoT AWS IoT 규칙 작업 - Lambda를 참조하십시오.
계정 B 태스크 수행
-
계정 B의 IAM 사용자를 사용하여 AWS CLI를 구성합니다.
-
Lambda의 추가 권한 명령을 실행하여 규칙에 Lambda 함수를 활성화할 권한을 AWS IoT 부여합니다. 다음 명령을 실행하려면 IAM 사용자에게
lambda:AddPermission
작업에 대한 권한이 있어야 합니다.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"옵션:
--principal
이 필드는 Lambda 함수를 호출할 수 있는 권한 AWS IoT (으로 표시
iot.amazonaws.com
) 을 부여합니다.--source-arn
이 필드는 AWS IoT 의
arn:aws:iot:region:1111-1111-1111:rule/example-rule
만 이 Lambda 함수를 트리거하고 동일하거나 다른 계정의 다른 규칙이 이 Lambda 함수를 활성화할 수 없도록 확정합니다.--source-account
이 필드는 계정을 대신해서만 이 Lambda 함수를 AWS IoT 활성화한다는 것을 확인합니다.
1111-1111-1111
참고
구성 아래의 AWS Lambda 함수 콘솔에서 "규칙을 찾을 수 없습니다"라는 오류 메시지가 표시되면 오류 메시지를 무시하고 연결 테스트를 진행하세요.