无论我选择什么实例名称,只要我在预处理实例上执行以下操作:
aws deploy register --instance-name test --tags "Key=Name,Value=test" --region us-west-2 --debug
抛出以下异常(总是):
2016-04-12 11:02:52,625 - MainThread - awscli.errorhandler - DEBUG - HTTP Response Code: 400
ERROR
A client error (InvalidIamUserArnException) occurred when calling the RegisterOnPremisesInstance operation: Iam User ARN
arn:aws:iam::xxx:user/AWS/CodeDeploy/test is not in a valid format
Register the on-premises instance by following the instructions in "Configure Existing On-Premises Instances by Using AWS CodeDeploy" in the AWS CodeDeploy User Guide.
尽管出现了这个错误,但用户是在亚马逊上创建的,我可以继续用以下命令注册on-prem实例:
aws deploy register-on-premises-instance --instance-name test --iam-user-arn arn:aws:iam::xxx:user/test
aws deploy install --override-config --config-file codedeploy.onpremises.yml --region us-west-2 --agent-installer s3://aws-codedeploy-us-west-2/latest/codedeploy-agent.msi
实例已经注册并创建了用户,但当部署到它时,我总是得到"No hosts successed"。codedeploy代理的日志没有显示任何错误。
我也不确定这里发生了什么,因为两端、codedeploy控制台或prem机器上的codedeploy-agent上都没有日志。有什么想法吗?
请注意,我使用的是Windows Embedded Standard 2010(不在支持列表中)和最新版本的aws-cli,但我过去曾成功部署到它(和以前版本的aws-cli)。
如果你尝试让"aws deploy register"为你创建IAM用户,你会发现它似乎已经崩溃了。但是,如果您先创建用户(通过控制台或aws-cli),那么它就可以工作了。
之后,您可以使用"aws-deploy-register"命令传入选项"--iam-user-arn arn:aws:iam::xxx:user/OnPremCodeDeploy"。
我用手动创建用户的正确访问密钥手动创建了on prem yml,然后最终运行:
aws deploy install --overide-config --config-file conf.onpremises.yml --region us-west-2 --agent-installer s3://aws-codedeploy-us-west-2/latest/codedeploy-agent.msi
*至少带有codedeployagent OFFICIAL_1.0.1.950_msi和windows嵌入式
能否检查您向CodeDeploy注册本地实例的IAM用户是否具有适当的权限?包括以下内容。
"iam:CreateAccessKey",
"iam:CreateUser",
"iam:DeleteAccessKey",
"iam:DeleteUser",
"iam:DeleteUserPolicy",
"iam:ListAccessKeys",
"iam:ListUserPolicies",
"iam:PutUserPolicy",
"iam:GetUser"
这也可以在这里参考:http://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-configure-on-premises-host.html#how-配置本地主机先决条件