Amazon web services AWS胶水爬虫程序未创建表
我在AWS Glue中创建了一个爬虫程序,它在成功完成后不会在数据目录中创建表 爬虫程序运行大约需要20秒,日志显示它已成功完成。CloudWatch日志显示:Amazon web services AWS胶水爬虫程序未创建表,amazon-web-services,aws-glue,Amazon Web Services,Aws Glue,我在AWS Glue中创建了一个爬虫程序,它在成功完成后不会在数据目录中创建表 爬虫程序运行大约需要20秒,日志显示它已成功完成。CloudWatch日志显示: 基准:运行爬虫程序的开始爬网 基准:分类完成,将结果写入数据库 基准测试:已完成对目录的写入 基准测试:爬虫程序已完成运行并处于就绪状态 我不明白为什么不创建数据目录中的表。AWS文档对调试没有多大帮助。检查与爬虫程序关联的IAM角色。很可能您没有正确的权限 创建爬虫程序时,如果选择创建IAM角色(默认设置),则它将仅为您指定的S3
- 基准:运行爬虫程序的开始爬网
- 基准:分类完成,将结果写入数据库
- 基准测试:已完成对目录的写入
- 基准测试:爬虫程序已完成运行并处于就绪状态
我不明白为什么不创建数据目录中的表。AWS文档对调试没有多大帮助。检查与爬虫程序关联的IAM角色。很可能您没有正确的权限
创建爬虫程序时,如果选择创建IAM角色(默认设置),则它将仅为您指定的S3对象创建策略。如果以后您编辑爬虫程序并仅更改S3路径。与爬虫程序关联的角色无权访问新的S3路径。如果目标数据库中存在表,爬虫程序可能会将新文件与现有表关联,而不是创建新的表 当数据或文件夹结构中存在相似性时,就会发生这种情况,而Glue可能会将其解释为分区
有时我还需要刷新数据库的表列表,以显示新的数据库。您可以尝试排除s3存储桶中的一些文件,这些排除的文件应该显示在日志中。我发现它有助于调试爬虫程序的运行情况。下面是我的示例角色JSON,它允许glue访问s3并创建一个表
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"ec2:DeleteTags",
"ec2:CreateTags"
],
"Resource": [
"arn:aws:ec2:*:*:instance/*",
"arn:aws:ec2:*:*:security-group/*",
"arn:aws:ec2:*:*:network-interface/*"
],
"Condition": {
"ForAllValues:StringEquals": {
"aws:TagKeys": "aws-glue-service-resource"
}
}
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"iam:GetRole",
"cloudwatch:PutMetricData",
"ec2:DeleteNetworkInterface",
"s3:ListBucket",
"s3:GetBucketAcl",
"logs:PutLogEvents",
"ec2:DescribeVpcAttribute",
"glue:*",
"ec2:DescribeSecurityGroups",
"ec2:CreateNetworkInterface",
"s3:GetObject",
"s3:PutObject",
"logs:CreateLogStream",
"s3:ListAllMyBuckets",
"ec2:DescribeNetworkInterfaces",
"logs:AssociateKmsKey",
"ec2:DescribeVpcEndpoints",
"iam:ListRolePolicies",
"s3:DeleteObject",
"ec2:DescribeSubnets",
"iam:GetRolePolicy",
"s3:GetBucketLocation",
"ec2:DescribeRouteTables"
],
"Resource": "*"
},
{
"Sid": "VisualEditor2",
"Effect": "Allow",
"Action": "s3:CreateBucket",
"Resource": "arn:aws:s3:::aws-glue-*"
},
{
"Sid": "VisualEditor3",
"Effect": "Allow",
"Action": "logs:CreateLogGroup",
"Resource": "*"
}
]
}我也遇到了同样的问题,解决方案是指定表的架构
我也遇到了同样的问题,正如其他人建议的那样,我试图修改现有的IAM角色,将新的S3存储桶作为资源,但由于某种原因,它不起作用。然后我从头开始创造了一个全新的角色。。。这次成功了。另外,我对AWS的一个大问题是“为什么由于错误的附加IAM策略而导致的拒绝访问错误没有显示在云监视日志中?”,这使得调试变得困难。我遇到了Ray提到的类似IAM问题。但在我的例子中,我没有在bucket名称后添加星号(*),这意味着爬虫程序没有进入子文件夹,也没有创建表 错:
{
"Statement": [
{
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::bucket-name"
]
}
],
"Version": "2012-10-17"
}
正确:
{
"Statement": [
{
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::bucket-name*"
]
}
],
"Version": "2012-10-17"
}
你找到答案了吗?默认的glue service角色只包含S3前缀,如
glue public
,我需要将其更改为包含我想要爬网的bucket。你知道为什么这个不正确的权限不会作为异常出现在日志中吗?这对我来说很有效,我删除了旧角色,编辑了爬网程序并创建了一个新的爬网程序,然后在目录中创建表格,感谢提示!谢谢你的这个。我花了30分钟检查日志,未能理解发生了什么。这是重点。。。哇!原因953为什么AWS与易用相反。这有多困难?