本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
CreateDatasetExportJob 用于场景发现
先决条件
具有服务访问权限的目标 S3 存储桶
在导出数据之前,必须将存储桶策略附加到目标 S3 存储桶,允许该 Amazon IoT SiteWise 服务写入对象。将以下策略应用于您的存储桶({yourbucketname}替换为您的实际存储桶名称):
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowServiceToWriteObjects", "Effect": "Allow", "Principal": { "Service": "iotsitewise.amazonaws.com" }, "Action": "s3:*", "Resource": "arn:aws:s3:::{yourbucketname}/*" } ] }
注意
对于生产环境,可以考虑将操作范围缩小到仅限于服务所需的 S3 操作(例如,s3:GetBucketLocation)s3:PutObject,而不是使用s3:*的。
呼叫者的 IAM 权限
您的调用身份必须有权调用和描述导出任务 API。至少:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "InvokeDatasetExportJob", "Effect": "Allow", "Action": [ "iotsitewise:CreateDatasetExportJob", "iotsitewise:DescribeDatasetExportJob" ], "Resource": "*" } ] }
请求形状
端点
POST /workspaces/{workspaceName}/dataset-export-jobs HTTP/1.1
URI 参数
| 参数 | Type | 约束 | 必填 |
|---|---|---|---|
workspaceName |
字符串 | 1—64 个字符,模式:^[a-zA-Z0-9_-]+$ |
是 |
请求正文
| 参数 | Type | 约束 | 必填 | 注意 |
|---|---|---|---|---|
destinationS3Uri |
字符串 | 模式:s3://[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]/.+ |
是 | 写入导出数据的完整 S3 URI |
input |
ProcessingInput (工会) | 只指定了一个成员 | 是 | 用于处理的输入源 — 仅指定一个选项 |
errorReportLocation |
对象 | 必须包含s3Uri(字符串,S3 URI) |
是 | 写入错误报告的 Amazon S3 URI |
clientToken |
字符串 | 36—64 个字符,无空格 | 否 | 等效性标记。使用相同的令牌重新提交相同的请求会返回原始任务,而不会创建副本。 |
processingInput.trimSettings |
对象 | — | 否 | 用于修剪导出的数据段的配置。控制导出内容的起点和终点边界。 |
processingInput.formatSettings |
对象 | — | 否 | 导出数据的输出格式的配置。指定文件格式首选项和编码选项。 |
响应
{ "jobId": "string", "workspaceName": "string" }
成功时的 HTTP 状态:200 正常。
| 字段 | Type | 约束 |
|---|---|---|
jobId |
字符串 | 36 个字符的固定长度,模式:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} |
workspaceName |
字符串 | 1—64 个字符,模式:^[a-zA-Z0-9_-]+$ |
请求负载示例
将其另存为 export-job-request.json:
{ "destinationS3Uri": "s3://your-export-bucket/scenario-discovery/exports/car_120/2026-07-14/", "input": { "datasetId": "your-dataset-id" }, "errorReportLocation": { "s3Uri": "s3://my-bucket/export-errors/" } }
Amazon CLI
命令(使用输入文件):
aws iotsitewise create-dataset-export-job \ --region us-east-1 \ --workspace-name scenario_discovery_car120 \ --cli-input-json file://export-job-request.json
等效的行内表单:
aws iotsitewise create-dataset-export-job \ --region us-east-1 \ --workspace-name scenario_discovery_car120 \ --destination-s3-uri "s3://your-export-bucket/scenario-discovery/exports/car_120/2026-07-14/" \ --input '{"datasetId":"your-dataset-id"}' \ --error-report-location '{"s3Uri":"s3://my-bucket/export-errors/"}'
CLI-only 标志:
-
--region <name>(或AWS_REGION环境变量)— 必填项 -
--profile <name>— 从中选择一个已命名的个人资料~/.aws/config -
--cli-input-json file://...— 从 JSON 文件中读取请求正文 -
--generate-cli-skeleton— 打印空白的请求模板
示例输出:
{ "jobId": "a1b2c3d4-5678-90ab-cdef-1234567890ab", "workspaceName": "scenario_discovery_car120" }
boto3 (Python)
import boto3 client = boto3.client("iotsitewise", region_name="us-east-1") response = client.create_dataset_export_job( workspaceName="scenario_discovery_car120", destinationS3Uri="s3://your-export-bucket/scenario-discovery/exports/car_120/2026-07-14/", input={ "datasetId": "your-dataset-id" }, errorReportLocation={ "s3Uri": "s3://my-bucket/export-errors/" }, ) print(response["jobId"], response["workspaceName"])
boto3 特定注意事项:
-
region_name— 必填项、传递给boto3.client()或通过AWS_REGION/AWS_DEFAULT_REGION -
通过标准的 boto3 链(环境变量、角色
~/.aws/credentials、 instance/task SSO)解析证书 -
所有请求参数都使用与 API 模型相匹配的 camelCase 名称。
workspaceName以 kwarg 的形式传递;boto3 会将其放在 URL 路径上供你使用。 -
打包调用
try / except botocore.exceptions.ClientError以处理潜在错误。
curl(原始 HTTPS)
CreateDatasetExportJobPOST
/workspaces/{workspaceName}/dataset-export-jobs位于 Amazon IoT SiteWise 数据平面端点上。每个请求都必须使用 Amazon 签名版本 4 (SigV4) 进行签名。
端点
https://data.iotsitewise.<region>.amazonaws.com/workspaces/<workspaceName>/dataset-export-jobs
HTTP 必填元素
| Element | 值 |
|---|---|
| 方法 | POST |
| 路径 | /workspaces/<workspaceName>/dataset-export-jobs |
| 主机标头 | data.iotsitewise.<region>.amazonaws.com |
| Content-Type 标题 | application/json |
| X-Amz-Date 标题 | ISO 8601 基本格式(例如,)20260714T170000Z |
| X-Amz-Security-Token | 仅在使用临时证书 (STS) 时才需要 |
| Authorization 标头 | SigV4 签名(服务 = iotsitewise) |
| Body | JSON 请求负载 |
推荐:awscurl
awscurl \ --service iotsitewise \ --region us-east-1 \ -X POST \ -H "Content-Type: application/json" \ -d @export-job-request.json \ https://data.iotsitewise.us-east-1.amazonaws.com/workspaces/scenario_discovery_car120/dataset-export-jobs
Plain curl — 预签名请求框架
curl -v -X POST \ "https://data.iotsitewise.us-east-1.amazonaws.com/workspaces/scenario_discovery_car120/dataset-export-jobs" \ -H "Host: data.iotsitewise.us-east-1.amazonaws.com" \ -H "Content-Type: application/json" \ -H "X-Amz-Date: 20260714T170000Z" \ -H "X-Amz-Security-Token: <SESSION_TOKEN_IF_TEMP_CREDS>" \ -H "Authorization: AWS4-HMAC-SHA256 \ Credential=<ACCESS_KEY_ID>/20260714/us-east-1/iotsitewise/aws4_request, \ SignedHeaders=content-type;host;x-amz-date;x-amz-security-token, \ Signature=<COMPUTED_HEX_SIGNATURE>" \ --data-binary @export-job-request.json
有关完整的 SigV4 派生版本,请参阅有关签名 Amazon API 请求的 Amazon 文档。
示例 HTTP 响应:
HTTP/1.1 200 OK Content-Type: application/json { "jobId": "a1b2c3d4-5678-90ab-cdef-1234567890ab", "workspaceName": "scenario_discovery_car120" }
S3 存储桶策略参考
在调用之前,您必须将此存储桶策略应用于您的目标存储桶CreateDatasetExportJob。没有它,该服务将无法将导出的数据写入您的存储桶。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowServiceToWriteObjects", "Effect": "Allow", "Principal": { "Service": "iotsitewise.amazonaws.com" }, "Action": "s3:*", "Resource": "arn:aws:s3:::{yourbucketname}/*" } ] }
{yourbucketname}替换为您的实际的 S3 存储桶名称。