本地堆栈无服务器部署未能成功部署。

4
我尝试使用LocalStack和serverless-local插件在本地部署无服务器项目。当我尝试使用serverless deploy部署时,它会抛出错误,并且无法创建cloudformation堆栈。但是,当我在真实的AWS环境中部署该项目时,我成功创建了相同的堆栈。可能出现了什么问题?我检查了所有以前提出的类似问题的答案,但没有任何有效解决方案。 docker-compose.yml
version: "3.8"

services:
  localstack:
    container_name: "serverless-localstack_main"
    image: localstack/localstack
    ports:
      - "4566-4597:4566-4597"
    environment:
      - AWS_DEFAULT_REGION=eu-west-1
      - EDGE_PORT=4566
      - SERVICES=lambda,cloudformation,s3,sts,iam,apigateway,cloudwatch
    volumes:
      - "${TMPDIR:-/tmp/localstack}:/tmp/localstack"
      - "/var/run/docker.sock:/var/run/docker.sock"

serverless.yml

service: serverless-localstack-test

frameworkVersion: '2'

plugins:
  - serverless-localstack

custom:
  localstack:
    debug: true
    host: http://localhost
    edgePort: 4566
    autostart: true
    lambda:
      mountCode: True
    stages:
      - local
    endpointFile: config.json


provider:
  name: aws
  runtime: nodejs12.x
  lambdaHashingVersion: 20201221
  stage: local
  region: eu-west-1
  deploymentBucket:
    name: deployment

functions:
  hello:
    handler: handler.hello

配置文件 config.json(包含端点)

{
    "CloudFormation": "http://localhost:4566",
    "CloudWatch": "http://localhost:4566",
    "Lambda": "http://localhost:4566",
    "S3": "http://localhost:4566"
}

本地容器出现错误

serverless-localstack_main | 2021-06-04T17:41:49:WARNING:localstack.utils.cloudformation.template_deployer: Error calling
 <bound method ClientCreator._create_api_method.<locals>._api_call of 
<botocore.client.Lambda object at 0x7f31f359a4c0>> with params: {'FunctionName': 
'serverless-localstack-test-local-hello', 'Runtime': 'nodejs12.x', 'Role': 
'arn:aws:iam::000000000000:role/serverless-localstack-test-local-eu-west-1-lambdaRole',
 'Handler': 'handler.hello', 'Code': {'S3Bucket': '__local__', 'S3Key': 
'/Users/charles/Documents/Practice/serverless-localstack-test'}, 'Timeout': 6,
 'MemorySize': 1024} for resource: {'Type': 'AWS::Lambda::Function', 'Properties': 
{'Code': {'S3Bucket': '__local__', 'S3Key': 
'/Users/charles/Documents/Practice/serverless-localstack-test'}, 'Handler': 
'handler.hello', 'Runtime': 'nodejs12.x', 'FunctionName': 'serverless-localstack-test-
local-hello', 'MemorySize': 1024, 'Timeout': 6, 'Role': 
'arn:aws:iam::000000000000:role/serverless-localstack-test-local-eu-west-1-lambdaRole'}, 
'DependsOn': ['HelloLogGroup'], 'LogicalResourceId': 'HelloLambdaFunction', 
'PhysicalResourceId': None, '_state_': {}}
2个回答

0

你需要对你的文件进行一些调整。

  • 更新你的docker-compose.yml文件,使用本地堆栈的参考docker compose,你可以在这里查看here

  • 使用能够正常工作的模板,AWS文档页面有几个示例,你可以在这里查看here

  • 通过以下命令运行它:aws cloudformation create-stack --endpoint-url http://localhost:4566 --stack-name samplestack --template-body file://lambda.yml --profile dev

你也可以使用下面的Python命令运行本地堆栈

pip install localstack 
localstack start

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接