2015-10-31 31 views
2

上面有一些问题让AWS SES正常工作;我想从我的网站发送电子邮件给用户。看起来证书没有被验证,但是我使用了从IAM生成的正确证书(我也尝试了服务器根密钥,它给了我相同的错误)。我已经用完了关于如何解决/进一步调试的想法,所以任何指导都将不胜感激。Amazon SES从实例配置文件元数据服务器检索凭据时出错。 (客户端错误:404)

错误接收上执行:从实例配置文件元数据服务器

错误检索凭证。 (客户端错误:404)

所采取的步骤

  1. 我已经安装SES和验证

  2. 我创建了一个带有IAM轮廓 '完全接入到SES'

  3. 的电子邮件地址等
  4. 我已经使用phar文件安装了适用于php的AWS开发工具包

  5. 我已经在下面编写了php代码providin G的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)设置环境变量:AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,AWS_DEFAULT_REGION从IAM配置文件,你创造的价值。

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实例”),以了解步骤和过程。在这里,密钥和访问密钥会自动提取,您不必执行任何操作。您只需使用步骤1)设置默认区域(即导出AWS_DEFAULT_REGION = someregion)。

4)您已经尝试了第四种方法,可能是您的设置中存在一些我不知道的问题。

+0

嗨斯里 - 非常感谢这个结构良好的答案。我用我的根密钥使用最简单的方法1,并且仍然收到错误。我在想 - 这可能是因为我使用的是旧版本的SDK,因为我使用的是phar文件而不是composer。我已经用composer重新安装了SDK,但是现在出现这个错误:“Warning:include_once(/home/ec2-user/vendor/autoload.php):无法打开流:/ var/www /”中的权限被拒绝 - “ - 任何想法如何解决 - 我认为这是由于Apache访问根文件夹,但我不确定..再次感谢您的帮助 – John

+0

你试过这个:http://stackoverflow.com/questions/1484595/how-to -resolve-VAR WWW的拷贝写入权限被拒绝 – phoenix

相关问题