通过Azure DevOps Pipeline部署Terraform版AWS Glue Connection失败排查
AWS Glue Network连接Terraform部署在Azure DevOps流水线失败(500 InternalFailure)
问题描述
我需要创建NETWORK类型的AWS Glue Connection,让Glue Job通过VPC连接RDS数据库。这段Terraform脚本在Cloud9环境部署完全正常,但用权限更高的管理员角色通过Azure DevOps Pipeline部署时,进程卡住50分钟后返回**InternalFailure(状态码500)**错误,已经确认问题和DevOps流水线变量无关,求解决办法。
Terraform脚本
resource "aws_glue_connection" "glue_invoice_vpc_connection" { name = "pite-pgov-${lower(var.exec_env)}-invoicevpcconnection" connection_type = "NETWORK" physical_connection_requirements { availability_zone = "eu-central-1a" security_group_id_list = ["${var.securitygroup_id_1}"] subnet_id = "${var.subnet_id_1}" } }
错误信息
2023-04-04T15:33:59.2027220Z [0m[1maws_glue_connection.glue_invoice_vpc_connection: Still creating... [51m10s elapsed][0m[0m 2023-04-04T15:34:02.7064840Z [31m╷[0m[0m 2023-04-04T15:34:02.7065291Z [31m│[0m [0m[1m[31mError: [0m[0m[1mcreating Glue Connection (pite-pgov-devt-invoicevpcconnection): InternalFailure: 2023-04-04T15:34:02.7065759Z [31m│[0m [0m status code: 500, request id: 02f45f0b-64be-41cc-aabe-3252ed4bf818[0m 2023-04-04T15:34:02.7065984Z [31m│[0m [0m 2023-04-04T15:34:02.7066271Z [31m│[0m [0m[0m with aws_glue_connection.glue_invoice_vpc_connection, 2023-04-04T15:34:02.7066664Z [31m│[0m [0m on gluejob_c1.tf line 1, in resource "aws_glue_connection" "glue_invoice_vpc_connection": 2023-04-04T15:34:02.7067036Z [31m│[0m [0m 1: resource "aws_glue_connection" "glue_invoice_vpc_connection" [4m{[0m[0m
解决办法
1. 检查管理员角色的权限边界
别以为管理员角色就全能,可能存在**权限边界(Permissions Boundary)**隐性拦截操作。对比Cloud9使用的角色和DevOps流水线角色的权限策略,重点确认包含以下权限:
glue:CreateConnectionec2:DescribeSecurityGroupsec2:DescribeSubnetsec2:DescribeVpcs
同时检查是否有Deny策略限制了相关操作。
2. 修正Terraform配置细节
Cloud9环境可能对配置宽松,但DevOps流水线可能更严格:
- 移除老旧的插值语法,改用现代引用方式:
security_group_id_list = [var.securitygroup_id_1] subnet_id = var.subnet_id_1 - 显式添加空的
connection_properties块(NETWORK类型虽不需要额外属性,但部分环境要求必须声明):connection_properties = {} - 确认
availability_zone和指定子网的AZ完全一致,避免AZ不匹配导致的隐性错误。
3. 排查AWS服务端临时故障
500错误属于AWS内部错误,大概率是区域服务波动:
- 查看AWS Health Dashboard确认eu-central-1区域的Glue服务是否有异常
- 尝试切换到同区域的其他AZ部署
- 等待1-2小时后重新触发流水线
4. 调整Terraform超时时间
默认创建超时可能不足以应对网络延迟,在resource块中添加自定义超时:
resource "aws_glue_connection" "glue_invoice_vpc_connection" { # 现有配置... timeouts { create = "2h" } }
5. 检查DevOps流水线的网络环境
Cloud9是AWS内部环境,Azure DevOps可能通过公网/代理访问AWS:
- 确认DevOps代理的IP在VPC安全组的允许列表中
- 在DevOps代理上直接用AWS CLI执行
aws glue create-connection命令,测试是否能成功创建,排查是否是代理导致的API请求中断
内容的提问来源于stack exchange,提问作者jensb
相关产品推荐
相关产品推荐

