Laravel - AWS Beanstalk - 存储符号链接不起作用(403 错误)

the*_*kid 5 amazon-ec2 amazon-web-services laravel amazon-elastic-beanstalk laravel-5

我正在使用 elastic beanstalk 来部署我的 laravel 应用程序。除了我的图像之外,一切都工作正常,因为我需要创建一个带有存储的符号链接才能公开访问它。

PS 在我本地运行良好

我的 .ebextensions 文件如下 -

commands:
  composer_update:
    command: export COMPOSER_HOME=/root && /usr/bin/composer.phar self-update

option_settings:
  - namespace: aws:elasticbeanstalk:application:environment
    option_name: COMPOSER_HOME
    value: /root

container_commands:
  01-install_dependencies:
    command: "php /usr/bin/composer.phar install"
    cwd: "/var/app/ondeck"
  02_storage_sym_link:
    command: "php artisan storage:link"
    cwd: "/var/app/ondeck"
    leader_only: true
Run Code Online (Sandbox Code Playgroud)

以下是我的 ec2 实例的日志,用于确认该命令运行正常并且链接已成功创建。

[2019-04-21T15:47:16.899Z] INFO  [21538] - [Application update symlink alt2@208/AppDeployStage0/EbExtensionPostBuild/Infra-EmbeddedPostBuild/postbuild_0_Synchro/Test for Command 02_storage_sym_link] : Starting activity...
[2019-04-21T15:47:16.903Z] INFO  [21538] - [Application update symlink alt2@208/AppDeployStage0/EbExtensionPostBuild/Infra-EmbeddedPostBuild/postbuild_0_Synchro/Test for Command 02_storage_sym_link] : Completed activity. Result:

  Completed successfully.
[2019-04-21T15:47:16.903Z] INFO  [21538] - [Application update symlink alt2@208/AppDeployStage0/EbExtensionPostBuild/Infra-EmbeddedPostBuild/postbuild_0_Synchro/Command 02_storage_sym_link] : Starting activity...
[2019-04-21T15:47:17.014Z] INFO  [21538] - [Application update symlink alt2@208/AppDeployStage0/EbExtensionPostBuild/Infra-EmbeddedPostBuild/postbuild_0_Synchro/Command 02_storage_sym_link] : Completed activity. Result:
  The [public/storage] directory has been linked.
Run Code Online (Sandbox Code Playgroud)

我收到的错误如下,这使得图像无法供公众访问。

Forbidden
You don't have permission to access /storage/blog/images/8Yhb4OZJQIKwlMGaGE803niTxyjfzNSVTj2BiPaP.gif on this server.
Run Code Online (Sandbox Code Playgroud)

感谢任何指导我走上正确道路的帮助。干杯!


编辑1:

container_commands:
  01-install_dependencies:
    command: "php /usr/bin/composer.phar install"
    cwd: "/var/app/ondeck"
  02_storage_sym_link:
    command: "ln -s storage/app/public public/storage"
    cwd: "/var/app/ondeck"
  03_give_ec2_user_perm_1:
    command: "sudo chown -R ec2-user /var/app/current"
  03_give_ec2_user_perm_2:
    command: "sudo chmod -R 777 /var/app/current"
Run Code Online (Sandbox Code Playgroud)

尝试手动创建符号链接并授予 ec2 用户权限。但还是没有运气:(

the*_*kid 3

放下一个替代选项,该选项可以为那些/可能有类似问题的人提供帮助 -

在 Laravel 应用程序中使用 S3 进行文件存储。

为了实现这一目标——

  1. 创建公共 S3 存储桶。
  2. 创建一个对 S3 存储桶具有完全访问权限的 IAM 用户。(使用访问密钥,应用程序将具有在 S3 存储桶中读取和写入的权限。)
  3. 更新配置文件filesystems.php以使用 S3 存储桶。(此配置处理应用程序的存储配置。)

请参阅Laravel 文档以获取更多信息。

感谢@PranavanSp 的建议。