Amazon web services 如何在Bitbucket管道中执行步骤之前添加等待时间

Amazon web services 如何在Bitbucket管道中执行步骤之前添加等待时间,amazon-web-services,bitbucket,amazon-cloudformation,devops,bitbucket-pipelines,Amazon Web Services,Bitbucket,Amazon Cloudformation,Devops,Bitbucket Pipelines,我有一个Bitbucket管道,它使用cloudformation创建AWS资源,并将网站部署到其中。但是部署失败,即使cloudformation正确地创建了堆栈。我认为问题在于,当部署发生时,存储桶的创建可能尚未完成 我有一个Hugo网站,我创建了一个bitbucket管道来将其部署到服务器。它所做的是使用cloudformation创建S3 bucket来托管网站,然后将Hugo网站上传到该网站。当我在终端中手动运行管道中的步骤时,每一步之间都有一个延迟,这样就成功了。但当它发生在Bitb

我有一个Bitbucket管道,它使用cloudformation创建AWS资源,并将网站部署到其中。但是部署失败,即使cloudformation正确地创建了堆栈。我认为问题在于,当部署发生时,存储桶的创建可能尚未完成

我有一个Hugo网站,我创建了一个bitbucket管道来将其部署到服务器。它所做的是使用cloudformation创建S3 bucket来托管网站,然后将Hugo网站上传到该网站。当我在终端中手动运行管道中的步骤时,每一步之间都有一个延迟,这样就成功了。但当它发生在Bitbucket管道上时,它给出了一个错误,表示我正在尝试上载内容的S3 bucket不可用。当我在AWS登记时,水桶实际上就在那里。这意味着Cloudformation工作正常。但当文件开始复制时,存储桶可能无法上载文件。这是我的假设。有没有解决这个问题的办法。在本地执行时,我可以在cloudformation创建和文件复制这两个命令之间等待。但是如何在Bitbucket管道环境中处理它呢。下面是我的管道代码

pipelines:
  pull-requests:
    '**':
      - step:
          script:
            - aws cloudformation create-stack --stack-name demo-web --template-body file://cloudformation.json --parameters ParameterKey=S3BucketName,ParameterValue=demo-web
            - hugo
            - aws s3 cp public/ s3://demo-web/ --recursive


如何以正确的方式处理此场景。对于这种情况是否有解决办法。或者我所识别的问题不是实际问题。

首先,要在bitbucket管道中等待,您应该能够使用
睡眠x
,其中x是您想要睡眠的秒数


另一个注意事项-请记住,在随后的第一次运行之后,下次使用
创建堆栈时,部署可能会失败,如果堆栈已经存在,则部署将失败…

使用AWS CloudFormation API,这是最佳做法

有一个
wait
命令,就像有一个
create stack
命令一样,wait命令及其选项允许AWS停止处理,直到堆栈处于
COMPLETE
状态,然后再继续

备选案文1: 将堆栈创建命令放入shell脚本中,作为shell脚本的第二步,调用
wait stack create complete
命令

然后在管道中调用该shell脚本,而不是直接命令

备选案文2: 在bitbucket管道中,在create命令之后,在upload/hugo命令之前调用aws cloudformation wait complete命令

我更喜欢选项一,因为它允许您按照自己的意愿操纵和跟踪创建

见文件:

使用CloudFormation APU非常好,因为您不必猜测等待多长时间,它更能保证可用