lambda函数的调用

注意:lambda函数无法匿名调用

  • Lambda 控制台

  • Lambda API

  • Amazon SDK

  • Amazon Command Line Interface (Amazon CLI)

    aws lambda invoke \--cli-binary-format raw-in-base64-out \--function-name my-function \--payload '{ "name": "Bob" }' \response.json
    
  • 其他Amazon服务(APIgateway)

  • lambda函数URL

注意:lambda函数url目前在中国区不可用

函数 URL 是 Lambda 函数的专用 HTTP(S) 端点。可以通过 Lambda 控制台或 Lambda API 创建和配置函数 URL。创建函数 URL 时自动生成唯一的 URL 端点,其 URL 端点永远不会改变。有两种身份验证类型(Auth type

  • AWS_IAM,根据iam身份策略和lambda的基于资源的策略进行验证授权

    aws lambda add-permission --function-name test-event \--statement-id example0-statement \--action lambda:InvokeFunctionUrl \--principal arn:aws-cn:iam::xxxxxxxxxxx:role/MyEc2Access \--function-url-auth-type AWS_IAM
    
  • NONE,函数调用前不进行身份验证,基于资源的策略有效(可进行匿名访问)

    {"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": "*","Action": "lambda:InvokeFunctionUrl","Resource": "arn:aws-cn:lambda:cn-north-1:xxxxxxxxxx:function:test-event","Condition": {"StringEquals": {"lambda:FunctionUrlAuthType": "NONE"}}}]
    }
    

apigateway的三种api调用

在 REST API 和 HTTP API 之间选择

授权选项 REST API HTTP API
IAM
资源策略
Amazon Cognito
使用 AWS Lambda 函数的自定义授权
JSON Web 令牌 (JWT) 2

restapi

apigateway访问有两种方式

  • 匿名访问,中国区需要备案
  • 身份访问
    • 资源策略或iam策略
    • lambda授权方
    • cognito身份池

restapi集成lambda

使用 Lambda 集成构建 API Gateway REST API

如果您设置 API 时不使用 API Gateway 控制台(例如,当从 OpenAPI 导入 API 时),您必须显式创建(如有必要)并设置调用角色和策略以便 API Gateway 调用 Lambda 函数。apigateway会自动配置调用lambda的权限

使用 Lambda 代理集成构建 Hello World REST API

curl -v -X POST \'https://r275xc9bmd.execute-api.us-east-1.amazonaws.com/test/helloworld?name=John&city=Seattle' \-H 'content-type: application/json' \-H 'day: Thursday' \-d '{ "time": "evening" }'

test-invoke-method

使用 Lambda 非代理集成构建 API Gateway REST API

没有备案的请求结果

$ curl -X POST \'https://xxxxxx.execute-api.cn-north-1.amazonaws.com.cn/test/Seattle?time=evening' \-H 'content-type: application/json' \-H 'day: Thursday' \-H 'x-amz-docs-region: cn-north-1' \-d '{"callerName": "John" }'
{"message":"Missing Authentication Token"}

配置iam凭证发送sigv4请求

curl --location --request GET 'https://xxxxxx.execute-api.cn-north-1.amazonaws.com.cn/test/city?city=Seattle&time=morning' \
--header 'callerName: John' \
--header 'X-Amz-Date: 20221226T115709Z' \
--header 'Authorization: AWS4-HMAC-SHA256 Credential=xxxxxxxxxxx/20221226/cn-north-1/execute-api/aws4_request, SignedHeaders=host;x-amz-date, Signature=9396c73baxxxxxxxxxxx80d2ef70373a42797990ec91b0b5d16e1'GET /test/city?city=Seattle&time=morning HTTP/1.1
callerName: John
Host: qzoqsj2lp4.execute-api.cn-north-1.amazonaws.com.cn
X-Amz-Date: 20221226T110510Z
Authorization: AWS4-HMAC-SHA256 Credential=xxxxxxxxxxxxxxxxxx/20221226/cn-north-1/execute-api/aws4_request, SignedHeaders=callername;host;x-amz-date, Signature=3f314f3xxxxxxxxxxxxxx62001ba8b93216607eec328df3
User-Agent: PostmanRuntime/7.26.8
Accept: */*
Cache-Control: no-cache
Postman-Token: e2d3ce25-ac2f-459b-a394-1a31d2b94b2d
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
HTTP/1.1 200 OK
Date: Mon, 26 Dec 2022 11:05:11 GMT
Content-Type: application/json
Content-Length: 42
Connection: keep-alive
x-amzn-RequestId: 62e2a52b-afe4-491e-ae56-d772110ba1f7
x-amz-apigw-id: dwDsNEzYhTIFpHg=
X-Amzn-Trace-Id: Root=1-63a97fe7-0f29600f306ec7b64cef94fb;Sampled=0
{"greeting":"Good morning,  of Seattle. "}

去除权限之后报错

curl --location --request GET 'https://qzoqsj2lp4.execute-api.cn-north-1.amazonaws.com.cn/test/city?city=Seattle&time=morning' \
--header 'callerName: John' \
--header 'X-Amz-Date: 20221226T111714Z' \
--header 'Authorization: AWS4-HMAC-SHA256 Credential=xxxxxxxxxxx/20221226/cn-north-1/execute-api/aws4_request, SignedHeaders=host;x-amz-date, Signature=1f8a3930ed681baf2b97b346f30ac81bdbf52fc2fda491757ecdce549183737d'
{"Message": "User: arn:aws-cn:iam::xxxxxxx:user/username is not authorized to perform: execute-api:Invoke on resource: arn:aws-cn:execute-api:cn-north-1:xxxxxxx:qzoqsj2lp4/test/GET/city"
}

restapi集成http

使用 HTTP 集成构建 API Gateway REST API

httpapi

REST API 和 HTTP API 都是 RESTful API 产品。REST API 支持的功能比 HTTP API 多,而 HTTP API 在设计时功能就极少,因此能够以更低的价格提供

HTTP API 支持 OpenID Connect 和 OAuth 2.0 授权。它们内置了对跨域资源共享 (CORS) 和自动部署的支持

apigateway访问控制方式

  • lambda授权,当客户端调用您的 API 时,API Gateway 会调用您的 Lambda 函数。API Gateway 使用来自 Lambda 函数的响应来确定客户端是否可以访问您的 API
  • jwt授权
  • iam角色和策略授权,在请求中带sigv4签名信息

集成 将路由连接到后端资源。HTTP API 支持 Lambda 代理、Amazon服务和 HTTP 代理集成

httpapi集成lambda

没有权限的访问

$ curl -X "PUT" -H "Contenttype: application/json" -d "{\"id\": \"123\", \"price\": 12345, \"name\": \"myitem\"}" https://xxxxxxx.execute-api.cn-north-1.amazonaws.com.cn/items
{"message":"Forbidden"}
$ curl https://xxxxxxx.execute-api.cn-north-1.amazonaws.com.cn/items
{"message":"Forbidden"}
$ curl -X "DELETE" https://xxxxxxx.execute-api.cn-north-1.amazonaws.com.cn/items/123

添加iam认证,通过sigv4请求

curl --location --request PUT 'https://xxxxxxx.execute-api.cn-north-1.amazonaws.com.cn/items' \
--header 'X-Amz-Content-Sha256: beaead3198f7da1e70d03ab969765e0821b24fc913697e929e726aeaebf0eba3' \
--header 'X-Amz-Date: 20221226T113114Z' \
--header 'Authorization: AWS4-HMAC-SHA256 Credential=AKIAxxxxxxIBC5T4/20221226/cn-north-1/execute-api/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=9e49a827cc1xxxxxxxxxxxxa601071b09dff5d85be762e8698b1' \
--header 'Content-Type: application/json' \
--data-raw '{"id": "123","price": 12345,"name": "myitem"
}'curl --location --request GET 'https://xxxxxxx.execute-api.cn-north-1.amazonaws.com.cn/items/123' \
--header 'X-Amz-Date: 20221226T113219Z' \
--header 'Authorization: AWS4-HMAC-SHA256 Credential=AKxxxxxxxxxT4/20221226/cn-north-1/execute-api/aws4_request, SignedHeaders=host;x-amz-date, Signature=455736dxxxxxxx0e9ebe729222e991c2859856ffe57ac4'{"Item": {"price": 12345,"id": "123","name": "myitem"}
}

websocketapi

WebSocket API 是与后端 HTTP 终端节点、Lambda 函数或其他 Amazon 服务集成的 WebSocket 路由的集合

WebSocket API 是双向的。客户端可以向服务发送消息,服务可以独立向客户端发送消息。这种双向行为可实现更丰富的客户端/服务交互,因为服务无需客户端发出明确请求即可将数据推送到客户端。WebSocket API 通常用于聊天应用程序、协作平台、多人游戏和金融交易平台等实时应用程序

没有测试例子,之后补充吧

aws apigateway 和 lambda 的权限和调用相关推荐

  1. AWS实现定时任务-Lambda+EventBridge

    概述: 我们要在aws上实现定时任务,例如:操作aws的ec2实例实现定时开关机需求,如何实现?最简便的方法是使用aws的lambda函数服务+EventBridge定时器服务 实现办法: 1.登录a ...

  2. aws apigateway 使用httpapi私有集成ecs服务

    参考资料 https://docs.aws.amazon.com/zh_cn/apigateway/latest/developerguide/http-api-private-integration ...

  3. Android m6.0权限问题调用封装utils类 - Permission in Android M

    Android m6.0权限问题调用封装utils类 - Permission in Android M 1.概述 安卓平台权限一直有被流氓应用随便利用诟病, android M的发布彻底解决了这一问 ...

  4. aws python lambda_AWS Lambda

    数据处理 您可以使用 AWS Lambda 执行代码以响应数据更改.系统状态变化或用户操作等触发器.Lambda 可以由 S3.DynamoDB.Kinesis.SNS 和 CloudWatch 等 ...

  5. java lambda 反射_反射调用与Lambda表达式调用

    想调用一个方法很容易,直接代码调用就行,这人人都会.其次呢,还可以使用反射.不过通过反射调用的性能会远远低于直接调用--至少从绝对时间上来看的确是这样.虽然这是个众所周知的现象,我们还是来写个程序来验 ...

  6. aws lambda_带有API网关的AWS Lambda

    aws lambda 在上一篇文章中,我向您展示了如何创建和部署AWS Lambda. 我们将继续这项工作,并只考虑更新该lambda的代码. 我们还将使用AWS API Gateway将REST端点 ...

  7. 带有API网关的AWS Lambda

    在上一篇文章中,我向您展示了如何创建和部署AWS Lambda. 我们将继续这项工作,并只考虑更新该lambda的代码. 我们还将使用AWS API Gateway将REST端点添加到AWS Lamb ...

  8. 使用 Go 和 AWS Lambda 构建无服务 API

    原文地址:How to build a Serverless API with Go and AWS Lambda 原文作者:Alex Edwards 译文出自:掘金翻译计划 本文永久链接:https ...

  9. [译] 使用 Go 和 AWS Lambda 构建无服务 API

    原文地址:How to build a Serverless API with Go and AWS Lambda 原文作者:Alex Edwards 译文出自:掘金翻译计划 本文永久链接:githu ...

最新文章

  1. java response返回xml_Spring 返回Xml格式
  2. jquery键盘事件全记录
  3. arcsde9.3 the arcsde repository is not successfully created
  4. 微软全球副总裁给你发了一张Connect 2016专属邀请卡:信仰再充值!Connect 2016技术大会在线直播!
  5. 调用其他app 的lib_ButterKnife执行效率为什么比其他注入框架高?它的原理是什么...
  6. LeetCode 2114. 句子中的最多单词数
  7. Expression Blend中文教程 - 开篇
  8. 链表一:从尾到头打印链表
  9. uploadify组件文件上传那些事
  10. HTC全景视频,2D 3D视频播放器下载教程
  11. 计算机科学期刊介绍--各种杂志投稿方式与评价
  12. python两个表格相同数据筛选的方法_浅谈pandas筛选出表中满足另一个表所有条件的数据方法...
  13. 原生开发什么意思_原生APP是什么?选原生开发有哪些优势?
  14. 项目创新特色概述及主要内容
  15. 轻量级私有云存储企业主要功能探析
  16. SDNU_ACM_ICPC_2020_Winter_Practice_2nd C 离散化, lower_bound
  17. web服务器和数据库服务器分离的优势
  18. 柴柴随笔第二篇:当肌肉有了记忆能力——“做中学”
  19. OFDMA,LFDMA以及IFDMA的PAPR对比仿真
  20. 重要的人工神经元--感知器和Sigmod神经元

热门文章

  1. ps2020/Photoshop软件下载与功能介绍
  2. Super全色LED系统搭配MAVII鹰眼3.0,极米H5开启家用投影更多可能
  3. librosa--学习笔记(2)(频谱特性 Spectral representations)
  4. [RK3288 Android7.1.2 ]新增wifi模块ap6256
  5. 51单片机串口通信【收集学习向】
  6. 程序员被公司辞退12天,前领导要求回公司讲清楚代码,结果蒙了
  7. python键盘怎么输入双引号_如何在Python中使用字符串变量打印双引号?
  8. 打印机上扫描出现连接计算机,佳能打印机上面有扫描打印机是干什么的 屏幕上面显示连接计算机 打印没反应是怎么回事...
  9. 【信息】宁波银行终面辩论准备之己见
  10. 数据结构课设-小老鼠走迷宫(JAVA版)