首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以使用CyberDuck连接到S3桶,但不能以编程方式连接。

我可以使用CyberDuck连接到S3桶,但不能以编程方式连接。
EN

Stack Overflow用户
提问于 2017-09-05 21:17:51
回答 1查看 2.4K关注 0票数 0

我试图连接到一个S3桶(第三方是所有者,所以我不能通过AWS控制台访问)。使用CyberDuck,我可以连接和上传文件没有问题。但是,我尝试了几个库来连接这个桶,所有这些库都返回了一个403被禁止的库。我在这里发帖,希望有人能发现我做错了什么。

代码语言:javascript
复制
    def send_to_s3(file_name):
        csv = open("/tmp/" + file_name, 'rb')
        conn = tinys3.Connection("SECRET",
                                 "SECRET",
                                 tls=True,
                                 endpoint="s3.amazonaws.com")
        conn.upload("MDA-Data-Ingest/input/" + file_name, csv, bucket="gsext-69qlakrroehhgr0f47bhffnwct")


    def send_via_ftp(file_name):
        cnopts = pysftp.CnOpts()
        cnopts.hostkeys = None
        srv = pysftp.Connection(host="gsext-69qlakrroehhgr0f47bhffnwct.s3.amazonaws.com",
                                username="SECRET",
                                password="SECRET",
                                port=443,
                                cnopts=cnopts)

        with srv.cd('\MDA-Data-Ingest\input'):
            srv.put('\\tmp\\'+file_name)

        # Closes the connection
        srv.close()

    def send_via_boto(file_name):
        access_key = 'SECRET'
        secret_key = 'SECRET'

        conn = boto.connect_s3(
            aws_access_key_id=access_key,
            aws_secret_access_key=secret_key,
            host='s3.amazonaws.com',
            # is_secure=False,               # uncomment if you are not using ssl
            calling_format=boto.s3.connection.OrdinaryCallingFormat(),
        )

所有这些函数都返回一个403,如下所示:

HTTPError: 403个客户端错误:禁止url:https://gsext-69qlakrroehhgr0f47bhffnwct.s3.amazonaws.com/MDA-Data-Ingest/input/accounts.csv

然而,当我使用CyberDuck时,我可以很好地连接:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-05 23:02:50

最简单的方法是使用AWS命令线接口(CLI),它使用boto3访问AWS服务。

例如:

代码语言:javascript
复制
aws s3 ls s3://bucket-name --region us-west-2

aws s3 cp s3://gsext-69qlakrroehhgr0f47bhffnwct/MDA-Data-Ingest/input/accounts.csv accounts.csv

您将首先运行aws configure来提供凭据和默认区域,但上面的语法允许您指定桶所在的特定区域。(您的Python代码可能由于调用错误的区域而失败。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46063487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档