编程语言
首页 > 编程语言> > Amazon AWS PHP SDK-群集无法启动-给定的SSH密钥名称无效

Amazon AWS PHP SDK-群集无法启动-给定的SSH密钥名称无效

作者:互联网

我正在尝试创建一个PHP页面来启动集群并将作业添加到作业流.

$response = $emr->run_job_flow($nameOfRun, array(
        'Ec2KeyName' => 'hadoop',
        'HadoopVersion' => '0.20',
        'KeepJobFlowAliveWhenNoSteps' => $clusterAlive,
        'InstanceGroups' => array(
                array( // Group #1
                        'InstanceCount' => $numOfMaster,
                        'InstanceRole' => 'MASTER',
                        'InstanceType' => $masterInstanceType,
                        'Market' => 'ON_DEMAND',
                        'Name' => 'Master',
                ),
                array( // Group #2
                        'InstanceCount' => $numOfSlaves,
                        'InstanceRole' => 'CORE',
                        'InstanceType' => $slaveInstanceType,
                        'Market' => 'ON_DEMAND',
                        'Name' => 'Slaves',
                )
        ),
        'Placement' => array(
                'AvailabilityZone' => 'us-east-1d'
        )
));

启动集群,我可以看到作业流ID.但是它在启动后立即开始关闭.当我执行一个弹性映射–list时,对于该群集,状态为Failed.

任何已知问题或我做错任何地方吗? AvailabilityZone可能是造成此问题的原因吗?

我从AWS Console进行了检查,它给出了此错误-给定的SSH密钥名称无效
我查了一下,快捷键和config.inc.php中提供密钥我是正确的,工作.

问候,
Kartikeya Sinha

解决方法:

看起来有四个不同的陷阱可能会导致此错误,如此AWS thread:所述

>从控制台中指定确切的密钥对名称.
>指定与端点区域不同的区域中存在的密钥对.
>将密钥对用于其他AWS服务,而不是用于EC2.
>使用重命名的密钥对pem文件时,它应与控制台中的密钥对匹配(实际上是1的特殊情况).

如果一切正常,请尝试删除密钥对并制作一个新的密钥对.

根据对PHP SDK文档的阅读,我认为问题在于您完全指定了EC2KeyName(您的注释表明您不想将特定的pem文件绑定到EC2实例;您只想使用秘密访问)键和访问键).

Ec2KeyName – string – Optional – Specifies the name of the Amazon EC2 key pair that can be used to ssh to the master node as the user called “hadoop.” [Constraints: The value must be between 0 and 256 characters, and must match the following regular expression pattern:

[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*]

此参数是指可以与EC2实例关联的pem密钥对文件.您的评论建议您专门谈论AccessKeys和SecretAccessKeys,它们是不同的概念.通过pem文件,您可以通过ssh访问EC2实例.后者授权您使用AWS API.

您将能够杀死该可选参数并完成工作,尽管没有pem文件就无法进入其附属的EC2实例.

标签:emr,amazon-web-services,php
来源: https://codeday.me/bug/20191127/2076329.html