
EC2のInstance ProfileにSESの送信権限が付与されたロールを付与します
Laravelへの設定
ライブラリのアップデート
$ COMPOSER_MEMORY_LIMIT=-1 composer update aws/aws-sdk-php-laravel
新規でインストール
$ COMPOSER_MEMORY_LIMIT=-1 composer require aws/aws-sdk-php
Laravelのconfigでkey, secretをしている箇所を空にする
config/services.php
'ses' => [
'key' => env('SES_KEY'),
'secret' => env('SES_SECRET'),
'region' => env('SES_REGION', 'us-west-2'),
],
↓
'ses' => [
'key' => "",
'secret' => "",
'region' => env('SES_REGION', 'us-west-2'),
],
.envも空にするか、削除してください。
$ vi .env SES_KEY="xxxxxx SES_SECRET="yyyyyyyyyyyyyyyy" SES_REGION=us-west-2 ↓ SES_KEY="" SES_SECRET="" SES_REGION=us-west-2
メール送信テスト
www-data@ip-xxx-xxx-xxx-xxx:~/laravel-project$ php artisan tinker
Psy Shell v0.9.12 (PHP 7.2.24-0ubuntu0.18.04.8 — cli) by Justin Hileman
>>> $config = [
... 'region' => 'us-west-2',
... 'version' => 'latest'
... ];
=> [
"region" => "us-west-2",
"version" => "latest",
]
>>> $ses = new Aws\Ses\SesClient($config);
=> Aws\Ses\SesClient {#8621}
>>> $result = $ses->sendEmail([
... 'Destination' => [
... 'ToAddresses' => ["{宛先メールアドレス}"],
... ],
... 'ReplyToAddresses' => ["{返信用メールアドレス}"],
... 'Source' => "{宛先メールアドレス}",
... 'Message' => [
... 'Body' => [
... 'Text' => [
... 'Charset' => 'UTF-8',
... 'Data' => '本文でーす',
... ],
... ],
... 'Subject' => [
... 'Charset' => 'UTF-8',
... 'Data' => '件名でーす',
... ],
... ],
... ]);
=> Aws\Result {#8815}
これで宛先メールアドレスにメールが届いていたら成功
AWS Cliを設定する場合
$ vi /var/www/.aws/credentials [profile sample-ec2-role-production] # ●AWS Cli Profile定義 role_arn = arn:aws:iam::xxxxxx:role/sample-ec2-role-production # ●IAM RoleのARN指定 credential_source = Ec2InstanceMetadata region = ap-northeast-1
$ vi /var/www/.aws/config [profile sample-ec2-role-production] # ●AWS Cli Profile定義 output = json region = ap-northeast-1
$ php /var/www/laravel-project/artisan config:clear $ php /var/www/laravel-project/artisan cache:clear
これでEC2に割り当てたIAM RoleのインスタンスプロフィールをAWS Cliで利用できる
