Amazon SES 从实例配置文件元数据服务器检索凭证时出错。 (客户端错误:404)
Posted
技术标签:
【中文标题】Amazon SES 从实例配置文件元数据服务器检索凭证时出错。 (客户端错误:404)【英文标题】:Amazon SES Error retrieving credentials from the instance profile metadata server. (Client error: 404) 【发布时间】:2016-02-01 03:27:40 【问题描述】:在让 AWS SES 按以下方式工作时遇到一些问题;我想从我的网站向用户发送电子邮件。看起来凭证没有得到验证,但是我使用了从 IAM 生成的正确凭证(我也尝试了服务器根密钥,它给了我同样的错误)。我已经没有关于如何进一步解决/调试的想法,所以任何指导都将不胜感激。
执行时收到错误:
从实例配置文件元数据服务器检索凭据时出错。 (客户端错误:404)
采取的步骤
我已设置 SES 并验证了电子邮件地址等
我创建了一个具有“对 SES 的完全访问权限”的 IAM 配置文件
我已经使用 phar 文件安装了适用于 php 的 AWS 开发工具包
我已经编写了下面的 php 代码,直接提供了 SES 的正确安全访问代码
require 'aws/aws.phar'; use Aws\Ses\SesClient; //More code here $client = SesClient::factory(array( 'key' => 'xxxxxxxxxxxxx', 'secret' => 'xxxxxxxxxxx', 'region' => 'us-west-2', 'version' => '2010-12-01' )); //code to build the $msg here as array try $result = $client->sendEmail($msg); //save the MessageId which can be used to track the request $msg_id = $result->get('MessageId'); echo("MessageId: $msg_id"); //view sample output print_r($result); catch (Exception $e) echo($e->getMessage()); //view the original message passed to the SDK print_r($msg);
提前感谢您的帮助 - 这总是一个很棒的社区!如果我能提供其他任何东西,请告诉我
约翰
【问题讨论】:
【参考方案1】:您可以使用多种方法为您的 SDK 提供凭据。请参阅文档: Providing Credentials to SDK
1) 使用您创建的 IAM 配置文件中的值设置环境变量:AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_DEFAULT_REGION。
2) 除了 1),您还可以创建 ~/.aws/credentials 文件。您可以在此处添加以下行:[默认] aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY aws_default_region = 区域
1) 或 2) 肯定会起作用,而且很简单。
3) 您还可以创建实例配置文件。您需要创建 IAM 角色和实例配置文件。您的实例需要在创建时分配实例配置文件。请参阅第 183 页(如页面底部所示。主题名称为“使用 IAM 角色向应用程序授予权限 Running on Amazon EC2 Instances") 本指南:AWS IAM User Guide 了解步骤和过程。这里,密钥和访问密钥是自动获取的,您无需执行任何操作。您只需设置默认区域使用步骤 1)(即导出 AWS_DEFAULT_REGION=someregion)。
4) 您已经尝试了第 4 种方法,您的设置中可能存在一些我不知道的问题。
【讨论】:
嗨,斯里 - 非常感谢这个结构良好的答案。我在我的代码中使用最简单的方法 1 和我的根键,但仍然收到错误。我在想——这可能是因为我使用的是旧版本的 SDK,因为我使用的是 phar 文件而不是作曲家。我已经使用作曲家重新安装了 SDK,但现在出现此错误“警告:include_once(/home/ec2-user/vendor/autoload.php):无法打开流:/var/www/ 中的权限被拒绝” - 任何关于如何解决的想法 - 我认为这是由于 Apache 访问根文件夹,但我不确定..再次感谢您的帮助 你试过了吗:***.com/questions/1484595/…以上是关于Amazon SES 从实例配置文件元数据服务器检索凭证时出错。 (客户端错误:404)的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic Beanstalk SPF 记录和 Amazon SES
发送电子邮件时如何向 Amazon SES 服务提供 AWS 密钥?