如何从已停止的 Fargate 任务下载一个或多个文件?
How do I download one or more files from a stopped Fargate task?
我有一个运行一些测试用例的 ECS 任务。我在 Fargate 中有 运行。耶!
现在我想从容器中下载测试结果文件。我手边有任务和容器 ID。我可以通过
找到退出代码
aws ecs describe-tasks --cluster Fargate --tasks <my-task-id>
如何下载生成的日志 and/or 文件?
看起来,截至目前,从我的服务器获取测试结果的唯一方法是在容器关闭之前将结果发送到 S3。
从 this thread 开始,无法将卷/EFS 装载到 Fargate 容器上。
这是我的 bash 脚本,用于 运行 我的测试(在 build.sh 中),然后将结果上传到 S3:
#!/bin/bash
echo Running tests...
pushd ~circleci/project/
export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY
export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_KEY
commandToRun="~/project/.circleci/build_scripts/build.sh";
# Run the command
eval $commandToRun 2>&1 | tee /tmp/build.log
# Get the exit code
exitCode=$?
aws s3 cp /tmp/build-$FEATURE.log s3://$CICD_BUCKET/build.log \
--storage-class REDUCED_REDUNDANCY \
--region us-east-1
exit ${exitCode}
当然,您必须传入 AWS_ACCESS_KEY、AWS_SECRET_KEY 和 CICD_BUCKET 环境变量。您选择的存储桶名称需要预先创建,但其下的任何目录结构都不需要预先创建。
您可能想看看针对此用例使用 CodeBuild,它可以自动将工件复制到 S3。
使用简单的 bash 脚本和 AWS CLI 编排以下内容实际上非常容易:
- 幂等Create/Update CodeBuild 项目(使用您可以在源存储库中定义的简单 CloudFormation 模板)
- 运行 一个代码构建作业,它执行源存储库的给定修订(再次使用源存储库中定义的 self-defining buildspec.yml 规范)
- 为您的 CodeBuild 作业和流式日志输出附加到 CloudWatch logs 日志组
- 最终检测作业何时成功完成,然后使用 S3 在本地下载任何工件
我使用这种方法 运行 在 CodeBuild 中构建,Bamboo 作为总体持续交付系统。
我有一个运行一些测试用例的 ECS 任务。我在 Fargate 中有 运行。耶!
现在我想从容器中下载测试结果文件。我手边有任务和容器 ID。我可以通过
找到退出代码aws ecs describe-tasks --cluster Fargate --tasks <my-task-id>
如何下载生成的日志 and/or 文件?
看起来,截至目前,从我的服务器获取测试结果的唯一方法是在容器关闭之前将结果发送到 S3。
从 this thread 开始,无法将卷/EFS 装载到 Fargate 容器上。
这是我的 bash 脚本,用于 运行 我的测试(在 build.sh 中),然后将结果上传到 S3:
#!/bin/bash
echo Running tests...
pushd ~circleci/project/
export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY
export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_KEY
commandToRun="~/project/.circleci/build_scripts/build.sh";
# Run the command
eval $commandToRun 2>&1 | tee /tmp/build.log
# Get the exit code
exitCode=$?
aws s3 cp /tmp/build-$FEATURE.log s3://$CICD_BUCKET/build.log \
--storage-class REDUCED_REDUNDANCY \
--region us-east-1
exit ${exitCode}
当然,您必须传入 AWS_ACCESS_KEY、AWS_SECRET_KEY 和 CICD_BUCKET 环境变量。您选择的存储桶名称需要预先创建,但其下的任何目录结构都不需要预先创建。
您可能想看看针对此用例使用 CodeBuild,它可以自动将工件复制到 S3。
使用简单的 bash 脚本和 AWS CLI 编排以下内容实际上非常容易:
- 幂等Create/Update CodeBuild 项目(使用您可以在源存储库中定义的简单 CloudFormation 模板)
- 运行 一个代码构建作业,它执行源存储库的给定修订(再次使用源存储库中定义的 self-defining buildspec.yml 规范)
- 为您的 CodeBuild 作业和流式日志输出附加到 CloudWatch logs 日志组
- 最终检测作业何时成功完成,然后使用 S3 在本地下载任何工件
我使用这种方法 运行 在 CodeBuild 中构建,Bamboo 作为总体持续交付系统。