Python 不用api网关直接用rest api调用aws lamdba
在this blog()中,我看到只有serverless.yaml:Python 不用api网关直接用rest api调用aws lamdba,python,amazon-web-services,aws-lambda,aws-api-gateway,Python,Amazon Web Services,Aws Lambda,Aws Api Gateway,在this blog()中,我看到只有serverless.yaml: # serverless.yml service: serverless-flask plugins: - serverless-python-requirements - serverless-wsgi custom: wsgi: app: app.app packRequirements: false pythonRequirements: dockerizePip: non
# serverless.yml
service: serverless-flask
plugins:
- serverless-python-requirements
- serverless-wsgi
custom:
wsgi:
app: app.app
packRequirements: false
pythonRequirements:
dockerizePip: non-linux
provider:
name: aws
runtime: python3.6
stage: dev
region: us-east-1
functions:
app:
handler: wsgi.handler
events:
- http: ANY /
- http: 'ANY {proxy+}'
和app.py:
# app.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():u
return "Hello World!"
如何从internet直接呼叫lambda。aws的哪个服务/组件获取此URL,并且是永久的。URL是否可以在没有API网关的情况下自定义?是否也可以将此URL提供给客户作为API使用?一个具有http
事件的“无服务器”(即)功能正在为您创建API网关。对API网关端点的请求将发送到lambda。因为您使用的是{proxy+}
选项,所以它基本上会将所有内容路由到函数,并期望函数了解请求的含义
如果您想直接从internet调用该函数,您可以,但可能不应该。所有AWS API都只是HTTPs调用。从互联网上给他们打电话需要有这样做的凭据,并对请求进行适当的签名。如果你真的想直接从因特网上调用它,你可以考虑使用Cytoito。您可以通过Cognito标识获取临时凭据,并且可以通过SDK调用lambda来为您处理签名。可以使用rest API直接调用AWS lambda,而不使用任何其他AWS服务?不需要任何其他服务。您至少需要凭据,因此需要IAM用户或其他获取这些凭据的方法。您可以通过调用invoke API()来调用lambda。