Chef 未初始化常量 Chef::Recipe::AWS

Chef uninitialized constant Chef::Recipe::AWS

My cookbook 未编译并抛出错误 uninitialized constant 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

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

Basic Configuration

You need to provide your AWS security credentials and choose a default region.

AWS.config(access_key_id: '...', secret_access_key: '...', region: 'us-west-2')

You can also specify these values via ENV:

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

使用您的凭据编辑 'key''pass',并添加您要使用的 aws 区域。

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

但是你的主要问题是你没有包括 gem.

安装的库

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

为了避免被与 Chef::Recipe 命名空间的名称冲突所困扰,将库作为​​顶级库调用,例如 ::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