当前位置:  开发笔记 > 编程语言 > 正文

使用AWS SDK PHP(SMTP/IAM)的SES凭据

如何解决《使用AWSSDKPHP(SMTP/IAM)的SES凭据》经验,为你挑选了1个好方法。

我是AWS的新手,我不是来自安全背景的人,所以围绕AWS IAM和SMTP设置的概念让我头疼.

我已经按照所有步骤安装了AWS PHP SDK,验证了域(以及从AWS控制台成功发送了一些测试电子邮件)以及我要发送测试电子邮件的几个单独的电子邮件地址,但是我没有得到的部分是SMTP/IAM.

我有他们提供的亚马逊的基本脚本,但我真的不明白我在创建SMTP凭据和/或IAM时需要做什么,而且我已经搜索了所有内容而无法真正找到答案或了解什么亚马逊的文档说.

我使用的代码如下,但我完全被搞糊涂了部分正是我应该如何生成我的访问键这个特定项目(我只需要发送电子邮件,不应对反弹的,等等),什么是最好的方法从脚本中访问这些是(即我假设它们应该存储在锁定目录中的实际脚本之外?).

 'SECRET_KEY',
    'secret' => 'SECRET_SECRET',
    'region' => 'eu-west-1',
    'version' => '2010-12-01'
));

$emailSentId = $client->sendEmail(array(
    // Source is required
    'Source' => 'donotreply@mydomain.com',
    // Destination is required
    'Destination' => array(
        'ToAddresses' => array('sendto@mydomain.com')
    ),
    // Message is required
    'Message' => array(
        // Subject is required
        'Subject' => array(
            // Data is required
            'Data' => 'SES Testing',
            'Charset' => 'UTF-8',
        ),
        // Body is required
        'Body' => array(
            'Text' => array(
                // Data is required
                'Data' => 'My plain text email',
                'Charset' => 'UTF-8',
            ),
            'Html' => array(
                // Data is required
                'Data' => 'My HTML Email',
                'Charset' => 'UTF-8',
            ),
        ),
    ),
    'ReplyToAddresses' => array( 'donotreply@mydomain.com' ),
    'ReturnPath' => 'donotreply@mydomain.com'
));




?>

我尝试进入SES控制台并在那里生成SMTP密钥并将它们直接插入脚本(只是为了测试它是否可行,我已将它们从脚本中删除并为安全目的删除了这些密钥),但我没有真的明白我是否应该使用它们,或者我是否需要创建一个额外的IAM用户,或者我是否应该生成这些已被引用的动态组合(很高兴为bets方法采取专家建议)...任何告诉我以下错误:

致命错误:未捕获异常'Aws\Exception\CredentialsException',并显示消息'从实例配置文件元数据服务器检索凭据时出错.(客户端错误:GET http://169.254.169.254/latest/meta-data/iam/security-credentials/导致404 Not Found响应:Aws\Credentials {closure}(数组)#1 /var/www/html/vendor/guzzlehttp/promises/src/Promise.php(152):GuzzleHttp\Promise\Promise :: callHandler (2,数组,数组)#2 /var/www/html/vendor/guzzlehttp/promises/src/TaskQueue.php(60):GuzzleHttp\Promise\Promise :: GuzzleHttp\Promise {closure}()#3/var /www/html/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php(96):GuzzleHttp\Promise\TaskQueue-> run()#4/var/www in/var/www/html/vendor/aws /第79行的aws-sdk-php/src/Credentials/InstanceProfileProvider.php

无论如何,希望有人明白我很散漫有关 - 从这个问题很乐意提供任何额外的细节,但我不认为我是从这里增添了价值的问题,我敢肯定,自带通过,我不我真的了解它的安全方面.

如果我可以让这个工作,了解基本概念并且在最后一块肉馅饼落到我的喉咙之前仍留有一些头发,这将是一个真正的圣诞奇迹.

提前致谢!!

G-人



1> G-Man..:

如果有人遇到同样的问题,在找到线索后让我的工作(http://docs.aws.amazon.com/aws-sdk-php/v3/guide/guide/configuration.html),我做了以下:

    验证电子邮件/域

    使用AmazonSESFullAccess创建IAM用户(根据需要进行修改)

    将密钥插入以上部分的脚本中:

    'key' => 'SECRET_KEY',
    'secret' => 'SECRET_SECRET',
    

    但是,当我运行它时失败并出现相同的错误.

    然而,将上述内容更改为以下内容,成功运行并发送了电子邮件...

    'credentials' => [
    'key'    => 'SECRET_KEY',
    'secret' => 'SECRET_SECRET'],
    

希望有人发现这很有用.

干杯!!

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有