如何在本地VS Code中搭建并测试AWS Glue ETL代码(无Docker方案)
本地VS Code配置AWS Glue ETL开发测试(无Docker方案)
针对你只有生产环境、想本地开发测试Glue代码的需求,以下是实操步骤:
1. 先装齐必要工具
- Python环境:选和你用的AWS Glue版本匹配的Python(比如Glue 3.0对应Python 3.7,Glue 4.0对应Python 3.9),安装时勾选"Add Python to PATH"
- Glue Python库:打开终端执行
pip install aws-glue-libs==3.0.0(版本号对应你的Glue版本,比如4.0就用4.0.0) - VS Code插件:安装微软官方的Python插件(用于代码补全、调试),以及AWS Toolkit插件(方便关联AWS账号)
2. 配置本地环境
- 选择Python解释器:在VS Code中按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(Mac),搜索Python: Select Interpreter,选中安装了glue库的Python环境 - AWS凭证配置:要访问生产环境的S3等资源,需配置本地AWS凭证。可以直接执行
aws configure,按提示输入Access Key、Secret Key、默认区域;也可以手动编辑凭证文件:- Linux/Mac:编辑
~/.aws/credentials - Windows:编辑
C:\Users\<你的用户名>\.aws\credentials
文件内容格式:
注意:为了安全,给这个凭证分配最小必要权限——仅开放Glue操作、S3读写等业务需要的权限,避免使用管理员权限。[default] aws_access_key_id = 你的生产环境Access Key aws_secret_access_key = 你的生产环境Secret Key - Linux/Mac:编辑
3. 编写带测试逻辑的Glue代码
本地运行Glue代码需要模拟GlueContext和SparkSession,直接用glue库初始化即可,示例代码结构:
import sys from awsglue.context import GlueContext from pyspark.context import SparkContext from pyspark.sql import SparkSession # 初始化上下文 sc = SparkContext.getOrCreate() glueContext = GlueContext(sc) spark = glueContext.spark_session def run_etl(): # 读取数据:测试阶段可用本地路径(比如"./local-data/input.csv"),也可直接用生产S3路径 raw_data = glueContext.create_dynamic_frame.from_options( connection_type="s3", connection_options={"paths": ["s3://your-prod-bucket/input/"]}, format="csv" ) # 你的ETL转换逻辑,比如删除无效列、修改数据类型 cleaned_data = raw_data.drop_fields(["invalid_col"]) # 输出:测试阶段可写到本地或专门的测试S3路径,不要直接写入生产输出目录 glueContext.write_dynamic_frame.from_options( frame=cleaned_data, connection_type="s3", connection_options={"path": "s3://your-prod-bucket/test-output/"}, format="parquet" ) if __name__ == "__main__": run_etl() spark.stop()
4. 本地运行和调试
- 直接运行:在终端执行
python your-glue-script.py,或者点击VS Code右上角的运行按钮 - 调试:打开左侧调试图板,点击"创建launch.json文件"并选择Python环境,在代码中设置断点后启动调试,即可逐步查看执行过程、排查问题
5. 部署到生产环境
本地测试通过后,将代码打包成.zip文件(如果有额外依赖,需将依赖一同打包,排除Python系统库)。登录AWS控制台进入Glue服务,创建新Job:
- 选择对应的Glue版本、Worker类型
- 上传代码包,配置具备生产环境操作权限的IAM角色
- 设置好Job参数后,即可启动生产环境的Glue Job
内容的提问来源于stack exchange,提问作者PAWAN NEGI
相关产品推荐
相关产品推荐

