【问题标题】:Invalid Availability Zone when creating Instance创建实例时可用区无效
【发布时间】:2014-03-29 16:13:41
【问题描述】:

我正在尝试在 us-west-1c 上创建实例(尽管在尝试 1b 或任何其他 AZ 时我遇到了同样的错误)并且我收到了这个错误:

Caught Exception: Status Code: 400, AWS Service: AmazonEC2, AWS Error Code: InvalidParameterValue, AWS Error Message: Invalid availability zone: [us-west-1c]
Response Status Code: 400
Error Code: InvalidParameterValue

我可以通过 AWS 控制台手动创建实例。这是我创建该实例的代码:

   runInstancesRequest =
            new RunInstancesRequest().withInstanceType("m1.medium")
                .withImageId("ami-37b1b45e").withMinCount(1).withMaxCount(1)
                .withSecurityGroupIds("launch-wizard-6")
                .withKeyName("testkey");

        Placement place = new Placement();
        place.setAvailabilityZone("us-west-1c");

        runInstancesRequest.setPlacement(place);

        RunInstancesResult runInstancesResult = ec2.runInstances(runInstancesRequest);

与我在网上找到的其他示例相比,我已经查看了一百次,但我无法确定此错误的原因。

任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: java amazon-web-services amazon-ec2


    【解决方案1】:

    AWS 中的每个区域都相互独立,API 端点也不同。

    如果您没有专门配置代码以将请求发送到“us-west-1”区域,那么默认情况下您实际上是在要求 us-east-1 创建实例位于它从未听说过的可用区中。

    如果您未在代码中指定区域,AWS SDK for Java 使用美国东部(弗吉尼亚北部)区域作为默认区域。

    ——http://docs.aws.amazon.com/AWSSdkDocsJava/latest/DeveloperGuide/java-dg-region-selection.html

    【讨论】:

    • 对不起,我应该把它包括在内。我在执行代码之前设置了端点。经过更多测试,我发现 setEndPoint 不一致。我稍微改变了我的代码,它开始工作了。现在,我正在与 API 和 AWS 控制台之间的这种延迟作斗争。创建实例后,即使我在控制台上看到它,API 也会返回该实例不存在。在它检测到它之前,我必须坚持 90 秒的线程暂停。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 2011-02-25
    • 2022-01-25
    • 2018-03-31
    • 2014-08-22
    • 1970-01-01
    相关资源
    最近更新 更多