首页 > 解决方案 > 通过 API 创建 AWS 安全组的问题

问题描述

AWS PHP SDK Version 3.188.1 - 2021-08-09

我有以下 PHP 代码:

require ..'/aws_sdk/aws-autoloader.php';
use Aws\Ec2\Ec2Client;
use Aws\Exception\AwsException;

$Ec2Client = Ec2Client('mykey', 'mysecretkey', '2016-11-15', 'us-east-1');

$params = [
    'DryRun' => true,
    'GroupName' => 'mygroupSG',
    'Description' => 'My Security Group'
];

results = SecurityGroup($Ec2Client, $params);

function Ec2Client($access_Key, $SecretAccessKey, $version, $region)
{
    try {
        $ec2Client = new Aws\Ec2\Ec2Client([
            'key' => $access_Key, 
            'secret' => $SecretAccessKey,
            'version' => $version,
            'region' => $region
        ]); 
    } catch (Ec2Exception $ex) {
        die($ex->getMessage());
    }
    return $ec2Client;
}

function SecurityGroup($Ec2Client, $params)
{
    try {
        return $Ec2Client->createSecurityGroup($params);
    } catch (Ec2Exception $ex) {
        var_dump($ex);
        die ($ex->getAwsErrorCode());
    }    
}

当我运行这段代码时,我收到以下错误

Fatal error: Uncaught exception 'Aws\Ec2\Exception\Ec2Exception' with message 'Error executing "CreateSecurityGroup" on "https://ec2.us-east-1.amazonaws.com"; AWS HTTP error: Client error: `POST https://ec2.us-east-1.amazonaws.com` resulted in a `400 Bad Request` response: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>MalformedQueryString</title> </head> </htm (truncated...) Unable to parse error information from response - Error parsing XML: String could not be parsed as XML' GuzzleHttp\Exception\ClientException: Client error: `POST https://ec2.us-east-1.amazonaws.com` resulted in a `400 Bad Request` response: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>MalformedQueryString</title> </head> </htm (truncated...) in /aws_sdk/GuzzleHttp/Exception/RequestException.php:113 Stack trace: #0 /aws_sdk/GuzzleHttp/Middleware.php(65): GuzzleHttp\Exception\RequestException in /aws_sdk/Aws/WrappedHttpHandler.php on line 195

我单独验证了 Ec2Client 已正确创建。我正在关注 AWS 文档中的示例,但这有点令人困惑,因为有多个示例使用不同的参数列表。有任何想法吗?

解决方案:

问题出在我的 .aws 目录中的凭证文件中。它的凭据不正确,因此我的身份验证不正确。但是创建 Ec2Client 时我没有收到错误消息。

标签: amazon-web-servicesamazon-ec2aws-sdkaws-php-sdk

解决方案


推荐阅读