【问题标题】:Can The AWS CLI Copy From S3 To EC2?AWS CLI 可以从 S3 复制到 EC2 吗?
【发布时间】:2019-01-02 19:13:48
【问题描述】:

我熟悉运行 AWS CLI 命令以从文件夹复制到 S3 或从一个 S3 存储桶复制到另一个 S3 存储桶:

aws s3 cp ./someFile.txt s3://bucket/someFile.txt

aws s3 cp s3://bucketSource/someFile.txt s3://bucketDestination/someFile.txt

但是当您不在 EC2-Instance 上时,是否可以将文件从 S3 复制到 EC2-Instance?比如:

aws s3 cp s3://bucket/folder/ ec2-user@1.2.3.4:8080/some/folder/

我正在尝试从 Jenkins 运行它,这就是为什么我不能像这样在 EC2 上简单地运行命令:

aws s3 cp s3://bucket/folder/ ./my/destination/folder/on/the/ec2

更新:

我认为这是不可能的,所以我将考虑使用https://docs.aws.amazon.com/cli/latest/reference/ssm/send-command.html

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-ec2 aws-cli


    【解决方案1】:

    没有。

    AWS CLI 调用 AWS API。 Amazon S3 的 API 无法与 Amazon EC2 实例上的操作系统进行交互。

    您使用 AWS Systems Manager 的想法是个好主意。您可以将命令发送到实例本身,然后实例可以将对象上传/下载到 Amazon S3。

    【讨论】:

      【解决方案2】:

      既然你有 SSH 访问权限,你也可以直接运行

      ssh ec2-user@1.2.3.4:8080 "aws s3 cp s3://bucket/folder/ ./my/destination/folder/on/the/ec2"
      

      ...直接在 EC2 实例上运行命令。

      它不如使用send-command 高效(因为 ssh 必须将该命令的输出通过管道传输到您的本地终端)但是,如果您不传输数百万个文件,那么在简单性方面的权衡可能对您来说是可以接受的。

      【讨论】:

        【解决方案3】:
        Using AWS System Manager send command :
        #Copying file from S3 bucket to EC2 instance :
        $Instance_Id='i-0123456xxx'
        aws ssm send-command --document-name "AWS-RunShellScript" --document-version "\$DEFAULT" --targets "Key=instanceids,Values='$Instance_Id'" --parameters '{"commands":["aws s3 cp s3://s3-bucket/output-path/file-name /dirName/ "]}' --timeout-seconds 600 --max-concurrency "50" --max-errors "0" --region REGION_NAME
        

        【讨论】:

        • 您好,欢迎来到 stackoverflow,感谢您的回答。您能否简单地解释一下您解决了什么问题以及您是如何解决的,而不是仅仅发布一段代码?这将有助于将来发现此问题的人更好地了解该问题以及如何处理它。
        猜你喜欢
        • 1970-01-01
        • 2017-02-04
        • 2019-04-01
        • 1970-01-01
        • 2018-02-10
        • 2019-04-13
        • 2017-02-22
        • 1970-01-01
        • 2022-01-24
        相关资源
        最近更新 更多