opscode aws cookbook iam角色

时间:2014-05-08 13:10:34

标签: amazon-web-services chef amazon-iam cookbook

我正在尝试使用带有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的例子?

更新

  1. 如果我已经在实例上附加了正确的iam角色,是否还需要定义aws creeds数据包?

  2. 当我使用iam角色和aws cookbook时,was_ebs_volume块看起来像什么?

1 个答案:

答案 0 :(得分:1)

为了管理AWS组件,您需要以两种方式之一为节点提供身份验证凭据:

  1. 明确将凭证参数传递给资源
  2. 或让资源从分配给实例的IAM角色中获取凭据
  3. 配置实例时,应在"Step 3. Configure Instance Details"中为其分配适当的角色(使用控制台时)。 EC2的“IAM角色”设置会自动为您部署和轮换AWS凭证,从而无需将AWS访问密钥存储在您的应用程序中。在以这种方式配置的实例上,您不再需要在aws_ebs_volume块中包含aws_access_keyaws_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

    以下是步骤:

    1. 设置S3,Chef服务器和IAM角色,如下所述: https://securosis.com/blog/using-amazon-iam-roles-to-distribute-security-credentials-for-chef

    2. 执行“knife client ./”创建client.rb和validation.pem,然后将它们从Chef服务器传输到您的存储桶中。

    3. 使用您为Chef和S3存储桶设置的相应IAM角色启动新实例。 在User Data字段或命令行参数中指定自定义的cloud-init脚本,如下所述:

      https://securosis.com/blog/using-cloud-init-and-s3cmd-to-automatically-download-chef-credentials

      您还可以将脚本作为文件托管,并使用include从中央存储库加载。

    4. 执行chef-client。