Amazon PHP Rest API与CURL
我正在尝试编写一个脚本来自动更新我在Route 53中注册的名称服务器 这可以通过Amazon Rest API完成: 到目前为止,我一直在使用AmazonPHPSDK……但是这个SDK甚至不支持这个命令(或者大多数Route53命令) 我花了好几个小时试图使用php+curl形成一个请求。我有我所需要的一切-一个acesskeyID,秘密密钥,等等。无论我做什么,我似乎无法得到有效的签名。这些文档是一场噩梦……所有与PHP相关的内容都会立即指向SDK,而SDK在这里没有任何帮助 请告诉我如何使用PHP发出REST请求,使用我的密钥签名,并获得响应Amazon PHP Rest API与CURL,php,rest,amazon-web-services,curl,Php,Rest,Amazon Web Services,Curl,我正在尝试编写一个脚本来自动更新我在Route 53中注册的名称服务器 这可以通过Amazon Rest API完成: 到目前为止,我一直在使用AmazonPHPSDK……但是这个SDK甚至不支持这个命令(或者大多数Route53命令) 我花了好几个小时试图使用php+curl形成一个请求。我有我所需要的一切-一个acesskeyID,秘密密钥,等等。无论我做什么,我似乎无法得到有效的签名。这些文档是一场噩梦……所有与PHP相关的内容都会立即指向SDK,而SDK在这里没有任何帮助 请告诉我如何
编辑:这是我在签署请求时尝试遵循的操作。您使用的是哪个版本的SDK 根据需要,您可以使用以下选项:
$result = $client->updateDomainNameservers([/* ... */]);
$promise = $client->updateDomainNameserversAsync([/* ... */]);
以下是相关参数:
$result = $client->updateDomainNameservers([
'DomainName' => '<string>', // REQUIRED
'FIAuthKey' => '<string>',
'Nameservers' => [ // REQUIRED
[
'GlueIps' => ['<string>', ...],
'Name' => '<string>', // REQUIRED
],
// ...
],
]);
或者使用任何一种
我真的认为你最好还是坚持使用SDK,除非真的不可能(我不认为这里是这样的,如果我错了请纠正我)
如果使用composer安装,则可以更新composer.json文件以包含:
{
"require": {
"aws/aws-sdk-php": "3.*"
}
}
然后运行composer update
如果您只想检查正在使用的sdk的版本,可以运行composer info
(在该目录中):
或者检查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"
},
确保使用最后一个。多亏了@Dekel,我才解决了这个问题。这是我的最终代码
require_once '/vendor/autoload.php';
$access_key="XXXXX";
$secret_key="XXXXXXXXXXXX";
$client = Aws\Route53Domains\Route53DomainsClient::factory(array(
'region'=> "us-east-1",
'version'=>'2014-05-15',
'credentials' => array(
'key' => $access_key,
'secret' => $secret_key,
)));
$result = $client->updateDomainNameservers([
'DomainName' => 'example.com',
"Nameservers"=>array(
array("Name"=>"ns.1.com"),
array("Name"=>"ns.2.com")
)
]);
我已经通过composer安装了SDK,我假设我有最新版本。我收到此错误
Uncaught异常'Guzzle\Common\exception\InvalidArgumentException',消息“找不到与UpdateDomainNameServer匹配的命令”
。我能够在没有任何错误的情况下运行$client->listHostedZones
,并在回答中提供了有关编写器的更多信息。看看这是否是你拥有的。更新SDK后,我意识到了我的问题。我使用的是Aws\Route53\Route53客户端代码>而不是Aws\Route53Domains\Route53DomainClient
。谢谢你的回答!
"packages": [
{
"name": "aws/aws-sdk-php",
"version": "3.18.32",
"source": {
"type": "git",
"url": "https://github.com/aws/aws-sdk-php.git",
"reference": "84b9927ee116b30babf90a9fc723764672543e29"
},
require_once '/vendor/autoload.php';
$access_key="XXXXX";
$secret_key="XXXXXXXXXXXX";
$client = Aws\Route53Domains\Route53DomainsClient::factory(array(
'region'=> "us-east-1",
'version'=>'2014-05-15',
'credentials' => array(
'key' => $access_key,
'secret' => $secret_key,
)));
$result = $client->updateDomainNameservers([
'DomainName' => 'example.com',
"Nameservers"=>array(
array("Name"=>"ns.1.com"),
array("Name"=>"ns.2.com")
)
]);