通过AWS DataPipeline创建的EC2无法执行DynamoDB建表命令求助
问题排查与解决建议
1. JSON配置文件语法错误
你的definitions.json里instance对象的subnetId字段存在语法错误:
"subnetId":"subnet-YYYYY],
末尾缺失双引号,正确写法应为:
"subnetId":"subnet-YYYYY",
JSON语法错误会导致管道无法正确解析配置,直接阻碍后续Shell命令的触发执行。
2. 角色配置错误
Default对象中的resourceRole配置有误,你设置成了DataPipelineDefaultRole,正确的资源角色应该是DataPipelineDefaultResourceRole:
{ "id": "Default", // ... 其他配置 "role": "DataPipelineDefaultRole", "resourceRole": "DataPipelineDefaultResourceRole" // 修正此处 }
错误的角色配置会导致EC2实例无法获取执行DynamoDB操作的权限,即便实例创建成功,也无法正常运行AWS CLI命令。
3. 网络连通性问题
你将associatePublicAddress设为false,如果EC2实例部署在私有子网:
- 需确保VPC内配置了NAT网关,允许实例访问公网以连接DynamoDB服务;
- 或者配置DynamoDB VPC端点,让实例无需公网即可直接访问DynamoDB。
没有网络连通性的话,AWS CLI无法调用DynamoDB API,建表命令自然无法执行。
4. IAM权限验证
确认DataPipelineDefaultResourceRole包含dynamodb:CreateTable权限,虽然官方默认角色自带该权限,但如果角色被自定义修改过,可能会丢失权限,可通过IAM控制台检查角色的权限策略。
5. 官网维护期间的日志查看方案
虽然无法通过DataPipeline控制台查看日志,但可以直接登录创建的EC2实例获取信息:
- 查看DataPipeline代理日志,默认路径为
/var/log/aws/datapipeline/; - 定位Shell命令的执行日志,通常在任务对应的工作目录下,可通过代理日志找到具体路径。
内容的提问来源于stack exchange,提问作者Zokulko
相关产品推荐
相关产品推荐

