相关疑难解决方法(0)

是否可以使用boto从Google App Engine中的S3读取文件?

我想在Google App Engine的沙箱中操作存储在S3中的pickle python对象.我使用boto 文档中的建议:

from boto.s3.connection import S3Connection

from boto.s3.key import Key

conn = S3Connection(config.key, config.secret_key)
bucket = conn.get_bucket('bucketname')
key = bucket.get_key("picture.jpg")
fp = open ("picture.jpg", "w")
key.get_file (fp)
Run Code Online (Sandbox Code Playgroud)

但是这需要我写一个文件,这显然不是GAE沙盒中的犹太人.

我怎么能绕过这个?非常感谢您的帮助

python google-app-engine amazon-s3 boto amazon-web-services

7
推荐指数
1
解决办法
8510
查看次数

尝试下载文件时从s3获取403禁止

我在s3上有一个存储桶,并且用户可以完全访问该存储桶.

我可以执行ls命令并查看存储桶中的文件,但是下载它们会失败:

A client error (403) occurred when calling the HeadObject operation: Forbidden

我还尝试通过IAM控制台授予用户完全S3权限的用户.同样的问题.

作为参考,这是我的IAM政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::mybucket",
                "arn:aws:s3:::mybucket/*"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我也尝试添加一个存储桶策略,甚至将存储桶公开,但仍然没有...也是,从控制台,我试图对存储桶中的文件设置单独的权限,并得到一个错误,说我无法查看存储桶,这很奇怪,因为我在消息出现时从控制台查看它,并且可以ls在桶中进行任何操作.

编辑我的存储桶中的文件是使用我帐户中的凭据从另一个属于不同帐户的存储桶中复制的.可能相关也可能不相关......

第二次编辑只是尝试从其他存储桶上传,下载和复制我自己的文件到这个桶,它工作正常.问题特别在于从另一个帐户的存储区放置的文件.

谢谢!

amazon-s3 amazon-web-services aws-cli

7
推荐指数
2
解决办法
2万
查看次数

获取boto.exception.S3ResponseError:S3ResponseError:403上传文件时禁止访问

关于这个问题还有一些其他问题:

boto.exception.S3ResponseError:S3ResponseError:403禁止

S3ResponseError:S3ResponseError:403 Forbidden

S3ResponseError:403禁止使用boto

Python:Amazon S3无法获得桶:403 Forbidden说

然而,似乎我可能遇到了不同的问题(例如,时钟偏差不是问题,我已经尝试过设置validate=False,我相信我有正确的密钥和密钥,因为尝试伪造密钥或秘密密钥会给我不同的错误) .这是我的脚本:

import boto
import sys
from boto.s3.key import Key

BUCKET_NAME = sys.argv[1]
AWS_ACCESS_KEY_ID = sys.argv[2]
AWS_SECRET_ACCESS_KEY = sys.argv[3]

conn = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
bucket = conn.get_bucket(BUCKET_NAME, validate=False)
k = Key(bucket)
k.key = 'barbaz'
k.set_contents_from_filename('/tmp/barbaz.txt')
Run Code Online (Sandbox Code Playgroud)

结果如下:

Traceback (most recent call last):
  File "/home/jonderry/sdmain/src/scripts/jenkins/upload_to_s3.py", line 16, in <module>
    k.set_contents_from_filename('/tmp/barbaz.txt')
  File "/usr/local/lib/python2.7/dist-packages/boto/s3/key.py", line 1360, in set_contents_from_filename
    encrypt_key=encrypt_key)
  File "/usr/local/lib/python2.7/dist-packages/boto/s3/key.py", line 1291, in set_contents_from_file
    chunked_transfer=chunked_transfer, size=size)
  File "/usr/local/lib/python2.7/dist-packages/boto/s3/key.py", line 748, in send_file
    chunked_transfer=chunked_transfer, size=size) …
Run Code Online (Sandbox Code Playgroud)

python amazon-s3 boto

3
推荐指数
1
解决办法
1万
查看次数