繁体   English   中英

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

[英]Chef uninitialized constant Chef::Recipe::AWS

我的菜谱未编译,并抛出错误未初始化的常量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-ruby的文档以及代码,类名是Aws而不是AWS

但是这里的主要问题是您不包括gem所安装的lib。

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

为了避免与Chef::Recipe名称空间发生名称冲突而被咬住,请将lib称为顶级::Aws.config(...) 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

您需要向aws-sdk gem提供您的aws凭证。 您可以在gem文档中阅读:

基本配置

您需要提供您的AWS安全凭证并选择一个默认区域。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM