IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 在aws lambda上部署go程序,并通过php来调用 -> 正文阅读

[PHP知识库]在aws lambda上部署go程序,并通过php来调用

创建一个只有一个文件的简单程序

以下关于AWS CLI的安装和配置,我不确定是否必要,官方文档上说是需要的。

安装 AWS CLI?

Installing or updating the latest version of the AWS CLI - AWS Command Line Interface

配置aws cli

编译和打包,进入main.go所在的目录,依次执行两条命令:

GOOS=linux go build main.go

zip function.zip main ?

经过以上两行命令,就得到了最终需要部署的文件:function.zip,这个文件名应该是可以随意起名的。

在aws的lambda控制台创建函数

这里要改成main,应该就是启动的入口文件名

上传zip文件

我在这里点上传后,没有反应。可能是谷歌浏览器的问题。换成edge后,就正常了。

在控制台中,测试结果

结果详情

上面只是通过AWS提台的控制台来调用。在实际项目是,是需要采取其它语言来调用的。

本例是通过PHP脚本来调用这个lambda

<?php
require '../vendor/autoload.php';

use Aws\Lambda\LambdaClient;

class MyLambda
{
    protected $client;
    //与AWS的Lambda建立连接,获取client
    public function __construct()
    {
        try {
            //配置认证参数
            $region = '填你自己的配置';
            $version = "latest";
            $awskey = '填你自己的配置';
            $secret = '填你自己的配置';
            $credentials = array(
                'region' => $region,
                'version' => $version,
                'credentials' => array(
                    'key' => $awskey,
                    'secret' => $secret,
                )
            );
            $this->client = new LambdaClient($credentials);
        } catch (Exception $e) {
            echo '无法创建 lambda client ' . $e->getMessage();
        }
    }

    /**
     * 调用lambda程序,获取执行结果
     * @param [type] $functionName 就是在AWS控制台,创建lambda函数时所启的名字
     * @param [type] $Payload 请求参数
     * @return array
     */
    public function invoke($functionName, $Payload)
    {
        //远程调用lambda,获取的结果,存在res里
        $res = $this->client->invoke([
            "FunctionName" => $functionName,
            "Payload" => json_encode($Payload) //这里的payLoad是请求参数
        ]);
        //这里的payLoad是响应结果
        $payload = $res->get("Payload");
        $arr = json_decode($payload, true);
        if (!$arr) {
            return false;
        }
        return $arr;
    }
}
$lambda = new MyLambda();
$payLoad = [
    'Name' => "李雷",
    'Age' => 14,
    'addr' => "Kiev"
];
$re = $lambda->invoke("helloGo", $payLoad);
print_r($re);

运行这个脚本之前,需要自行通过composer安装AWS 的sdk

"aws/aws-sdk-php": "^3.185"

执行结果?

 php lambda.php 
Array
(
    [Msg] => Hello 李雷!You are 14 years old. You live in Kiev
)

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 15:48:22  更:2022-03-03 15:50:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 11:58:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码