出现此错误的原因可能是因为您未获得使用设备影子REST API的权限。请确保已为您的AWS账户授予所需的权限,并在请求时提供所需的权限令牌。
以下是一些示例代码,可用于将权限令牌添加到您的AWS设备影子REST API请求中:
import boto3
from botocore.exceptions import ClientError
# 创建IAM访问密钥
access_key = 'your-access-key'
secret_key = 'your-secret-key'
# 创建IAM角色和STS令牌
iam = boto3.client('iam', aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
region_name='us-east-1')
sts = boto3.client('sts', aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
region_name='us-east-1')
assume_role_response = sts.assume_role(
RoleArn='arn:aws:iam::160501803049:role/my-iot-role',
RoleSessionName='my-iot-session'
)
# 使用角色STS令牌创建AWS设备影子REST API客户端
client = boto3.client('iot-data', aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
aws_session_token=assume_role_response['Credentials']['SessionToken'],
region_name='us-east-1')
# 调用设备影子REST API请求
try:
response = client.get_thing_shadow(thingName='my-iot-thing')
print(response['payload'].read())
except ClientError as e:
print(e.response['Error']['Code'])