You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Homestead本地配置Laravel与DynamoDB:list-tables返回空表求助

本地DynamoDB在Laravel Homestead环境下的完整配置步骤

1. 确认本地DynamoDB模拟器状态

NoSQL Workbench自带的本地模拟器必须处于运行状态:

  • 打开NoSQL Workbench进入Operation Builder,检查顶部的Endpoint是否为http://localhost:8000,如果模拟器未启动,点击「Start」按钮启动。

2. 统一AWS CLI与模拟器的配置

本地DynamoDB不校验真实密钥,但要保证CLI配置的凭证和模拟器一致:

  • 在Homestead终端执行aws configure,输入以下信息:
    • AWS Access Key ID:任意字符串(比如AKIA_LOCAL_TEST)
    • AWS Secret Access Key:任意字符串(比如LOCAL_TEST_SECRET)
    • Default region name:和你创建表时选的区域一致(比如us-east-1)
    • Default output format:选json
  • 执行命令时如果还是返回空表,检查模拟器端口:有些版本的本地模拟器默认端口是4566,可以在NoSQL Workbench的设置里查看并修改CLI命令的--endpoint-url。

3. 解决Homestead虚拟机的网络访问问题

Homestead作为虚拟机,localhost指向虚拟机内部,而NoSQL Workbench一般运行在宿主机器上,需要做端口映射:

  • 编辑Homestead目录下的Homestead.yaml,添加端口转发规则:
    ports:
        - send: 8000
          to: 8000
          protocol: tcp
    
  • 执行vagrant reload --provision重启虚拟机
  • 之后在Homestead终端里,把命令中的localhost替换成宿主机器的IP(比如192.168.1.XX,或者查看Homestead的网关IP),或者在NoSQL Workbench的模拟器设置里,让模拟器监听0.0.0.0,这样虚拟机可以直接通过宿主IP访问。

4. Laravel项目中的DynamoDB配置

  • 在项目根目录的.env文件中添加配置:
    AWS_ACCESS_KEY_ID=AKIA_LOCAL_TEST
    AWS_SECRET_ACCESS_KEY=LOCAL_TEST_SECRET
    AWS_DEFAULT_REGION=us-east-1
    AWS_DYNAMODB_ENDPOINT=http://[宿主IP]:8000 # 替换成实际的宿主IP和端口
    
  • 在config/services.php中添加DynamoDB客户端配置:
    'dynamodb' => [
        'key' => env('AWS_ACCESS_KEY_ID'),
        'secret' => env('AWS_SECRET_ACCESS_KEY'),
        'region' => env('AWS_DEFAULT_REGION'),
        'endpoint' => env('AWS_DYNAMODB_ENDPOINT'),
    ],
    
  • 测试连接:创建一个测试方法调用ListTables接口,验证是否能获取到smash表:
    use Aws\DynamoDb\DynamoDbClient;
    
    public function testDynamoConnection()
    {
        $client = new DynamoDbClient([
            'version' => 'latest',
            'region' => env('AWS_DEFAULT_REGION'),
            'endpoint' => env('AWS_DYNAMODB_ENDPOINT'),
            'credentials' => [
                'key' => env('AWS_ACCESS_KEY_ID'),
                'secret' => env('AWS_SECRET_ACCESS_KEY'),
            ],
        ]);
    
        dd($client->listTables()['TableNames']);
    }
    

5. 检查表的部署目标

确保在NoSQL Workbench中创建smash表时,选择的是本地DynamoDB模拟器而非云端实例:

  • 在Data Modeler模块创建表后,部署时选择「Local DynamoDB」,并指定正确的端点地址。

内容的提问来源于stack exchange,提问作者summer9844

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 12:05:29