4

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

  1. 安装了适用于 Laravel的AWS开发工具包
  2. 使用 Amazon 的 IAM 创建新用户和组,并将 FullAdministrator 策略应用于组。
  3. 将新的用户凭证和其他 AWS 变量存储在我的 .env 文件中,如下所示:

下面的代码:

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

下面的代码:

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

下面的代码:

$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. 产生的错误如下:

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

更多来自错误......

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

任何建议表示赞赏。

4

1 回答 1

0

我应该补充一点,我在宅基地/虚拟机环境中运行,真正的问题是我的 VM 上的日期服务严重关闭。

只需运行 sudo ntpdate -s time.nist.gov 即可解决问题。

于 2016-02-26T00:06:44.923 回答