如何从已停止的Fargate任务下载一个或多个文件?

时间:2018-02-04 17:48:50

标签: aws-fargate

我有一个运行一些测试用例的ECS任务。我让它在Fargate运行。耶!

现在我想从容器中下载测试结果文件。我有方便的任务和容器ID。我可以用

找到退出代码
aws ecs describe-tasks --cluster Fargate --tasks <my-task-id>

如何下​​载生成的日志和/或文件?

2 个答案:

答案 0 :(得分:3)

现在看来,从我的服务器获取测试结果的唯一方法是在容器关闭之前将结果发送到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环境变量。您选择的存储桶名称需要预先创建,但不需要事先创建其下的任何目录结构。

答案 1 :(得分:0)

您可能希望在此用例中使用CodeBuild,它可以自动将工件复制到S3。

使用简单的bash脚本和AWS CLI实际上很容易编排以下内容:

  • 故意创建/更新CodeBuild项目(使用您可以在源代码库中定义的简单CloudFormation模板)
  • 运行一个Codebuild作业,该作业执行源存储库的给定修订(再次使用源存储库中定义的自定义buildspec.yml规范)
  • 附加到您的CodeBuild作业和流日志输出的CloudWatch日志日志组
  • 最后检测作业何时成功完成,然后使用S3
  • 在本地下载任何工件

我使用这种方法在CodeBuild中运行构建,使用Bamboo作为总体持续交付系统。