【问题标题】:Upload data to AWS S3 - EndpointConnectionError: Could not connect to the endpoint URL:将数据上传到 AWS S3 - EndpointConnectionError:无法连接到终端节点 URL:
【发布时间】:2021-03-08 13:49:20
【问题描述】:

按照这个很好的教程https://medium.com/bilesanmiahmad/how-to-upload-a-file-to-amazon-s3-in-python-68757a1867c6 我写了一个代码,目的是将文件上传到 S3 存储桶:

import boto3
from botocore.exceptions import NoCredentialsError

ACCESS_KEY = 'XXXXXXXXXXXXXXXXXXXXXXX'
SECRET_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'


def upload_to_aws(local_file, bucket, s3_file):
    s3 = boto3.client('s3', aws_access_key_id=ACCESS_KEY,
                      aws_secret_access_key=SECRET_KEY)

    try:
        s3.upload_file(local_file, bucket, s3_file)
        print("Upload Successful")
        return True
    except FileNotFoundError:
        print("The file was not found")
        return False
    except NoCredentialsError:
        print("Credentials not available")
        return False

我指定的参数如下:

uploaded = upload_to_aws('path/to/my/file/test.csv', 'name-of-s3-bucket', 'test.csv')

当我现在尝试执行此操作时,出现以下错误:

EndpointConnectionError: Could not connect to the endpoint URL: "https://name-of-s3-bucket.s3.amazonaws.com/test.csv"

是不是我指定的方式有误?

非常感谢!

【问题讨论】:

    标签: python amazon-web-services amazon-s3 error-handling endpoint


    【解决方案1】:

    您的区域是否在 ~/.aws/config 文件中正确指定为 N.Virginia? 此错误的最常见原因是您的区域设置不正确。由于我看到它是标准的 .s3.amazonaws.com,因此您可能想检查您的区域是否在配置文件中设置为 us-east-1。

    【讨论】:

    • 感谢您的回答!即使我实际登录的地区是法兰克福,我的地区是否必须指定为弗吉尼亚北部?
    • 没有。我根据你的 S3 url 猜到了 N.V.。通常为 S3 生成的 url 有两种类型:带区域(用于 N.V. 以外的区域)和不带区域。要么你的法兰克福地区代码没有在配置文件中正确指定,要么桶不在正确的地区(我的猜测更倾向于这个)。
    • 好的,谢谢!我会检查这个。希望这就是它不起作用的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-07
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    相关资源
    最近更新 更多