AWS Lambda 通过 AWS-PHP-SDK 发送 SMS 不起作用

问题描述

问题描述:

我无法从 AWS Lambda 发送短信。

控制器代码

    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());
    }

错误信息:

通过网络
{"message": "Internal server error"}
任务在 28 秒后超时

通过工匠
任务在 120.00 秒后超时

设置

使用 bref/laravel-bridge 在 AWS Lambda 上运行的 Laravel 应用程序
此应用程序的 IAM 用户已创建。在本地一切正常。除了发送短信外,在线一切都正常。

尝试过的解决方案:

尝试了以下软件包。

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 重建完整的调用并尝试一下,但我希望有人有/找到解决方案。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)