0

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

这是我使用媒体库 spartie 下载的代码

$mediaItem = Media::where('model_id',$id)->where('model_type','App\MODEL')->first();

return $mediaItem;

我的配置是

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: serverless-api

provider:
    name: aws
    region: eu-central-1
    runtime: provided
    environment:
        APP_ENV: production
    iamRoleStatements:
      - Effect: Allow
        Action: 
          - s3:*
        Resource: 'arn:aws:s3:::bucket/*'       

plugins:
    - ./vendor/bref/bref

package:
  exclude:
    - node_modules/**
    - public/storage
    - storage/**
    - tests/**
    - .env
 functions:
    website:
        handler: public/index.php
        timeout: 28 # in seconds (API Gateway has a timeout of 29 seconds)
        layers:
            - arn:aws:lambda:eu-central-1:209497400698:layer:php-72-fpm:23
        events:
            -   http: 'ANY /'
            -   http: 'ANY /{proxy+}'
    artisan:
        handler: artisan
        timeout: 120 # in seconds
        layers:
            - arn:aws:lambda:eu-central-1:209497400698:layer:php-72:22
            - arn:aws:lambda:eu-central-1:209497400698:layer:console:22

我也为 s3 分配了角色,但我不知道这是怎么回事。

谢谢你 。

4

0 回答 0