错误:Chef :: Resource :: RemoteFile的未定义方法“ aws_access_key”

时间:2018-06-20 11:22:23

标签: chef chef-recipe

我想在以下配方中使用AWS S3存储桶作为远程文件,因此 每当有人更改 /tmp/fileA.txt 时。 Chef客户端将运行以下代码,并使用AWS S3存储桶中的原始 file_Source.txt 替换 fileA

remote_file '/tmp/fileA.txt' do
    source 'https://awsS3bucketname/file_Source.txt'
    aws_access_key "mykey"
    aws_secret_key  "mykey"
    action :create
end

但是在运行上述代码时,我得到了错误:未定义的方法“ aws_access_key”

 [2018-06-20T07:04:25-04:00] ERROR: Running exception handlers
   Running handlers complete
   [2018-06-20T07:04:25-04:00] ERROR: Exception handlers complete
   Chef Client failed. 0 resources updated in 04 seconds
   [2018-06-20T07:04:25-04:00] FATAL: Stacktrace dumped to /tmp/kitchen/cache/chef-stacktrace.out
   [2018-06-20T07:04:25-04:00] FATAL: Please provide the contents of the stacktrace.out file if you file a bug report
   [2018-06-20T07:04:25-04:00] ERROR: undefined method `aws_access_key' for Chef::Resource::RemoteFile
   [2018-06-20T07:04:25-04:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)

1 个答案:

答案 0 :(得分:0)

remote_file不包括从S3获取文件的支持。您应该查看aws食谱,其中包含s3文件资源:

  

s3_file可用于从需要AWS的s3下载文件   授权。这是核心厨师remote_file的包装   资源,并支持与remote_file相同的资源属性。看到   remote_file Chef Docs获取可用属性的完整列表。

此外,它还会添加属性以处理对S3的授权:

  

属性:

     

aws_secret_access_keyaws_access_key和可选的   aws_session_token-必填,除非将IAM角色用于   身份验证。   region-包含文件的AWS区域。默认:   在AWS或us-east-1中运行时的节点当前区域(如果   节点不在AWS中。

示例:

aws_s3_file '/tmp/fileA.txt' do
    bucket 'yourbucket'
    remote_path 'file_Source.txt'
    aws_access_key 'mykey'
    aws_secret_access_key 'mykey'
    region 'us-east-1'
    action :create
end

编辑:

您可以将其设置为食谱中metadata.rb文件内的依赖项,如下所示:

depends 'aws'

这将使您可以访问本食谱中的自定义资源。