将文件从 Elastic beanstalk 复制到本地机器

Posted

技术标签:

【中文标题】将文件从 Elastic beanstalk 复制到本地机器【英文标题】:Copy file from Elastic beanstalk to local machine 【发布时间】:2017-03-11 12:24:25 【问题描述】:

我已使用以下方式连接到 Elastic Beanstalk:

eb ssh XXXXXX --profile=xx

现在我想复制一个文件到我的本地机器,我该怎么做?

【问题讨论】:

【参考方案1】:

要确定scp 使用的 IP 地址和密钥文件,您可以运行 eb ssh my-env-name 并注意输出的前几行:

  INFO: SSH port 22 open.
  INFO: Running ssh -i /Users/MyHome/.ssh/eb.pem ec2-user@<eb-env-ip-address>

然后,我们可以将这些详细信息用于实际的scp 命令(将ssh 替换为scp 并添加文件路径):

  scp -i /Users/MyHome/.ssh/eb.pem ec2-user@<eb-env-ip-address>:/path/to/file .

【讨论】:

【参考方案2】:

您可以使用常规的 scp 命令。

scp -i ~/.ssh/beanstalk-env-key.pem ec2-user@beanstalk.host.ip:/path/to/file.txt ./file.txt

【讨论】:

请记住,您必须在弹性 beanstalk 安全组中打开端口 22,如果它尚未打开的话。 eb ssh 命令会自动为您执行此操作,但从命令行运行 scp 不会。 一个简单的方法可能是通过第二个控制台将eb ssh 进入机器。 使用-r 开关递归复制子文件夹。 scp -r -i ~/.ssh/beanstalk-env-key.pem ec2-user@beanstalk.host.ip:/path/to/file.txt ./file.txt【参考方案3】:

我认为pscl's answer 是最好的。它非常简单,只需 2 个步骤。

但是,如果您想编写脚本并且可能只有一个步骤,您可以在 Michal's answer here 上构建。

scp -i ~/.ssh/yourkey.pem ~/localfile ec2-user@`aws ec2 describe-instances --filters "Name=tag:elasticbeanstalk:environment-name,Values=ENVIRONMENT_NAME" --query 'Reservations[].Instances[].PublicIpAddress' --output text`:~/

你可以很容易地写一个别名。下一步将研究如何根据当前分支动态交换环境名称。

【讨论】:

pscl 的回答并没有告诉我们如何获取实际文件。它只是告诉我们如何确定要使用的 IP 地址和密钥文件。 是的,我的答案将与下面 Alex_hha 答案中的 scp 命令结合使用。但是,如果您需要定期这样做,克里斯蒂安的回答很聪明。 我编辑了@pscl 的答案以包含scp 部分。也许编辑会被接受。 最好添加新答案,而不是更改其他人的答案。

以上是关于将文件从 Elastic beanstalk 复制到本地机器的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Postgres 数据库从一个 Elastic Beanstalk 环境复制到另一个环境?我正在使用 Rails 5

将 AWS Elastic Beanstalk 开发实例复制到现有生产实例

Elastic Beanstalk:容器命令不复制文件

AWS Elastic Beanstalk 部署后脚本

从 .ebextensions 配置文件访问 Elastic Beanstalk 环境属性

如何将特定日志文件从多容器 Docker Elastic Beanstalk 流式传输到 CloudWatch?