我正在尝试使用Amazon的
PHP SDK和changeresourceRecordSets进行身份验证并创建新的Route53记录集.这是我到目前为止所尝试的内容:
>为Laravel安装了AWS SDK
>使用Amazon的IAM创建新用户和组,并将FullAdministrator策略应用于该组.
>将新用户凭据和其他AWS变量存储在我的.env文件中,如下所示:
代码如下:
AWS_REGION=us-east-1 AWS_ACCESS_KEY_ID=XXYYZZ AWS_SECRET_ACCESS_KEY=112233 AWS_ZONE_ID=UHUHUHUH
>确认我的Laravel环境配置正确,我的控制器通过测试以下方式工作:
代码如下:
$s3 = AWS::createClient('s3'); $s3->putObject(array( 'Bucket' => 'mydomain.com','Key' => 'new.pdf','SourceFile' => storage_path('app/old.pdf'),));
>一旦我确认我的凭据对S3起作用,我就紧紧跟着这个SO answer and code来创建一个新的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 ),),));
>产生的错误如下:
Client error:
POST
https://route53.amazonaws.com/2013-04-01/hostedzone/MYZONE/rrset/
resulted in a403 Forbidden
response:
Sender
更多来自错误……
SignatureDoesNotMatch (client): Signature expired: 20160225T215502Z is now earlier than 20160225T220842Z (20160225T221342Z – 5 min.)
任何建议表示赞赏.
解决方法
我应该补充一点,我在家园/虚拟机环境中运行,真正的问题是我的VM上的日期服务很糟糕.
只需运行sudo ntpdate -s time.nist.gov修复了问题.