我想在以下配方中使用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)
答案 0 :(得分:0)
remote_file
不包括从S3获取文件的支持。您应该查看aws
食谱,其中包含s3文件资源:
s3_file
可用于从需要AWS的s3下载文件 授权。这是核心厨师remote_file
的包装 资源,并支持与remote_file
相同的资源属性。看到remote_file
Chef Docs获取可用属性的完整列表。
此外,它还会添加属性以处理对S3的授权:
属性:
aws_secret_access_key
,aws_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'
这将使您可以访问本食谱中的自定义资源。