相关疑难解决方法(0)

如何将AWS S3中的所有对象默认公开?

我正在使用PHP库将文件上传到我的存储桶.我已将ACL设置为public-read-write,它工作正常,但该文件仍然是私有的.

我发现,如果我将受赠人更改为Everyone,则会将该文件公开.我想知道的是如何将我桶中所有对象默认Grantee设置为"Everyone".或者是否有其他解决方案默认公开文件

我正在使用的代码如下:

public static function putObject($input, $bucket, $uri, $acl = self::ACL_PRIVATE, $metaHeaders = array(), $requestHeaders = array()) {
    if ($input === false) return false;
    $rest = new S3Request('PUT', $bucket, $uri);

    if (is_string($input)) $input = array(
        'data' => $input, 'size' => strlen($input),
        'md5sum' => base64_encode(md5($input, true))
    );

    // Data
    if (isset($input['fp']))
        $rest->fp =& $input['fp'];
    elseif (isset($input['file']))
        $rest->fp = @fopen($input['file'], 'rb');
    elseif (isset($input['data']))
        $rest->data = $input['data'];

    // …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-web-services

137
推荐指数
4
解决办法
8万
查看次数

AWS Policy必须包含有效的版本字符串

我收到错误"此策略包含以下错误:策略必须包含有效的版本字符串有关IAM策略语法的更多信息",当我尝试在AWS中创建新策略时,甚至我在策略中包含了该版本.我的政策是

{
  "Version": "2015-06-19",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::repo.com",
        "arn:aws:s3:::repo.com/*"
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-web-services

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

如何使用Route 53将裸(apex)域重定向到www?

我需要使用Route 53(如果需要,还有S3)从example.com到www.example.com进行301重定向.针对类似问题有一些解决方案,但它们要么没有解决如何从顶点重定向,要么根本不起作用.

当我按照这里的步骤操作时,Route 53告诉我我无法将CNAME添加到顶点域.因此,我陷入困境.

这似乎很简单,但亚马逊正在努力.任何帮助,将不胜感激.

在此输入图像描述

dns redirect amazon-s3 amazon-web-services amazon-route53

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

Amazon S3存储桶策略公共访问被拒绝

我正在尝试将我的S3存储桶公开,但是当我添加以下策略时,我得到错误访问被拒绝:

{
   "Version":"2012-10-17",
   "Statement":[{
      "Sid":"AddPerm",
      "Effect":"Allow",
      "Principal":"*",
      "Action":[
         "s3:GetObject"
      ],
      "Resource":[
         "arn:aws:s3:::emergencydatascience.org/*"
      ]
    }]
}
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-web-services

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

Amazon S3存储桶策略不支持"版本"选项

我想提供对我桶中所有文件的公共访问.几个SO答案,包括这个流行的一个表示,我要创建一个策略.

所以我去复制粘贴并编辑了资源名称和版本日期,但是我收到了一个错误

Document is invalid: Invalid Version 2014-05-02 - undefined
Run Code Online (Sandbox Code Playgroud)

我去看了一下文档(注意它说的是"最新的"),给出的例子是

{
  "Version":"2012-10-17",
  "Statement":[{
    "Sid":"PublicReadGetObject",
        "Effect":"Allow",
      "Principal": {
            "AWS": "*"
         },
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::example-bucket/*"
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我接受了,更新了资源名称,并再次尝试.仍然无法正常工作:版本不存在.

然后,我会在对话框的角落注意到"AWS policy generator"的链接.我填写了详细信息,点击"生成",得到了类似的东西

{
  "Id": "Policy1399047197120",
  "Statement": [
    {
      "Sid": "Stmt1399047194777",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::mybucketname/*",
      "Principal": {
        "AWS": [
          "AWS"
        ]
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

它奏效了!很好,所以看起来他们已经决定放弃"版本"选项,除了我在SO上看到的所有示例以及他们的示例中包含这个"版本"选项.

这个版本对我来说并不重要,但这是一个众所周知的变化吗?

amazon-s3 amazon-web-services

14
推荐指数
1
解决办法
3939
查看次数

AWS Lambda不与gm模块一起使用

当图像放入s3存储桶时,我正在使用AWS Lambdas3存储桶中的图像调整为使用节点js的不同大小的变体.

它一直工作到昨天.今天当我使用相同的lambda函数时,我收到以下错误:

{
"errorMessage": "Command failed: identify: not authorized `//bucketname.s3.amazonaws.com/imagename.jpg' @ error/constitute.c/ReadImage/454.\n",
"errorType": "Error",
"stackTrace": [
    "",
    "ChildProcess.proc.on.onExit (/var/task/node_modules/gm/lib/command.js:297:17)",
    "emitTwo (events.js:87:13)",
    "ChildProcess.emit (events.js:172:7)",
    "maybeClose (internal/child_process.js:821:16)",
    "Socket.<anonymous> (internal/child_process.js:319:11)",
    "emitOne (events.js:77:13)",
    "Socket.emit (events.js:169:7)",
    "Pipe._onclose (net.js:469:12)"
    ]
}
Run Code Online (Sandbox Code Playgroud)

我无法理解为什么会出现这种现象.我下面的lambda函数的所有给定函数都在异步瀑布中,首先计算宽高比,然后将图像转换为不同的大小变体.

var request=require("request");

function getTheAspectRatio(callback) {
    gm(s3Url) // I am constructing the image url in the AWS Lambda Function.
        .size(function(err, size) {
            if (!err) {
                //Calculate the Aspect ratio
            } else if (err) {
                //Give Back …
Run Code Online (Sandbox Code Playgroud)

imagemagick amazon-s3 amazon-web-services aws-lambda gm

9
推荐指数
1
解决办法
3575
查看次数

无法使用boto访问公共s3存储桶中的文件

我最近创建了一个新的AWS账户(我们称之为"账户A")并在该账户中创建了一个S3桶(我们称之为"桶"),上传文件foo.txt.以下建议 互联网,我成立了我认为是最宽松的政策桶可能(应该允许任何用户的任何类型的访问):

{
  "Version": "2012-10-17",
  "Id": "PolicyABCDEF123456",
  "Statement": [
    {
      "Sid": "StmtABCDEF123456",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::bucketa/*",
        "arn:aws:s3:::bucketa"
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

为帐户A创建IAM用户("身份和访问管理 - >用户 - >创建新用户"并创建一个用户"为每个用户生成一个访问密钥"后)并将该用户的凭据存储在〜/ .boto中,使用boto S3界面的简单脚本可以访问上传的文件foo.txt:

import boto
conn = boto.connect_s3()
b = conn.get_bucket("bucketa", validate=False)
k = boto.s3.key.Key(b)
k.key = "foo.txt"
print len(k.get_contents_as_string())
# 9
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个新的AWS账户(让我们称之为"账户B"),并按照相同的步骤,将IAM凭证存储在.boto文件中并运行相同的python脚本.但是在这种情况下,执行该行时会出现403错误print len(k.get_contents_as_string()):

Traceback (most recent call last):
  File "access.py", line 7, in <module>
    print len(k.get_contents_as_string())
  File "/usr3/josilber/.local/lib/python2.7/site-packages/boto/s3/key.py", line 1775, in get_contents_as_string
    response_headers=response_headers) …
Run Code Online (Sandbox Code Playgroud)

python amazon-s3 boto amazon-web-services

5
推荐指数
1
解决办法
2308
查看次数

如何在 Amazon S3 Bucket 上设置公共只读访问?

我已经发现一对夫妇像在计算器上类似的问题这一个,但他们都已经陈旧,它似乎从那时起事情已经与S3改变。他们添加了这四个令人困惑的设置: 在此处输入图片说明 如果我关闭这些,是否意味着我的存储桶可以被公开写入? 另外我还添加了这个策略:

{
"Version": "2008-10-17",
"Statement": [
    {
        "Sid": "PublicReadForGetBucketObjects",
        "Effect": "Allow",
        "Principal": {
            "AWS": "*"
        },
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::REDACTED/*"
    },
    {
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::REDACTED:user/REDACTED"
        },
        "Action": "s3:*",
        "Resource": [
            "arn:aws:s3:::REDACTED",
            "arn:aws:s3:::REDACTED/*"
        ]
    }
]
Run Code Online (Sandbox Code Playgroud)

这个 CORS 配置:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>REDACTED</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud)

我正在尝试向我在 IAM 中创建的用户授予公共读取访问权限并限制其完全访问权限。 如果有人能确认我的设置是正确的,或者如果他们没有指出我需要正确设置的资源,我将不胜感激。

amazon-s3 amazon-web-services

4
推荐指数
1
解决办法
2122
查看次数

使用aws-sdk - > 2和ruby更改s3文件访问权限

我尝试将我的项目迁移到aws-sdk 2.需要使用AWS SDK for Ruby - 版本2.我找到了所有方法,但我无法更改对文件的访问权限(公开).在以后的版本中我用这个:

bucket.objects[file_path].acl = :public_read
Run Code Online (Sandbox Code Playgroud)

但我找不到改变新api版本的方法.

这是旧api文档的链接

这是新api文档的链接

ruby api amazon-s3

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

Android - 如何从 s3 下载图像?

我正在阅读 s3 android 指南,并且对如何下载我的文件感到非常困惑。

他们提供以下代码:

TransferObserver observer = transferUtility.download(
  MY_BUCKET,     /* The bucket to download from */
  OBJECT_KEY,    /* The key for the object to download */
  MY_FILE        /* The file to download the object to */
);
Run Code Online (Sandbox Code Playgroud)

那么什么是 MY_FILE?我是否想创建一个本地空文件对象并将其提供给该 transferUtility 下载函数,并将该空文件填充到一次下载中?

而且,当我完成获取文件时,(尤其是图像)我如何使用 glide 或 Picasso 将该文件上传到 imageView 中?

我不确定如何使用 TransferObserver 对象。

希望有人可以提供一个工作示例,请!

干杯!

android amazon-s3 android-imageview picasso

2
推荐指数
1
解决办法
3532
查看次数