将文件从 ECS 容器下载到本地计算机的最简单方法是什么?

问题描述 投票:0回答:2

我需要进行一些堆转储,如果有一种简单(快速)的方法来使文件尽可能无缝,那就太好了。

目前的做法是:

  1. 创建文件
  2. 可选:如果尚不知道,请将 SSH 密钥上传到 EC2 实例(取决于所使用的安全模型)
  3. 打开 SSH 会话(不使用 ASM,因为它有一些 OsX 缺陷)
  4. 将 docker 容器文件复制到 EC2 实例
  5. 将文件SCP到本地机器
  6. 清理

对于获取单个文件来说,这似乎非常复杂。有更直接的方法吗?由于这是一个按需用例,我可以使用手动 AWS 控制台方式或使用工具来更方便地完成此操作。谢谢

amazon-web-services amazon-ec2 download amazon-ecs scp
2个回答
3
投票

如果您想要最简单的方法,那么您只需执行

cat /some/file/here
命令而不是 bash 并将输出发送到本地计算机上的文件。然后从本地文件的开头删除初始 aws cli 消息,例如:

The Session Manager plugin was installed successfully. Use the AWS CLI to start a session.


Starting session with SessionId: ecs-execute-command-<some session id>
This session is encrypted using AWS KMS.

如果是二进制文件,则将其另存为txt文件,删除上面提到的初始cli输出,并使用二进制扩展名重命名。示例:

aws ecs execute-command --region <your region> --cluster <your cluster> --task <your task ID> --container <your container> --command "cat /tmp/reportBatch.zip" --interactive >> ~/reportBatch.txt

对于此方法,您只需要访问您的ECS实例并允许在其上运行命令即可。


0
投票

你可以尝试这个解决方案(它对我有用)

  1. 步骤1

    • 使用此命令进入容器

      aws ecs execute-command --region <your region> --cluster <your cluster> --task <your task ID> --container <your container> --command "/bin/sh" --interactive

  2. 第2步

    • 为您的zip文件创建base64并将其保存到文件中,就像那样

      base64 file.zip >> out.txt

    • 然后将文件内容复制到剪贴板中

  3. 第3步

希望它对您有用,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.