AWS用Lambda搭建一个无服务的图片鉴黄Restful API,不超过10行代码

AWS用Lambda搭建一个无服务的图片鉴黄Restful API,不超过10行代码目的无需购买服务器搭建一个图片鉴黄接口(Python语言)Lambda介绍:https://aws.amazon.com/cn/lambda/AWS的Lambda控制台首页:https://console.aws.amazon.com/lambda/home图片鉴黄文档:https://docs.aws.amazon.com/zh_cn/rekognition/latest/dg/procedure-moderate-images.html1.创建函数选择第一个:从头开始创作&

目的

无需购买服务器搭建一个图片鉴黄接口 (Python语言)

Lambda介绍 : https://aws.amazon.com/cn/lambda/

AWS的Lambda控制台首页: https://console.aws.amazon.com/lambda/home

图片鉴黄文档:https://docs.aws.amazon.com/zh_cn/rekognition/latest/dg/procedure-moderate-images.html

1.创建函数

在这里插入图片描述

选择第一个:从头开始创作 –> 输入:函数名称 –> 运行时环境选择Python
在这里插入图片描述

AWS支持多种语言,.Net、Go、Java、Node.js、Python和Ruby
在这里插入图片描述
在这里插入图片描述
选择“创建具有基本Lambda权限的新角色”,如果你已经有了角色,就选择第二个吧。

2.权限配置

你可以编辑此无服务函数占用的最大内存数,通常256MB和512MB就可用了
在这里插入图片描述

然后去配置此Lambda函数可以访问哪些AWS的资源;先点击权限 –> 然后点击配置名称 ,就可以去配置角色了
在这里插入图片描述

现在,我们去添加此Lambda函数可访问的AWS服务,点击附加策略
在这里插入图片描述

添加AWS的识别服务策略 官方文档
在这里插入图片描述

如果此Lambda函数希望访问S3桶的数据,那就需要添加
在这里插入图片描述

3.代码编写

在这里插入图片描述
点击测试,会有以下输出
在这里插入图片描述

完整的代码如下:

import json
import boto3

def recognize_S3_image(photo, bucket):
    # 识别图片源来自S3桶
    client = boto3.client('rekognition')
    response = client.detect_moderation_labels(Image={ 
   'S3Object':{ 
   'Bucket':bucket,'Name':photo}})
    return handle_result(response)

def recognize_base64_image(image_base64_encoded):
    # 识别图片源来自base64编码
    client = boto3.client('rekognition')
    response = client.detect_moderation_labels(Image={ 
   'Bytes':image_base64_encoded})
    print("识别成功!")
    return handle_result(response)
    
def handle_result(response):
    max_confidence = 0
    optimal_name = ""
    parent_name = ""
    for label in response['ModerationLabels']:
        if label['Confidence'] > max_confidence:
            max_confidence = label['Confidence']
            optimal_name = label['Name']
            parent_name = label['ParentName']
    return max_confidence, optimal_name
    
def lambda_handler(event, context):
    print("============================================")
    print(event) 
    # 获取
    # image_base64_encoded = event["image"]
    # if image_base64_encoded is None and len(image_base64_encoded) < 0:
    # return
    # max_confidence, optimal_name = recognize_base64_image(image_base64_encoded)

    # 识别S3桶图片 
    max_confidence, optimal_name = recognize_S3_image('test_porn.jpeg', 'yooul-recognition')
  
    return { 
   
        'statusCode': 200,
        'body': { 
   
            "confidence" : max_confidence,
            "label" : optimal_name
        }
    }

4.公网访问

需要配置API Gateway
在这里插入图片描述

创建一个API
在这里插入图片描述

选择一个REST API
在这里插入图片描述

依次填写API类型为REST,API名称,终端节点类型
在这里插入图片描述

先创建资源,再创建方法
在这里插入图片描述

先创建资源,再创建方法,
这里我创建的是POST方法,
Lambda函数选择我们之前创建的,因为我这里是创建的另一个API Gate,流程一模一样
在这里插入图片描述

部署API
在这里插入图片描述
在这里插入图片描述

AWS就会生成外部可以访问的地址,如果是测试环境,后面是test,如果是生产环境后面就是production
其中test和production都是我自己命名的,每次在部署时写的
在这里插入图片描述

生成前端iOS,安卓,HTML可以访问的sdk,这是AWS帮我们写好的
在这里插入图片描述

到这里就结束了,你就根据下载的sdk上的演示来使用

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/38226.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注