目的
无需购买服务器搭建一个图片鉴黄接口 (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