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で利用できる