Jenkins Packer AWS凭证验证

时间:2016-04-01 15:50:27

标签: amazon-web-services jenkins packer

好的这是一个场景。

我在AWS中有一个Jenkins Slave,我附加了一个允许它创建EC2资源的角色。我通过Packer github问题列表找到了这个角色。这是role

我的Packer项目试图在奴隶上建立。构建开始时,它失败了:

  

[1; 31mBuild'amazon-ebs'错误:NoCredentialProviders:链中没有有效的提供商。已过时。       有关详细消息,请参阅aws.Config.CredentialsChainVerboseErrors [0m

     

==>某些版本未成功完成并出现错误:    - > amazon-ebs:NoCredentialProviders:链中没有有效的提供商。已过时。       有关详细消息,请参阅aws.Config.CredentialsChainVerboseErrors

如果我运行aws configure并输入真正的凭据,这显然有效,但我试图避免这种情况。我已经验证该实例具有附加的适当角色。我还验证了我可以通过命令行正确切换到此角色。

我似乎缺少的是与实例和包装器相关联的角色,使用以下命令指定角色:'iam_instance_profile'为什么会继续失败。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

因此,在Castaglia的大量帮助下,我能够让它发挥作用。我创建的角色似乎有问题。我删除了它,并使用相同的名称和相同的策略重新创建它。之后它运作良好。

要注意,我认为Packer说明有错误。他们列出了以下角色所需的全部内容:

{
"Statement": [{
  "Effect": "Allow",
  "Action" : [
    "ec2:AttachVolume",
    "ec2:CreateVolume",
    "ec2:DeleteVolume",
    "ec2:CreateKeypair",
    "ec2:DeleteKeypair",
    "ec2:DescribeSubnets",
    "ec2:CreateSecurityGroup",
    "ec2:DeleteSecurityGroup",
    "ec2:AuthorizeSecurityGroupIngress",
    "ec2:CreateImage",
    "ec2:CopyImage",
    "ec2:RunInstances",
    "ec2:TerminateInstances",
    "ec2:StopInstances",
    "ec2:DescribeVolumes",
    "ec2:DetachVolume",
    "ec2:DescribeInstances",
    "ec2:CreateSnapshot",
    "ec2:DeleteSnapshot",
    "ec2:DescribeSnapshots",
    "ec2:DescribeImages",
    "ec2:RegisterImage",
    "ec2:CreateTags",
    "ec2:ModifyImageAttribute"
  ],
  "Resource" : "*"
}]
}

但我相信你还需要一件:

{
    "Sid": "PackerIAMPassRole",
    "Effect": "Allow",
    "Action": "iam:PassRole",
    "Resource": [
        "*"
    ]
}

这样做让我承担了角色并构建了我需要的东西。