在使用AWS SES时遇到一些问题;我想从我的网站向用户发送电子邮件。看起来没有验证凭据,但是我使用了从IAM生成的正确凭据(我也尝试过服务器根密钥,它给了我同样的错误)。我已经完成了如何进一步解决/调试的想法,所以任何引导都会非常感激。
执行时收到错误:
从实例配置文件元数据服务器检索凭据时出错。 (客户端错误:404)
采取的步骤
我已设置SES并验证了电子邮件地址等
我创建了一个IAM配置文件,其中包含对SES的完全访问权限
我已使用phar文件
我已经编写了下面的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);
提前感谢您的帮助 - 这总是一个很棒的社区!如果我能提供其他任何东西,请告诉我
约翰
答案 0 :(得分:1)
您可以使用多种方法为SDK提供凭据。请参阅文档: Providing Credentials to SDK
1)使用您创建的IAM配置文件中的值设置环境变量:AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,AWS_DEFAULT_REGION。
2)您也可以创建〜/ .aws / credentials文件而不是1)。您可以在此处添加以下行:
[默认]
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角色授予应用程序权限
在本指南的Amazon EC2实例和#34;)上运行:AWS IAM User Guide 以了解步骤和过程。在这里,秘密密钥和访问密钥会自动被选中,您不必做任何事情。您只需要使用步骤1)设置默认区域(即导出AWS_DEFAULT_REGION = someregion)。
4)您已经尝试过第4种方法,可能是您的设置中存在一些我不知道的问题。