通常,当Chalice本地工作时但无法成功部署,可能是由于以下原因之一:
AWS权限不正确:确保您的AWS权限与您尝试部署的Lambda函数及其资源相匹配。
环境问题:确保您的手动设置或自动设置中包含的环境变量正确,并且您的AWS CLI配置已正确配置。
前后端交互问题:如果您的应用程序其中一部分成功,但其他部分失败,请检查与错误相关的AWS服务是否已成功配置,以及它们之间的前后端交互是否正确。
以下是一个可能的解决方案,可以解决Chalice在本地工作,但无法部署的问题:
import os
from chalice import Chalice
app = Chalice(app_name='myapp')
app.debug = True
app.api.cors = True
@app.route('/')
def index():
return {'hello': 'world!'}
@app.route('/querystring', methods=['GET'])
def querystring():
return {'args': app.current_request.query_params}
@app.route('/labmdaenv', methods=['GET'])
def lambdaenv():
# print environment variable
return {'env': os.environ.get('ENV_VIR')}
@app.route('/fruits', methods=['POST'])
def create_fruits():
data = app.current_request.json_body
app.log.debug(f'data: {data}')
return {'data': data}
@app.route('/fruits/{fruit_name}', methods=['GET'])
def read_fruit(fruit_name):
return {'fruit_name': fruit_name}
@app.route('/fruits/{fruit_name}', methods=['PUT'])
def update_fruit(fruit_name):
data = app.current_request.json_body
app.log.debug(f'data: {data}')
return {'updated_data': data}
运行以下命令启动Chalice:
$ chalice local
如果成功,则在浏览器中输入'http://127.0.0.1:8000”即可查看结果。
要将服务部署到AWS Lambda,则需要运行以下命令:
$ chalice deploy
如果部署失败,则可以通过添加'--no-autogen-policy”选项使Chalice将IAM策略文件保留为'policy-dev.json”,并强制您手动进行审核。例如:
$ chalice deploy --no-autogen-policy
``