我正在尝试使用aws设置代码部署,但是当我尝试执行部署时,我收到此错误:
2016-06-08 23:57:11 ERROR [codedeploy-agent(1207)]: InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Cannot reach InstanceService: Aws::CodeDeployCommand::Errors::AccessDeniedException -
2016-06-08 23:58:41 INFO [codedeploy-agent(1207)]: Version file found in /opt/codedeploy-agent/.version.
2016-06-08 23:58:41 INFO [codedeploy-agent(1207)]: [Aws::CodeDeployCommand::Client 400 0.055741 0 retries] poll_host_command(host_identifier:"IAM-user-ARN") Aws::CodeDeployCommand::Errors::AccessDeniedException
我有两个 IAM 角色 - 一个用于EC2实例,另一个用于部署应用。 S3存储区具有用于部署的iam角色的权限集:
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "XXXXXXXX:role/TestRole"
},
"Action": [
"s3:Get*",
"s3:List*"
],
"Resource": "arn:aws:s3:::pmcdeploy/*"
}
]
}
发生了什么事?
答案 0 :(得分:1)
错误是否一致?在查看代理代码时,似乎代理可能在与EC2交谈时遇到问题。如果这是一个持久性问题,您可以共享EC2实例配置文件。
同时使用verbose option enabled启动代理可以提供有关正在发生的事情的更多信息。
由于
答案 1 :(得分:1)
这实际上是与凭据加载顺序相关的事情。默认情况下,Host代理以root用户身份运行,并且还使用实例配置文件。
当您根据以下内容设置优先于实例配置文件的根凭据时,会出现例外情况:http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#config-settings-and-precedence
然后,Host Agent使用的aws sdk将使用为root用户配置的凭据而不是实例配置文件来配置请求。
其中一种解决方法是使用其他用户运行代理,并且不为该用户配置任何凭据。
答案 2 :(得分:0)
我认为同样的问题。 我们的系统有一个/root/.aws/credentials,CodeDeploy 完全使用它,我发现无法告诉它不这样做。 特别是没有文件...
最后,我们在最后重写了所有内容,以确保我们不再需要凭据文件。 从那一刻开始,CodeDeploy使用了实例配置文件,它工作正常。
答案 3 :(得分:0)
我删除了 /home/ubuntu/.aws 并重新启动了 codedeploy 代理服务,它对我有用:-)