2

我正在尝试将 aws 食谱与 iam 角色一起使用,但是当我尝试在 aws_ebs_volume 块中不包含 aws_access_key 和 aws_secret_access_key 时,厨师一直显示错误:RightAws::AwsError: AWS 访问密钥需要在 EC2 上运行。

我假设当食谱意味着省略资源参数 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 食谱时,was_ebs_volume 块是什么样的?

4

1 回答 1

1

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

  1. 将凭据参数显式传递给资源
  2. 或让资源从分配给实例的 IAM 角色中获取凭证

配置实例时,应为其分配适当的角色"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_key 和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 角色启动一个新实例。在用户数据字段或命令行参数中指定您的自定义 cloud-init 脚本,如下所述:

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

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

  4. 执行厨师-客户。

于 2014-05-08T13:57:38.770 回答