我的食谱没有编译错误未初始化的常量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
答案 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区域。