【问题标题】:Cannot copy files from S3 to EC2 Instance无法将文件从 S3 复制到 EC2 实例
【发布时间】:2019-05-03 19:31:30
【问题描述】:

我有一个打开所有入站流量的 EC2 实例。它被分配了以下角色:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::test-bucket"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject",
                "s3:ListObject"
            ],
            "Resource": [
                "arn:aws:s3:::test-bucket/*"
            ]
        }
    ]
}

我正在尝试将文件从 S3 存储桶复制到此实例。

aws s3 cp s3://test-bucket/test.csv /home/ubuntu/

我收到此错误:

致命错误:端点 URL 上的连接超时:“https://test-bucket.s3.eu-central-1.amazonaws.com/test.csv

我做错了什么?如何获取 S3 存储桶使用的公共 IP 地址?我可以尝试在 EC2 的出站规则中指定这一点。

【问题讨论】:

  • 除了存储桶“arn:aws:s3:::test-”中的对象之外,您还需要存储桶“arn:aws:s3:::test-bucket”上的s3:GetObject桶/*"
  • @MarkAWard - 我试过了。还是一样的错误。
  • 区域是否正确?你的桶在 eu-central-1 吗?可以在 cli 中使用 --region=eu-west-1 或在您的 ~/.aws/config 中设置区域
  • @MarkAWard - 我也添加了该区域。我仍然得到同样的错误。您认为我应该更改出站规则吗? S3的公网ip是多少?

标签: amazon-s3 amazon-ec2


【解决方案1】:

如何获取 S3 存储桶使用的公共 IP 地址?我可以尝试在 EC2 的出站规则中指定这一点

使用现代的非移动网络浏览器访问您的 S3 控制台。单击存储桶内的对象。右侧将弹出对象that show Overview, Properties and Permissions 的详细信息窗格。概览中是对象 URL。通常它遵循以下 URL 模式:

https://s3.amazonaws.com/<bucket-name>/<object key>

ping s3.amazonaws.com 以获取 IP 地址。现在,我得到:52.216.185.149

要获取range of s3 ips,请使用aws powershell command

Get-AWSPublicIpAddressRange -ServiceKey s3 -Region eu-central-1

IpPrefix            IpAddressFormat Region       Service
--------            --------------- ------       -------
52.219.72.0/22      Ipv4            eu-central-1 S3
52.219.44.0/22      Ipv4            eu-central-1 S3
52.92.68.0/22       Ipv4            eu-central-1 S3
54.231.192.0/20     Ipv4            eu-central-1 S3

一种将 s3 文件下载到 ubuntu 实例的更简单方法,我建议您遵循使用 s3 同步命令的 steps in this guide。该指南使用一个角色来包含您的 s3 存储桶详情。请注意,提示表明您的 ec2 实例在启动后无法更改 IAM 角色,but that is not true anymore。您可以创建角色并将其附加到已运行的实例。我会使用s3 cp 命令而不是s3 sync

【讨论】:

  • 嗨,我将 HTTPS 出站添加到我的 ec2 作为 0.0.0.0/0 并且我可以传输文件。当我 ping s3.amazon.co 时,IP 地址不断变化。我只想添加那些可以委托给 s3 存储桶和对象的 IP 地址范围。我怎样才能做到这一点?据我了解, eu-central-1 中的 s3 总是返回 52.*.*.* 。如何将此范围添加到我的出站?
  • 查看更新的答案 - 请注意,这些 ip 可能会随时间而变化,因此最好使用答案底部建议的带有存储桶名称的角色。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多