为了将数据正确保存到AWS IoT Timestream中,需要使用正确的IAM角色。确保IAM角色具有足够的权限访问Timestream,并且在实例化TimestreamWriteClient时使用正确的角色ARN。同时,在发送数据点之前,需要明确指定正确的Database名称和Table名称。示例代码如下:
import boto3
from datetime import datetime
from awscli.customizations import args
# 这里替换为正确的IAM角色ARN
timestream_role = 'arn:aws:iam::123456789012:role/TimestreamAccessRole'
session = boto3.Session()
timestream_write_client = session.client('timestream-write', region_name='us-east-1')
DATABASE_NAME = 'myDB'
TABLE_NAME = 'myTable'
# 构造数据点
data_point = {
'Time': str(datetime.utcnow().timestamp()),
'Dimensions': [
{'Name': 'Region', 'Value': 'us-east-1'},
{'Name': 'IP', 'Value': '1.2.3.4'}
],
'MeasureName': 'Latency',
'MeasureValue': '100'
}
# 发送数据点
response = timestream_write_client.write_records(
DatabaseName=DATABASE_NAME,
TableName=TABLE_NAME,
Records=[data_point],
CommonAttributes={}
)
print(response)
需要指出的是,IAM角色需要满足以下要求:
如果以上要求均已满足,但仍然无法保存数据,则需要仔细检查代码逻辑是否出现问题。