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

Cloud Composer中使用S3FileTransformOperator执行脚本遇权限拒绝错误

解决Cloud Composer中S3FileTransformOperator执行shell脚本的权限拒绝问题

针对你遇到的PermissionError: [Errno 13] Permission denied错误,以下是几个可行的解决方法:

  • 给脚本添加可执行权限
    Cloud Composer同步GCS插件目录到本地时,可能会重置文件权限。可以在上传脚本到GCS的插件桶时,先执行chmod +x transform.sh,或者在DAG中先通过BashOperator设置权限:

    from airflow.operators.bash import BashOperator
    
    set_permission_task = BashOperator(
        task_id='set_script_permission',
        bash_command='chmod +x /home/airflow/gcs/plugins/some_plugin/scripts/transform.sh'
    )
    

    再将这个任务设置为S3FileTransformOperator任务的上游依赖。

  • 通过bash命令间接执行脚本
    跳过脚本自身的可执行权限检查,直接用bash解释器调用脚本。修改S3FileTransformOperator的command参数:

    from airflow.providers.amazon.aws.operators.s3_file_transform import S3FileTransformOperator
    
    transform_task = S3FileTransformOperator(
        task_id='run_transform_script',
        source_s3_key='s3://your-source-bucket/input.file',
        dest_s3_key='s3://your-dest-bucket/output.file',
        command='bash /home/airflow/gcs/plugins/some_plugin/scripts/transform.sh'
    )
    
  • 验证GCS插件桶的同步和权限
    确认脚本已经成功同步到Cloud Composer的本地插件目录:

    1. 进入Composer环境的Web UI,打开终端(Admin -> Terminal)
    2. 执行ls -l /home/airflow/gcs/plugins/some_plugin/scripts/查看脚本是否存在及权限
      同时检查GCS插件桶(gs://<composer-bucket>/plugins/)中脚本的存储对象ACL,确保Composer的服务账户有读取权限。
  • 检查脚本内的路径权限
    如果脚本中涉及读写其他本地路径,要确保Airflow运行用户(通常是airflow)对这些路径有相应权限,避免脚本内部触发权限错误被外层捕获。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:23:21