1

我一直在尝试通过 SDK 发送 OpsWorks 部署命令,但出现此错误:

Fatal error: Uncaught Aws\OpsWorks\Exception\ValidationException: AWS Error Code:  ValidationException, Status Code: 400, AWS Request ID: f33c4c59-f48c-11e2-9764-4d0c126d6399, AWS Error Type: client, AWS Error Message: , User-Agent: aws-sdk-php2/2.4.1 Guzzle/3.7.1 curl/7.24.0 PHP/5.3.15
  thrown in /Users/bigtallbill/REPOS/WEB-APPLICATION/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/NamespaceExceptionFactory.php on line 91

这是我的测试代码:

<?php

require_once "vendor/autoload.php";
use Aws\S3\S3Client;
use Aws\OpsWorks\OpsWorksClient;

define('AWS_KEY', 'mykey');
define('AWS_SECRET', 'mySecret');
define('AWS_OPSWORKS_STACKID', 'my-stack-id');

$opsWorksClient = OpsWorksClient::factory(array(
    'key'    => AWS_KEY,
    'secret' => AWS_SECRET,
    'region' => 'us-east-1'
));

$result = $opsWorksClient->createDeployment(array(
    'StackId' => AWS_OPSWORKS_STACKID,
    'Command' => array(
        'Name' => 'deploy'
    )
));

var_dump($result);

在一天的大部分时间里,我一直在为此苦苦挣扎。我尝试过使用最新的主版本以及最新的发布版本。

此外,我的应用程序可以通过 Web 界面正常部署。我也在使用我的普通 AWS 密钥,而不是 IAM 用户。

任何帮助是极大的赞赏 :)

4

2 回答 2

1

createDeployment的API 文档提到AppId在部署应用程序时也需要该参数。

于 2013-07-29T21:33:22.943 回答
0

我对 PHP 语法不太熟悉,但这里有一个可以工作的 Ruby 代码片段。你需要第一个数组吗?opsworks.create_deployment(:stack_id => app[:stack_id], :app_id => app_id, :instance_ids => instance_ids, :command => {:name => 'deploy'})

于 2013-07-29T17:05:00.163 回答