首页 > 解决方案 > 使用无服务器在 localstack 上部署 lambda 时出错

问题描述

将 lambda 部署到 localstack 时出现奇怪的错误。有没有人经历过类似的事情?在 localstack 出现错误之前的警告中有一些气味。putSubscriptionFilter 调用中的 destinationArn 是 arn:aws:logs:eu-west-1:802587217904:destination:51b991a8-4c89-4528-b0cd-88ff57bc09c3#MQyP8p1VJ7ndRwDq0S#orderUpdate#local。对于在 localstack 中创建的其他资源,accountid 不应该是 000000000000 吗?

localstack docker-compose.yml

version: "3.8"
services:
  localstack:
    container_name: "${LOCALSTACK_DOCKER_NAME-localstack_main}"
    image: localstack/localstack:latest
    networks:
      default:
      reaction:
    ports:
      - "127.0.0.1:53:53"
      - "127.0.0.1:53:53/udp"
      - "127.0.0.1:443:443"
      - "127.0.0.1:4566:4566"
      - "127.0.0.1:4571:4571"
    environment:
      - SERVICES=${SERVICES- }
      - DEBUG=1
      - KINESIS_ERROR_PROBABILITY=${KINESIS_ERROR_PROBABILITY- }
      - DOCKER_HOST=unix:///var/run/docker.sock
    volumes:
      - "${TMPDIR:-/tmp}/localstack:/tmp/localstack"
      - "/var/run/docker.sock:/var/run/docker.sock"

无服务器.yml

configValidationMode: error
variablesResolutionMode: 20210326
frameworkVersion: '2'
plugins:
  - serverless-localstack
custom:
  localstack:
    host: http://localhost
    edgePort: 4566
    stages:
      - local

provider:
  name: aws
  region: eu-west-1 
  runtime: nodejs12.x
  lambdaHashingVersion: 20201221
  memorySize: 51
functions:
  orderUpdate:
    handler: orderUpdate.orderupdatehandler
    events:
      - http:
          path: orderupdate
          method: post
          private: true

来自本地堆栈的错误:

2021-11-15T11:41:41:警告:localstack.utils.cloudformation.template_deployer:

使用参数调用 <botocore.client.CloudWatchLogs 对象在 0x7f76d89a2c10>> 的 <bound method ClientCreator._create_api_method.._api_call 时出错:{'logGroupName': '/aws/lambda/tibber-ecom-erp-api-local-orderUpdate', 'filterName': '/aws/lambda/api-local-orderUpdate', 'filterPattern': '?"REPORT RequestId: " ?"SERVERLESS_ENTERPRISE"', 'destinationArn': 'arn:aws:logs:eu-west-1 :802587217904:destination:51b991a8-4c89-4528-b0cd-88ff57bc09c3#MQyP8p1VJ7ndRwDq0S#tibber-ecom-erp-api#local'} 资源:{'Type': 'AWS::Logs::SubscriptionFilter', 'LogicalResourceId': 'CWLSubFilterOrderUpdateLogGroupEuWest1', 'Properties': {'DestinationArn': 'arn:aws:logs:eu-west-1:802587217904:destination:51b991a8-4c89-4528-b0cd-88ff57bc09c3#MQyP8p1VJ7ndRwDq0S#api#local', 'FilterPattern': '?"REPORT RequestId: " ?"SERVERLESS_ENTERPRISE"', 'LogGroupName': '/aws/lambda/api-local-orderUpdate' }, '状态':{},'PhysicalResourceId':无}

2021-11-15T11:41:41:DEBUG:localstack.utils.cloudformation.template_deployer: Error applying changes for CloudFormation stack "api-local": An error occurred (InvalidParameterException) when calling the PutSubscriptionFilter operation: PutSubscriptionFilter operation cannot work with destinationArn for vendor logs Traceback (most recent call last):

  File "/opt/code/localstack/localstack/utils/cloudformation/template_deployer.py", line 1482, in _run

    self.do_apply_changes_in_loop(changes, stack, stack_name)

  File "/opt/code/localstack/localstack/utils/cloudformation/template_deployer.py", line 1554, in do_apply_changes_in_loop

    self.apply_change(change, stack, new_resources, stack_name=stack_name)

  File "/opt/code/localstack/localstack/utils/cloudformation/template_deployer.py", line 1619, in apply_change

    result = deploy_resource(resource_id, new_resources, stack_name)

  File "/opt/code/localstack/localstack/utils/cloudformation/template_deployer.py", line 778, in deploy_resource

    result = execute_resource_action(resource_id, resources, stack_name, ACTION_CREATE)

  File "/opt/code/localstack/localstack/utils/cloudformation/template_deployer.py", line 835, in execute_resource_action

    resource_id, resources, resource_type, func, stack_name, action_name

  File "/opt/code/localstack/localstack/utils/cloudformation/template_deployer.py", line 963, in configure_resource_via_sdk

    raise e

  File "/opt/code/localstack/localstack/utils/cloudformation/template_deployer.py", line 951, in configure_resource_via_sdk

    result = function(**params)

  File "/opt/code/localstack/.venv/lib/python3.7/site-packages/botocore/client.py", line 391, in _api_call

    return self._make_api_call(operation_name, kwargs)

  File "/opt/code/localstack/.venv/lib/python3.7/site-packages/botocore/client.py", line 719, in _make_api_call

    raise error_class(parsed_response, operation_name)

botocore.errorfactory.InvalidParameterException: An error occurred (InvalidParameterException) when calling the PutSubscriptionFilter operation: PutSubscriptionFilter operation cannot work with destinationArn for vendor logs

标签: amazon-web-servicesaws-lambdaserverlesslocalstack

解决方案


推荐阅读