1

问题描述:

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

4

0 回答 0