Chef未初始化的恒定Chef :: Recipe :: AWS

时间:2015-02-13 15:26:01

标签: ruby amazon-web-services chef aws-sdk

我的食谱没有编译错误未初始化的常量Chef :: Recipe :: AWS。 chef_gem aws-sdk安装正常,但在 AWS时仍然无法编译。调用config(access_key_id:' key',secret_access_key:' pass')

chef_gem "aws-sdk"

AWS.config(access_key_id: key, secret_access_key: pass)

rds = AWS::RDS.new

2 个答案:

答案 0 :(得分:2)

根据aws-sdk-ruby here的文档和代码,类名是Aws而不是AWS

但是你的主要问题是你没有包含gem安装的lib。

在尝试调用它之前添加require 'aws-sdk'

为了避免被名称与Chef::Recipe命名空间冲突所困,请将lib称为顶级lib,如::Aws.config(...)

从个人研究中编辑: AWS命名空间来自sdk v1,如果您真的希望使用此命名空间而不是v2,则必须将配方更改为:

chef_gem "aws-sdk-v1"

require 'aws-sdk-v1'
AWS.config(access_key_id: key, secret_access_key: pass)

rds = AWS::RDS.new

答案 1 :(得分:0)

您需要向aws-sdk gem提供您的aws凭据。正如您可以在gem文档中看到的那样:

  

基本配置

     

您需要提供AWS安全凭据并选择默认值   区域。

     

AWS.config(access_key_id:'...',secret_access_key:'...',区域:   '美西-2')

     

您也可以通过ENV指定这些值:

     

导出AWS_ACCESS_KEY_ID ='...'导出AWS_SECRET_ACCESS_KEY ='...'   export AWS_REGION ='us-west-2'

使用您的凭据修改'key''pass',然后添加您要使用的aws区域。