Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 厨师脚本、执行资源和执行顺序_Amazon S3_Chef Infra_Execute_Chef Recipe - Fatal编程技术网

Amazon s3 厨师脚本、执行资源和执行顺序

Amazon s3 厨师脚本、执行资源和执行顺序,amazon-s3,chef-infra,execute,chef-recipe,Amazon S3,Chef Infra,Execute,Chef Recipe,我有以下厨师食谱: Chef::Log.info "Downloading files" execute "aws s3 sync s3://mybucket/prod/ . --delete --region=ap-southeast-2" do user 'vagrant' environment 'HOME' => "/home/vagrant" cwd '/var/www/public/lib/files' end Chef::Log.info "Finished do

我有以下厨师食谱:

Chef::Log.info "Downloading files"
execute "aws s3 sync s3://mybucket/prod/ . --delete --region=ap-southeast-2" do
  user 'vagrant'
  environment 'HOME' => "/home/vagrant"
  cwd '/var/www/public/lib/files'
end
Chef::Log.info "Finished downloading files"
问题是“已完成下载文件”在s3同步命令完成之前被输出。我可以说,因为脚本需要很长时间才能完成,而且我可以看到文件正在逐步创建


我的理解是,厨师食谱是按顺序执行的,但执行是否也会等待它创建的shell进程返回?或者我还遗漏了什么?

厨师分两步走。首先,它将所有资源收集在一起,然后执行它们。在您的例子中,
execute
资源实际上在第二阶段运行,而log语句在第一阶段运行。如果您将日志语句更改为资源,它将按照您的预期运行:

log "Finished downloading files" do
  level :info
end

厨师分两步走。首先,它将所有资源收集在一起,然后执行它们。在您的例子中,
execute
资源实际上在第二阶段运行,而log语句在第一阶段运行。如果您将日志语句更改为资源,它将按照您的预期运行:

log "Finished downloading files" do
  level :info
end

厨师分两步走。首先,它将所有资源收集在一起,然后执行它们。在您的例子中,
execute
资源实际上在第二阶段运行,而log语句在第一阶段运行。如果您将日志语句更改为资源,它将按照您的预期运行:

log "Finished downloading files" do
  level :info
end

厨师分两步走。首先,它将所有资源收集在一起,然后执行它们。在您的例子中,
execute
资源实际上在第二阶段运行,而log语句在第一阶段运行。如果您将日志语句更改为资源,它将按照您的预期运行:

log "Finished downloading files" do
  level :info
end