首页 > 解决方案 > 从 aws lambda 上传到 s3 存储桶后出现内部服务器错误

问题描述

我使用 bref 基于 laravel 框架创建了 aws lambda 函数。链接:https ://bref.sh

我想交朋友 aws S3 和 aws lambda。这是我的代码:

//here I upload file to s3

Storage::disk('s3')->put('images/originals', $request->file('name'));
//My configuration

AWS_ACCESS_KEY_ID=XXXXXXXXXXXXXXXXXX
AWS_SECRET_ACCESS_KEY=XXXXX+XXXXXXXX
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=my-bucket

当我在本地上传文件时一切正常,但是当我尝试在 lambda 函数中上传 s3 时出现错误:

{ "message" : "Internal server error" }

我使用这个包上传到 aws:

league/flysystem-aws-s3-v3 ~1.0

这是我的 serverless.yaml

service: demo

provider:
  name: aws
  region: us-east-1
  runtime: provided
  environment:
    # Laravel environment variables
    APP_STORAGE: '/tmp'
    iamRoleStatements:
    # Allow to put a file in the `my-bucket` S3 bucket
    - Effect: Allow
      Action: s3:PutObject
      Resource: 'arn:aws:s3:::my-bucket/*'

plugins:
  - ./vendor/bref/bref

functions:
  website:
    handler: public/index.php
    timeout: 28 # in seconds (API Gateway has a timeout of 29 seconds)
    layers:
      - ${bref:layer.php-73-fpm}
    events:
      -   http: 'ANY /test/'
      -   http: 'ANY /test/{proxy+}'
  artisan:
    handler: artisan
    timeout: 120 # in seconds
    layers:
      - ${bref:layer.php-73} # PHP
      - ${bref:layer.console} # The "console" layer

也许我的权限有问题。但我不知道如何解决它。

亚马逊 X 光片的反应

查询响应

谢谢

标签: laravelamazon-web-servicesamazon-s3aws-lambda

解决方案


推荐阅读