如何在本地通过HTTPS运行AWS SAM Start API或SAM调试器?
解决AWS SAM Debugger访问URL改为HTTPS://my.localhost:3000的方法
不用直接修改SAM默认Docker文件,有几种更简便的方式,按优先级推荐:
1. 用SAM CLI启动时直接指定SSL参数(最快捷)
SAM CLI本身支持通过参数启用HTTPS,步骤如下:
- 先生成自签名SSL证书(如果没有的话):
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes -subj "/CN=my.localhost" - 启动SAM本地服务时,指定证书、密钥、主机和端口:
如果是调试Lambda函数用sam local start-api --ssl-cert cert.pem --ssl-key key.pem --host my.localhost --port 3000sam local start-lambda,同样可以添加这些参数。
2. 持久化配置到samconfig.toml
如果不想每次启动都输入一堆参数,可以把配置写到项目根目录的samconfig.toml里:
[default.local.start-api.parameters] ssl_cert = "cert.pem" ssl_key = "key.pem" host = "my.localhost" port = 3000
之后直接运行sam local start-api就会自动套用这些配置。
3. 自定义Docker镜像(适合深度定制场景)
如果必须修改Docker文件,可按以下步骤操作:
- 在项目根目录创建
Dockerfile,基于对应运行时的SAM基础镜像(示例用Python3.11,可根据你的运行时调整):FROM public.ecr.aws/sam/build-python3.11 # 复制本地生成的证书和密钥到容器内 COPY cert.pem /opt/cert.pem COPY key.pem /opt/key.pem # 修改启动命令,启用HTTPS并指定主机端口 CMD ["sam", "local", "start-api", "--ssl-cert", "/opt/cert.pem", "--ssl-key", "/opt/key.pem", "--host", "my.localhost", "--port", "3000"] - 构建并运行自定义镜像:
docker build -t sam-custom-https . docker run -p 3000:3000 sam-custom-https
注意:自签名证书在浏览器中会提示不安全,可手动添加信任;如果使用真实SSL证书,替换cert.pem和key.pem即可。
内容的提问来源于stack exchange,提问作者joshua andres blanco jerez
相关产品推荐
相关产品推荐

