问题描述:
我无法从 AWS Lambda 发送 SMS。
控制器代码
try {
$sms = AwsFacade::createClient('sns');
$result = $sms->publish([
'MessageAttributes' => [
'AWS.SNS.SMS.SenderID' => [
'DataType' => 'String',
'StringValue' => 'CyQuer',
],
'AWS.SNS.SMS.SMSType' => [
'DataType' => 'String',
'StringValue' => 'Transactional',
],
],
'Message' => "Hello John Doe".PHP_EOL."Use following Code to Login:".PHP_EOL."123456",
'PhoneNumber' => $phone,
]);
Log::info($result);
} catch (Exception $e) {
Log::error($e->getMessage());
}
错误信息:
via web
{"message": "Internal server error"}
任务在 28.00 秒后超时
通过工匠
任务在 120.00 秒后超时
设置
使用 bref/laravel-bridge
IAM 用户在 AWS Lambda 上运行该应用程序的 Laravel 应用程序已创建。在本地一切正常。除了发送短信外,在线一切正常。
尝试过的解决方案:
尝试了以下软件包。
https://github.com/aws/aws-sdk-php
https://github.com/aws/aws-sdk-php-laravel
以下所有描述的方法都在 AWS Lambda 上本地工作,但不是。
将 AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY 直接写入 config/aws.php
直接在代码中写入 AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY
$sms = AwsFacade::createClient('sns',[
'credentials' => [
'key' => '********************',
'secret' => '****************************************',
],
'region' => env('AWS_REGION', 'eu-central-1'),
'version' => 'latest',
'ua_append' => [
'L5MOD/' . AwsServiceProvider::VERSION,
],
]);
授予所有 IAM 用户完全的管理员访问权限也不起作用。
在本地,所有替代解决方案也一直有效!
有谁知道这个问题并有解决方案?超过 24 小时,我一直在寻找一种方法。我的最后一种方法是通过 CURL 重建完整的调用并尝试一下,但我希望有人有/找到解决方案。