我正在尝试使用带有iam角色的aws cookbook,但是当我尝试在aws_ebs_volume块中不包含aws_access_key和aws_secret_access_key时,主厨继续显示错误:RightAws :: AwsError:需要AWS访问密钥才能在EC2上运行
我假设当cookbook意味着省略资源参数aws_secret_access_key和aws_access_key时,我只是从块中删除它们。
aws_ebs_volume "userhome_volume" do
provider "aws_ebs_volume"
volume_id node['myusers']['usershome_ebs_volid']
availability_zone node['myusers']['usershome_ebs_zone']
device node['myusers']['usershome_ebs_dev_id']
action :attach
end
有没有人拥有带有iam角色的aws cookbook的例子?
更新
如果我已经在实例上附加了正确的iam角色,是否还需要定义aws creeds数据包?
当我使用iam角色和aws cookbook时,was_ebs_volume块看起来像什么?
答案 0 :(得分:1)
为了管理AWS组件,您需要以两种方式之一为节点提供身份验证凭据:
配置实例时,应在"Step 3. Configure Instance Details"
中为其分配适当的角色(使用控制台时)。 EC2的“IAM角色”设置会自动为您部署和轮换AWS凭证,从而无需将AWS访问密钥存储在您的应用程序中。在以这种方式配置的实例上,您不再需要在aws_ebs_volume块中包含aws_access_key
和aws_secret_access_key
。
以下是有关如何使用IAM和Amazon EC2 CLI启动具有IAM角色的实例的代码示例:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html
以下是一些代码示例:
http://www.getchef.com/blog/2013/12/19/automating-iam-credentials-with-ruby-and-chef/
在实例配置期间分配相应的IAM角色时,您的代码应该不使用aws_access_ke
y和aws_secret_access_key
。
以下是步骤:
设置S3,Chef服务器和IAM角色,如下所述: https://securosis.com/blog/using-amazon-iam-roles-to-distribute-security-credentials-for-chef
执行“knife client ./”创建client.rb和validation.pem,然后将它们从Chef服务器传输到您的存储桶中。
使用您为Chef和S3存储桶设置的相应IAM角色启动新实例。 在User Data字段或命令行参数中指定自定义的cloud-init脚本,如下所述:
https://securosis.com/blog/using-cloud-init-and-s3cmd-to-automatically-download-chef-credentials
您还可以将脚本作为文件托管,并使用include从中央存储库加载。
执行chef-client。