AWS IoT ルールに必要なアクセスを付与する
IAM ロールは、各ルールからアクセスできる AWS リソースを制御するために使用します。ルールを作成するには、必要な AWS リソースへのアクセスを許可するポリシーを指定した IAM ロールを作成する必要があります。AWS IoT は、ルールの実行時にこのロールを引き受けます。
必要なアクセスを AWS IoT ルールに付与する IAM ロール および AWS IoT ポリシーを作成するには (AWS CLI)
-
次の信頼ポリシードキュメントを
iot-role-trust.json
という名前のファイルに保存します。このポリシーでは、ロールを適用するアクセス許可が AWS IoT に付与されます。この例には、「混乱した代理」問題から保護するためのグローバル条件コンテキストキーが含まれています。AWS IoT ルールでは、
aws:SourceArn
はarn:aws:iot:
の形式に従う必要があります。region
:account-id
:*region
がお客様の AWS IoT リージョンと一致し、account-id
がお客様のカスタマーアカウント ID と一致することを確認してください。{ "Version":"2012-10-17", "Statement":[{ "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "
123456789012
" }, "ArnLike": { "aws:SourceArn": "arn:aws:iot:us-east-1
:123456789012
:*" } } }] }create-role コマンドを使用し、
iot-role-trust.json
ファイルを指定して IAM ロールを作成します。aws iam create-role --role-name
my-iot-role
--assume-role-policy-document file://iot-role-trust.json
このコマンドの出力は以下のようになります。
{ "Role": { "AssumeRolePolicyDocument": "url-encoded-json", "RoleId": "AKIAIOSFODNN7EXAMPLE", "CreateDate": "2015-09-30T18:43:32.821Z", "RoleName": "my-iot-role", "Path": "/", "Arn": "
arn:aws:iam::123456789012:role/my-iot-role
" } } -
次の JSON を
my-iot-policy.json
という名前のファイルに保存します。{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "dynamodb:*", "Resource": "*" }] }
この JSON は、DynamoDB への管理者アクセス権を AWS IoT に付与するポリシードキュメントの例です。
create-policy コマンドを使用して、ロールの引き受け時に AWS リソースへのアクセス権を AWS IoT に付与し、
my-iot-policy.json
ファイルを渡します。aws iam create-policy --policy-name
my-iot-policy
--policy-document file://my-iot-policy.json
AWS のポリシーで AWS IoT サービスへのアクセスを許可する方法については、「AWS IoT ルールの作成」を参照してください。
create-policy コマンドの出力には、ポリシーの ARN が含められます。このポリシーをロールにアタッチする必要があります。
{ "Policy": { "PolicyName": "my-iot-policy", "CreateDate": "2015-09-30T19:31:18.620Z", "AttachmentCount": 0, "IsAttachable": true, "PolicyId": "ZXR6A36LTYANPAI7NJ5UV", "DefaultVersionId": "v1", "Path": "/", "Arn": "
arn:aws:iam::123456789012:policy/my-iot-policy
", "UpdateDate": "2015-09-30T19:31:18.620Z" } } -
ポリシーをロールにアタッチするには、attach-role-policy コマンドを使用します。
aws iam attach-role-policy --role-name
my-iot-role
--policy-arn "arn:aws:iam::123456789012:policy/my-iot-policy
"