使用Laravel AWS SDK在Route53

时间:2016-02-25 22:50:54

标签: php laravel amazon-route53 aws-php-sdk

我遇到了一个错误,尝试使用Amazon的PHP SDK和changeresourceRecordSets进行身份验证并创建新的Route53记录集。这是我到目前为止所尝试的内容:

  1. 为Laravel安装了AWS SDK
  2. 使用Amazon的IAM创建新用户和组,并将FullAdministrator策略应用于该组。
  3. 在我的.env文件中存储新用户凭据和其他AWS变量,如下所示:
  4. 以下代码:

    AWS_REGION=us-east-1
    AWS_ACCESS_KEY_ID=XXYYZZ
    AWS_SECRET_ACCESS_KEY=112233
    AWS_ZONE_ID=UHUHUHUH
    
    1. 确认我的Laravel环境配置正确,我的控制器通过测试以下内容来工作:
    2. 以下代码:

      $s3 = AWS::createClient('s3');
      $s3->putObject(array(
        'Bucket'     => 'mydomain.com',
        'Key'        => 'new.pdf',
        'SourceFile' => storage_path('app/old.pdf'),
      ));
      
      1. 一旦我确认我的凭据对S3有效,我就密切关注这个SO answer and code来创建一个新的Route53客户端,并在我的Route53托管区创建一个新的记录集。这是我稍加修改的代码:
      2. 以下代码:

        $client = AWS::createClient('Route53');
        //dd($client);  $client object returned, this works
        
        $result = $client->changeResourceRecordSets(array(
            'HostedZoneId' => env('AWS_ZONE_ID'),
            'ChangeBatch' => array(
                'Comment' => 'just testing',
                'Changes' => array(
                    array(
                        'Action' => 'CREATE',
                        'ResourceRecordSet' => array(
                            'Name' => 'test.mydomain.com.',
                            'Type' => 'A',
                            'TTL' => 600,
                            'ResourceRecords' => array(
                                array(
                                    'Value' => '52.52.52.52',//my AWS IP address
                                ),
                            ),
                        ),
                    ),
                ),
            ),
        ));
        
        1. 产生的错误如下:
        2.   

          客户端错误:POST https://route53.amazonaws.com/2013-04-01/hostedzone/MYZONE/rrset/   导致403 Forbidden回复:   寄件人

          更多来自错误...

            

          SignatureDoesNotMatch(客户):签名已过期:20160225T215502Z现在早于20160225T220842Z(20160225T221342Z - 5分钟)

          任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:0)

我应该补充一点,我在家园/虚拟机环境中运行,真正的问题是我的VM上的日期服务很糟糕。

简单地运行sudo ntpdate -s time.nist.gov解决了这个问题。