【问题标题】:AWS s3 sync multiple folders to different destinationsAWS s3 将多个文件夹同步到不同的目的地
【发布时间】:2020-09-10 08:28:35
【问题描述】:

我正在尝试将两个不同的文件夹同步到同一个 s3 存储桶中的不同目标,但我在 Jenkins 中不断收到此错误:

用户提供的路径 folder2/ 不存在。 构建步骤“执行 shell”将构建标记为失败

奇怪的是folder2 文件夹存在。我的 Jenkins shell 命令如下所示:

#!/usr/bin/env bash
set -ex

# set some env vars

docker build --build-arg APP_ENV --build-arg DEPLOY_ROOT=${ACTUAL_COMMIT_HASH} -t docker-thing .
docker run --rm \
--env S3_BUCKET \
--env AWS_ACCESS_KEY_ID \
--env AWS_SECRET_ACCESS_KEY \
--env AWS_DEFAULT_REGION \
docker-thing \

# sync folder 1
aws s3 sync folder1/ s3://${S3_BUCKET}/

# sync folder 2
aws s3 sync folder2/ s3://${S3_BUCKET}/${ACTUAL_COMMIT_HASH}/

文件夹 1 会同步没有问题,但随后第二个文件夹不会说它不存在,而实际上它确实存在。

如果我要切换同步这些的顺序,我会得到相同的结果。文件夹 2 会同步,而文件夹 1 不会。

我错过了什么吗?

【问题讨论】:

  • 反斜杠看起来像是在 docker 内部运行第一个命令,在 docker 外部运行第二个命令。

标签: amazon-web-services docker jenkins amazon-s3


【解决方案1】:

反斜杠应该从这一行中删除:

docker-thing \

【讨论】:

    【解决方案2】:

    我的解决方案是运行 docker 两次。

    docker run --rm \
    --env S3_BUCKET \
    --env AWS_ACCESS_KEY_ID \
    --env AWS_SECRET_ACCESS_KEY \
    --env AWS_DEFAULT_REGION \
    docker-thing \
    
    # sync folder 1
    aws s3 sync folder1/ s3://${S3_BUCKET}/
    
    docker run --rm \
    --env S3_BUCKET \
    --env AWS_ACCESS_KEY_ID \
    --env AWS_SECRET_ACCESS_KEY \
    --env AWS_DEFAULT_REGION \
    docker-thing \
    
    # sync folder 2
    aws s3 sync folder2/ s3://${S3_BUCKET}/${ACTUAL_COMMIT_HASH}/
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-01
      • 1970-01-01
      • 2019-07-21
      • 2023-03-15
      • 2015-03-12
      相关资源
      最近更新 更多