LocalStack
我目前想要使用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>
似乎localstack的cloudformation端点无法正常工作。我错过了什么吗?
回答如下:你从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/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html
将SQS队列与Cloudwatch警报一起使用YAML示例以下命令适用于我:
aws cloudformation create-stack --stack-name myteststack --template-body file://cloudf.yml --endpoint-url=http://localhost:4581
如果上述方法有效并且您的模板仍然存在问题,那么至少您知道问题所在(也许您可以发布更详细的DEBUG输出)。
LocalStack
我目前想要使用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>
似乎localstack的cloudformation端点无法正常工作。我错过了什么吗?
回答如下:你从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/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html
将SQS队列与Cloudwatch警报一起使用YAML示例以下命令适用于我:
aws cloudformation create-stack --stack-name myteststack --template-body file://cloudf.yml --endpoint-url=http://localhost:4581
如果上述方法有效并且您的模板仍然存在问题,那么至少您知道问题所在(也许您可以发布更详细的DEBUG输出)。