【问题标题】:Copying File From S3 To EC2 by User Data Approach通过用户数据方法将文件从 S3 复制到 EC2
【发布时间】:2025-11-30 06:20:11
【问题描述】:

我一直在寻找这个任务的解决方案,我发现所有我不想要的 CLI 方法。

我只是想要:

我有一个 S3 存储桶,它有一个私有文件,文件可以是任何图像/zip 文件。

我希望当我启动任何 EC2 实例时,它应该将该文件从 S3 存储桶带到 EC2 实例目录。

为此,我只想使用 EC2 用户数据方法。

【问题讨论】:

  • 我不明白你的帖子是什么意思,只想使用“用户数据方法”而不是 CLI。如果您从用户数据执行此操作,您将在那里使用 CLI。类似于 aws s3 cp s3://your/file /a/file/path/on/ec2
  • 谢谢@Rome_Leader,我知道了

标签: amazon-web-services amazon-s3 amazon-ec2 user-data


【解决方案1】:

Amazon EC2 中的 User Data 字段将信息传递给实例,该实例上运行的应用程序可以访问这些信息。

使用 Amazon 提供的 AMI(例如 Amazon Linux 2)启动的 Amazon EC2 实例包括一个名为 Cloud-Init 的程序,该程序查看用户数据,如果提供了脚本,则在实例首次启动时运行该脚本.

因此,您可以配置一个脚本(通过用户数据传递),该脚本将在首次启动实例时运行。该脚本将以root 用户身份运行。您的脚本可以使用 AWS Command-Line Interface (CLI) 从 Amazon S3 复制文件,如下所示:

#!
aws s3 cp s3://my-bucket/foo.txt /home/ec2-user/foo.txt
chown ec2-user foo.txt

请注意,您需要为有权访问存储桶的实例分配一个 IAM 角色。 AWS CLI 将使用这些权限进行文件复制。

您提到您不希望使用 AWS CLI。相反,您可以编写一个使用首选编程语言(例如 Python)调用 Amazon S3 API 的程序,但使用 CLI 要简单得多。

【讨论】:

  • 我很确定 'chown foo.txt ec2-user' 实际上应该是 'chown ec2-user foo.txt'。 (我编辑了你的答案来修复它。)
  • @Mark 谢谢!我以为我查了语法,但我必须得到它 sdrawkcab!
最近更新 更多