好的这是一个场景。
我在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'为什么会继续失败。
有什么想法吗?
答案 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": [
"*"
]
}
这样做让我承担了角色并构建了我需要的东西。