Dav*_*tti 13 github amazon-ec2 amazon-web-services amazon-iam aws-code-deploy
我正在尝试使用AWS CodeDeploy将GitHub项目部署到EC2实例.在关注了2个视频教程之后,我还是得到了以下错误:
2017-02-01 12:20:08 INFO [codedeploy-agent(1379)]: master 1379: Spawned child 1/1
2017-02-01 12:20:09 INFO [codedeploy-agent(1383)]: On Premises config file does not exist or not readable
2017-02-01 12:20:09 INFO [codedeploy-agent(1383)]: InstanceAgent::Plugins::CodeDeployPlugin::CommandExecutor: Archives to retain is: 5}
2017-02-01 12:20:09 INFO [codedeploy-agent(1383)]: Version file found in /opt/codedeploy-agent/.version.
2017-02-01 12:20:09 ERROR [codedeploy-agent(1383)]: InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Missing credentials - please check if this instance was started with an IAM instance profile
Run Code Online (Sandbox Code Playgroud)
我有两个IAM:
策略名称:AmazonEC2RoleforAWSCodeDeploy
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:ListObjects"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
策略名称:AutoScalingNotificationAccessRole
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Resource": "*",
"Action": [
"sqs:SendMessage",
"sqs:GetQueueUrl",
"sns:Publish"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
信任关系
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"codedeploy.amazonaws.com",
"ec2.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
Run Code Online (Sandbox Code Playgroud)
策略名称:AWSCodeDeployRole
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"autoscaling:CompleteLifecycleAction",
"autoscaling:DeleteLifecycleHook",
"autoscaling:DescribeAutoScalingGroups",
"autoscaling:DescribeLifecycleHooks",
"autoscaling:PutLifecycleHook",
"autoscaling:RecordLifecycleActionHeartbeat",
"autoscaling:CreateAutoScalingGroup",
"autoscaling:UpdateAutoScalingGroup",
"autoscaling:EnableMetricsCollection",
"autoscaling:DescribeAutoScalingGroups",
"autoscaling:DescribePolicies",
"autoscaling:DescribeScheduledActions",
"autoscaling:DescribeNotificationConfigurations",
"autoscaling:DescribeLifecycleHooks",
"autoscaling:SuspendProcesses",
"autoscaling:ResumeProcesses",
"autoscaling:AttachLoadBalancers",
"autoscaling:PutScalingPolicy",
"autoscaling:PutScheduledUpdateGroupAction",
"autoscaling:PutNotificationConfiguration",
"autoscaling:PutLifecycleHook",
"autoscaling:DescribeScalingActivities",
"autoscaling:DeleteAutoScalingGroup",
"ec2:DescribeInstances",
"ec2:DescribeInstanceStatus",
"ec2:TerminateInstances",
"tag:GetTags",
"tag:GetResources",
"sns:Publish",
"cloudwatch:DescribeAlarms",
"elasticloadbalancing:DescribeLoadBalancers",
"elasticloadbalancing:DescribeInstanceHealth",
"elasticloadbalancing:RegisterInstancesWithLoadBalancer",
"elasticloadbalancing:DeregisterInstancesFromLoadBalancer"
],
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
信任关系
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"codedeploy.amazonaws.com",
"ec2.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我根据Debian创建自己的图像,所以我已经安装了NodeJS.当我旋转新实例时,我还在User data文本区域粘贴以下代码以确保安装了CodeDeploy.
#!/bin/bash -x
REGION=$(curl 169.254.169.254/latest/meta-data/placement/availability-zone/ | sed 's/[a-z]$//') &&
sudo apt-get update -y &&
sudo apt-get install -y python-pip &&
sudo apt-get install -y ruby &&
sudo apt-get install -y wget &&
cd /home/admin &&
wget https://aws-codedeploy-$REGION.s3.amazonaws.com/latest/install &&
chmod +x ./install &&
sudo ./install auto &&
sudo apt-get remove -y wget &&
sudo service codedeploy-agent start
Run Code Online (Sandbox Code Playgroud)
如果我登录我创建的EC2实例,并执行以下命令:
echo $(curl http://169.254.169.254/latest/meta-data/iam/security-credentials/)
Run Code Online (Sandbox Code Playgroud)
我收到以下回复 CodeDeployInstanceRole
当我然后执行
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/CodeDeployInstanceRole
Run Code Online (Sandbox Code Playgroud)
我收到以下回复
{
"Code" : "Success",
"LastUpdated" : "2017-02-01T12:38:07Z",
"Type" : "AWS-HMAC",
"AccessKeyId" : "THE_KEY",
"SecretAccessKey" : "SECRET",
"Token" : "TOKEN",
"Expiration" : "2017-02-01T19:08:43Z"
}
Run Code Online (Sandbox Code Playgroud)
在GitHub上,我看到CodeDeploy永远不会访问我的repo,即使我使用GitHub选择部署,我设置了正确的repo名称和提交ID.
我错过了什么?
MMa*_*ian 13
我遇到了同样的问题.简要说明导致问题的原因:
结果:我收到错误: Missing credentials - please check if this instance was started with an IAM instance profile
解决方案:重新启动codedeploy代理.使用:
sudo service codedeploy-agent restart
Run Code Online (Sandbox Code Playgroud)
错误现在应该消失了!
我收到“请检查此实例是否是使用 IAM 实例配置文件启动的”。要检查您的实例是否在没有 IAM 配置文件的情况下启动,请转到 AWS 控制台 -> 您的实例 -> 检查描述选项卡的“IAM 角色”值,如果它为空,则您已启动没有 IAM 的实例,以下是解决问题的方法:
转到 IAM 控制台 -> 角色 -> 创建新角色
选择 AWS 服务 -> EC2 -> 下一步:权限(不要更改任何内容) -> 下一步:标签 -> 下一步:审查 -> 提供名称并单击创建角色。
转到 AWS EC2 控制台 -> 选择实例 -> 操作 -> 实例设置 -> 附加/替换 IAM 角色 -> 选择您刚刚创建的 IAM 角色
重启 codedeploy 代理: sudo service codedeploy-agent restart
尝试再次部署,它应该可以工作
| 归档时间: |
|
| 查看次数: |
4071 次 |
| 最近记录: |