我正在尝试编写脚本来自动更新我在Route 53中注册的名称服务器。
这可以通过Amazon Rest API完成:
http://docs.aws.amazon.com/Route53/latest/APIReference/api-update-domain-name-servers.html
到目前为止,我一直在使用Amazon PHP SDK ...但是此SDK甚至不支持此命令(或大多数Route 53命令)。
我已经花了几个小时尝试使用php + curl来形成请求。我拥有所需的一切-acesskeyID,私钥等。无论我做什么,我似乎都无法获得有效的签名。这些文档是一场噩梦...与PHP相关的所有内容都会立即将您引向SDK,这对您没有帮助。
请向我展示如何使用PHP发出REST请求,使用我的密钥对其进行签名并获得响应。
编辑:这是我试图遵循以签署请求的内容。
您正在使用哪个版本的SDK?
根据api v3文档,您可以使用以下代码:
$result = $client->updateDomainNameservers([/* ... */]);
$promise = $client->updateDomainNameserversAsync([/* ... */]);
这些是相关的参数:
$result = $client->updateDomainNameservers([
'DomainName' => '<string>', // REQUIRED
'FIAuthKey' => '<string>',
'Nameservers' => [ // REQUIRED
[
'GlueIps' => ['<string>', ...],
'Name' => '<string>', // REQUIRED
],
// ...
],
]);
如果您使用的不是最新版本的sdk,则可以使用composer
以下命令进行安装:
php composer.phar require aws/aws-sdk-php
我真的认为最好还是坚持使用SDK,除非确实不可能(我认为不是这种情况,如果我错了,请纠正我)。
如果使用composer安装,则可以将composer.json文件更新为包含:
{
"require": {
"aws/aws-sdk-php": "3.*"
}
}
并运行 composer update
如果您只想检查正在使用的sdk版本,则可以运行composer info
(在该目录内):
> composer info
aws/aws-sdk-php 3.18.32 AWS SDK for PHP - Use Amazon Web Services in your PHP project
guzzlehttp/guzzle 6.2.1 Guzzle is a PHP HTTP client library
guzzlehttp/promises 1.2.0 Guzzle promises library
guzzlehttp/psr7 1.3.1 PSR-7 message implementation
mtdowling/jmespath.php 2.3.0 Declaratively specify how to extract elements from a JSON document
psr/http-message 1.0 Common interface for HTTP messages
或检查composer.lock
文件的内容。您应该在那里拥有正在使用的sdk的版本:
"packages": [
{
"name": "aws/aws-sdk-php",
"version": "3.18.32",
"source": {
"type": "git",
"url": "https://github.com/aws/aws-sdk-php.git",
"reference": "84b9927ee116b30babf90a9fc723764672543e29"
},
确保使用最后一个。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句