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

AWS Glue Studio运行Python脚本无法在S3创建文件的解决方法

AWS Glue Studio脚本无法在S3生成文件的解决方法

问题描述

我希望在AWS Glue Studio中运行测试脚本,在指定S3目录s3://test-dir-awsglue/创建myfile.txt文件。该脚本在本地运行正常,但部署到AWS Glue Studio后未在S3生成任何输出,求解决。

测试脚本代码:

import sys
import os

# Specify the path
path = '.'
# path = 's3://test-dir-awsglue/'
  
# Specify the file name
file = 'myfile.txt'

# Creating a file at specified location
with open(os.path.join(path, file), 'w') as fp:
    pass
    # To write data to new file uncomment
    # this fp.write("New file created")

作业相关截图:

  • 作业基础配置截图
  • 脚本参数配置截图
  • 作业运行状态截图
  • 权限配置截图

解决方法

1. 替换文件操作方式:使用AWS SDK写入S3

Python原生open()函数不支持直接操作S3路径,Glue运行环境无法通过本地文件系统的方式写入S3。必须使用AWS官方SDK(boto3)来完成S3对象的创建,修改后的脚本如下:

import boto3

# 初始化S3客户端
s3_client = boto3.client('s3')

# 定义S3存储桶和文件键(路径)
bucket_name = 'test-dir-awsglue'
file_key = 'myfile.txt'

# 创建空文件(如需写入内容,将Body参数替换为b"你要写入的内容")
s3_client.put_object(
    Bucket=bucket_name,
    Key=file_key,
    Body=b''
)

2. 确认Glue作业角色的S3权限

检查Glue作业使用的IAM角色是否具备s3:PutObject权限,确保角色策略包含以下内容(根据实际存储桶调整):

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::test-dir-awsglue/*"
        }
    ]
}

3. 避免本地路径与S3路径混淆

注释或删除本地路径path = '.'的配置,不要用os.path.join拼接S3路径——S3是对象存储,并非本地文件系统,该拼接方式无效。

4. 通过日志排查问题

在Glue控制台进入作业运行详情,查看CloudWatch日志:

  • 若出现AccessDenied,说明角色权限不足,补充S3写入权限
  • 若出现NoSuchBucket,检查存储桶名称是否拼写错误
  • 若出现其他IO错误,确认S3路径格式是否正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 13:07:40