我是AWS的新手,我不是來自安全背景的人,所以圍繞AWS IAM和SMTP設置的概念讓我感到頭暈目眩。使用AWS開發工具包進行SES的憑證PHP(SMTP/IAM)
我已經按照所有步驟安裝了AWS PHP SDK,驗證了域(以及成功從AWS控制檯發送一些測試電子郵件)以及我想發送測試的一些個人電子郵件地址電子郵件,但我沒有得到的部分是SMTP/IAM。
我已經得到了亞馬遜提供的基本腳本,但我並不真正瞭解我在創建SMTP憑據和/或IAM時需要做什麼,並且我已經搜索了所有內容而無法真正找到回答或理解亞馬遜文檔的內容。
我正在使用的代碼如下,但我完全困惑的部分正是我應該如何爲這個特定項目生成我的訪問密鑰(我只需要發送電子郵件,不需要處理跳動等)以及什麼從腳本訪問這些腳本的最好方法是(也就是說,我認爲它們應該存儲在實際腳本的鎖定目錄之外)。
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
use Aws\Ses\SesClient;
require 'vendor/autoload.php';
$client = SesClient::factory(array(
'key' => 'SECRET_KEY',
'secret' => 'SECRET_SECRET',
'region' => 'eu-west-1',
'version' => '2010-12-01'
));
$emailSentId = $client->sendEmail(array(
// Source is required
'Source' => '[email protected]',
// Destination is required
'Destination' => array(
'ToAddresses' => array('[email protected]')
),
// 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' => '<b>My HTML Email</b>',
'Charset' => 'UTF-8',
),
),
),
'ReplyToAddresses' => array('[email protected]'),
'ReturnPath' => '[email protected]'
));
?>
我試圖進入的SES控制檯,併產生SMTP鍵那裏,他們堵直入腳本(只是爲了測試它是否會工作,我已經從腳本刪除它們,刪除爲安全起見,這些鍵),但我真的不明白我是否應該使用它們,或者如果我需要創建一個額外的IAM用戶,或者如果我應該生成這些已經提到的動態組合(很樂意就此採取專家建議)投注方法)...在任何向我拋出以下錯誤:
Fatal error: Uncaught exception 'Aws\Exception\CredentialsException' with message 'Error retrieving credentials from the instance profile metadata server. (Client error:
GET http://169.254.169.254/latest/meta-data/iam/security-credentials/
resulted in a404 Not Found
response: Aws\Credentials{closure}(Array) #1 /var/www/html/vendor/guzzlehttp/promises/src/Promise.php(152): GuzzleHttp\Promise\Promise::callHandler(2, Array, Array) #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/aws-sdk-php/src/Credentials/InstanceProfileProvider.php on line 79
無論如何,希望有人明白我是rambl我很樂意提供任何額外的細節,但是我不認爲我從這裏開始爲這個問題增加很多價值,因爲我肯定從這個問題中得出結論,我並不真正瞭解它的安全性方面。
這將真正成爲一個聖誕奇蹟,如果我能得到這個工作,瞭解基本概念,仍然有一些頭髮的時候留下的最後一個肉餡餅下山我的喉嚨。
在此先感謝!
G-Man
感謝EJB ......我完全與你在兩種不同的方法,但它似乎在AWS代碼中有一個小問題,我將作爲下面的附加答案發布......看起來你的答案已經解決了別人的問題雖然 - 感謝輸入! –