AWS

Laravel+EC2+IAM RoleからSESを利用する

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

Amazonおすすめ

iPad 9世代 2021年最新作

iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kindleを外で見るならiPad mini。ほとんどの人には通常のiPadをおすすめします><

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)