我当前要使用 LocalStack 模拟AWS环境。但是在创建堆栈时,服务返回了一个错误代码:500。
这是我的模板文件:
AWSTemplateFormatVersion: '2010-09-09'
Description: 'Sample'
Resources:
sample:
Type: AWS::Lambda::Function
Properties:
MemorySize: 256
Timeout: 10
Runtime: nodejs8.10
Handler: /dist/service/src/handler.sample
Code:
Zipfile: lambda.zip
这是我要运行的命令:
aws cloudformation create-stack \
--template-body file://localstack/cloudtemplate.yaml \
--stack-name sample \
--endpoint-url=http://localhost:4581 \
这是输出:
Unable to parse response (syntax error: line 1, column 54), invalid XML received:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>500 Internal Server Error</title>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.</p>
似乎本地堆栈的cloudformation端点无法正常工作。我想念什么吗?
答案 0 :(得分:0)
从LocalStack
返回的错误非常模糊,因此您需要更深入地研究。首先,您可以张贴LocalStack
的启动方式(是通过Docker进行的吗,如果是的话,确切的命令行是什么)?
使用Docker和docker-compose:
version: '3'
services:
localstack:
image: localstack/localstack:latest
ports:
- "4567-4584:4567-4584"
- "${PORT_WEB_UI-8080}:${PORT_WEB_UI-8080}"
environment:
- SERVICES=cloudformation
- HOSTNAME=localstack
- DEFAULT_REGION=eu-west-2
- PORT_WEB_UI=${PORT_WEB_UI- }
- DEBUG=1
这里需要注意的几件事:
DEBUG=1
将在执行docker-compose的控制台中为您提供确切的错误,通过它可以(或可以不)帮助您诊断实际问题Cloudformation
(通过将其添加到SERVICES
数组中)并打开适当的端口。默认值为4581(我只是在打开LocalStack
使用的所有端口上方使用默认设置):latest
被使用。我使用的图像版本较旧,并且Cloudformation
出现了问题,因此升级到最新版本后就消失了。不确定在哪一点已解决,但我想没关系。为确保模板没有问题,请尝试使用有效的模板,例如从这里选一个:
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html
使用带有Cloudwatch警报的 SQS队列 YAML示例,以下命令对我有效:
aws cloudformation create-stack --stack-name myteststack --template-body file://cloudf.yml --endpoint-url=http://localhost:4581
如果上述方法仍然有效,但您的模板仍然有问题,那么至少您知道问题所在(也许可以发布更详细的DEBUG输出)。