You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Glue Python Shell作业访问Secrets Manager无响应问题排查

在AWS Glue Python Shell作业中访问Secrets Manager的配置要点

我之前碰到过一模一样的问题,Glue Python Shell访问Secrets Manager无响应,通常和权限配置或VPC网络限制脱不了干系——毕竟本地和Lambda的网络、权限模型和Glue的运行环境差异很大。下面是你必须检查和配置的几个关键点:

1. 给Glue执行角色配置足够的Secrets Manager权限

Glue作业的执行IAM角色必须拥有secretsmanager:GetSecretValue权限,不然会因为权限不足静默挂起(这是Glue Python Shell的一个坑,不会直接抛出权限错误)。

给你的Glue执行角色添加如下IAM策略(记得替换your-secret-arn为实际的Secret ARN):

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "secretsmanager:GetSecretValue",
            "Resource": "arn:aws:secretsmanager:eu-west-1:your-account-id:secret:your-secret-name-xxxxxx"
        }
    ]
}

提示:如果要获取Secret的特定版本,策略里的Resource可以加上版本后缀;如果只需要最新版本,直接用Secret的基础ARN即可。

2. 处理VPC内的网络访问限制

如果你的Glue作业配置了VPC连接(运行在私有子网内),默认无法直接访问Secrets Manager的公网端点,这时候需要做两步配置:

  • 在VPC中创建Secrets Manager的Interface类型VPC端点,端点服务名称格式为com.amazonaws.<region>.secretsmanager
  • 确保Glue作业使用的安全组允许出站流量到VPC端点的443端口,同时VPC端点的安全组允许来自Glue安全组的443端口入站流量

要是没配置VPC端点,Glue作业会一直卡在网络连接上,不会触发超时,也就是你看到的“无响应”状态。

3. 优化boto3客户端配置,添加超时和异常捕获

Glue Python Shell的默认网络超时设置很长,再加上缺少异常捕获的话,出错后完全看不到任何输出。建议修改代码,加上超时配置和完整的异常处理:

import boto3
import base64
from botocore.exceptions import ClientError
import botocore.config

secret_name = "secret_name"
region_name = "eu-west-1"

# 添加超时和重试配置,避免无限挂起
config = botocore.config.Config(
    read_timeout=30,
    connect_timeout=10,
    retries={"max_attempts": 3}
)

session = boto3.session.Session()
client = session.client(
    service_name='secretsmanager',
    region_name=region_name,
    config=config
)

try:
    get_secret_value_response = client.get_secret_value(SecretId=secret_name)
    print(get_secret_value_response)
except ClientError as e:
    # 打印具体错误信息,方便排查
    print(f"获取Secret失败: {e.response['Error']['Message']}")
    raise
except Exception as e:
    print(f"未知错误: {str(e)}")
    raise

添加超时后,如果是网络问题会快速抛出超时错误,而不是一直挂着;异常捕获则能帮你明确看到是权限问题还是网络问题。

4. 检查Glue Python Shell的boto3版本

虽然你在Lambda Python 3.7中运行正常,但Glue Python Shell的boto3版本可能略有差异。可以在作业开头加一行print(boto3.__version__)确认版本,如果版本过旧,可能存在兼容性问题(不过Glue 2.0+的Python 3.7环境,boto3版本足够支持Secrets Manager)。


内容的提问来源于stack exchange,提问作者user1411837

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 08:43:13