可能是由于 AWS Glue 在更新 IAM 角色时存在延迟,导致资源策略无法检测到角色的存在。可以通过以下步骤解决问题:
确认 IAM Role 是否存在。
检查 IAM Role 的 ARN 是否正确。
确保 AWS Glue 的 IAM Role 已经同步到所有区域,可以通过以下代码示例检查:
import boto3
client = boto3.client('iam')
iam_role_name = "my_iam_role_name"
glue_role_name = "my_glue_role_name"
response = client.get_role(RoleName=iam_role_name)
arn = response['Role']['Arn']
print(f"IAM Role ARN: {arn}")
glue = boto3.client('glue')
roles = glue.list_roles()
for r in roles['Roles']:
if r['RoleName'] == glue_role_name and r['AssumeRolePolicyDocument']['Statement'][0]['Principal']['AWS'] == arn:
print("Glue IAM Role Found!")
break
如果角色已同步到所有区域,但仍然出现“Principal does not exist”错误,则可以尝试重新创建资源策略:
打开 AWS Glue 控制台并选择 Glue 爬虫、开发端点或作业。
选择“安全和网络”选项卡。
单击“编辑脚本”按钮。
更新你的策略并保存。
等待一段时间以使更新生效。
重新运行测试以检查问题是否已解决。
通过上述步骤,您应该能够解决 AWS Glue 资源策略出现“Principal does not exist”问题。