您可以使用 IAM 策略在 Laravel 应用程序上通过 SES 授权 AWS ECS Fargate 吗?

问题描述 投票:0回答:2

我正在将 AWS ECS 用于 Laravel 应用程序并尝试设置 AWS SES。我收到错误了

Error retrieving credentials from the instance profile metadata service.

我通过让 Laravel 使用我的默认 aws 配置文件使其在本地工作。但是,在 ECS 上,我想通过将 SES 访问策略添加到任务角色来进行授权。我已经将允许 SES 策略添加到任务角色中,但仍然收到上述错误。我是不是错过了什么。这不可能吗?

我已经查看了 this 答案,根据第 3 点,这应该是可能的,除非使用 Laravel 这不起作用。

更新:

我认为这个问题与

php-fpm
使用
www-data
作为用户而不是
root
有关(由于 security 推荐)。我想知道当 aws 在启动时使用 IAM 将凭证添加到容器时,它是否只为 root 用户而不是其他用户添加它。

更新2:

以上不是问题。即使以 root 身份运行

php-fpm
,我仍然收到上述错误。

更新3:

我们遇到一个问题,即容器中未设置 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI。这是因为 Docker 文件的

CMD
是 PID 1 进程,并且该变量对非 PID 1 进程不可用。请参阅此处。解决该问题后,我可以调用
aws ses
并从容器内的 cli 发送电子邮件,但我仍然无法使用 http 服务器(来自网站)发送电子邮件。

php laravel aws-sdk amazon-ses aws-fargate
2个回答
0
投票

使用上面“Update: 3”中的方法设置容器内的变量后,我们需要将其设置为 nginx conf 文件中的

fastcgi_param
(参见 here),以便 http 服务器可以访问多变的。定义变量后需要启动/重新启动 Nginx。


0
投票

我也面临着同样的问题。通过各种报告和调查,我觉得是 fpm 没有在运行时加载 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI 并且 ECS 已经将其注入到容器中。

我使用 aws-sdk 创建一个简单的 php 脚本。通过命令行执行脚本连接到相应的 AWS 服务,不会出现任何错误,但是当请求为 http(由 nginx+fpm 提供服务)时,相同的代码片段会出现错误。

我发现this注释通过在fpm的conf中设置变量很有用。但正如 @shmuels 提到的,它可以设置为 fastcgi_params 并且应该也可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.