Skip to content

Issue with default region on Localstack 1.1 #284

@bianchim

Description

@bianchim

Actual Behaviour

Using the plugin has become impossible as of late due to a hardcoded value 'localhost' as the region when initializing the plugin :
https://github.com/99x/serverless-dynamodb-local/blob/v1/index.js#L192

When starting the stack ( Localstack + serverless) I get an error :
'localhost' is not a valid AWS region name for dynamodb

This is thrown by boto3 when trying to resolve the DynamoDB enpoint and region locally.

Steps to reproduce it

Use Localstack 1.1.0, Serverless v3, and this plugin for migration and seeding.

Logs for the issue

The error message appears in every call, here's one of them :

localstack_1 | 2022-09-05T12:41:30.713 ERROR --- [ asgi_gw_0] l.aws.handlers.logging : exception during call chain localstack_1 | Traceback (most recent call last): localstack_1 | File "/opt/code/localstack/localstack/aws/chain.py", line 57, in handle localstack_1 | handler(self, self.context, response) localstack_1 | File "/opt/code/localstack/localstack/aws/handlers/service.py", line 122, in __call__ localstack_1 | handler(chain, context, response) localstack_1 | File "/opt/code/localstack/localstack/aws/handlers/service.py", line 92, in __call__ localstack_1 | skeleton_response = self.skeleton.invoke(context) localstack_1 | File "/opt/code/localstack/localstack/aws/skeleton.py", line 153, in invoke localstack_1 | return self.dispatch_request(context, instance) localstack_1 | File "/opt/code/localstack/localstack/aws/skeleton.py", line 165, in dispatch_request localstack_1 | result = handler(context, instance) or {} localstack_1 | File "/opt/code/localstack/localstack/aws/forwarder.py", line 56, in _call localstack_1 | return handler(context, req) localstack_1 | File "/opt/code/localstack/localstack/aws/skeleton.py", line 117, in __call__ localstack_1 | return self.fn(*args, **kwargs) localstack_1 | File "/opt/code/localstack/localstack/services/dynamodb/provider.py", line 471, in describe_table localstack_1 | global_table_region: str | None = find_global_table_region( localstack_1 | File "/opt/code/localstack/localstack/services/dynamodb/provider.py", line 285, in find_global_table_region localstack_1 | replicas = get_store().REPLICA_UPDATES.get(table_name) localstack_1 | File "/opt/code/localstack/localstack/services/dynamodb/provider.py", line 275, in get_store localstack_1 | return dynamodb_stores[_account_id][_region] localstack_1 | File "/opt/code/localstack/localstack/services/stores.py", line 166, in __getitem__ localstack_1 | raise ValueError( localstack_1 | ValueError: 'localhost' is not a valid AWS region name for dynamodb

Would you like to work on the issue?

I have only done a minor fix for my use case in a fork, but it may need a bit more work to make it configurable.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions