0

私はAmazonEC2Ireland(Ubuntu)でホストされているプロジェクトを持っています。

私はCodeIgniterで開発しており、S3を使用してファイルを保存したいと考えています。

私はCodeIgniterでS3を使用するために3つまたは4つの特定のライブラリを使用しましたが、どれも機能していません。公式のAWSSDKfor PHPを試しましたが、互換性テストは問題ありませんが、サンプルが機能しません。問題はS3へのアクセスだと思います。

S3 Managementで3つのバケットを作成し、2つはアイルランド、1つは米国標準で作成し、ブラウザー、S3 Organizer(S3Fox)、Cyber​​duckでファイルにアクセスできます。しかし、私は自分のプロジェクトにアクセスしません。

誰でも私を助けることができますか?

私の悪い英語でごめんなさい...

コントローラーamazona.php:

   <?php defined('BASEPATH') OR exit('No direct script access allowed');

class Amazona extends CI_Controller {

    var $bucket = 'cubito';

    function __construct()
    {
        parent::__construct();
        $this->load->library('S3');
    }

    function index()
    {
/*      $data['files'] = $this->s3->getBucket('cubito'); */
        $data['texto'] = "prueba";
        $this->load->view('amazona', $data);
    }
}

?>

amazona.phpを表示:

<html>
    <head>
        <title>prueba</title>
    </head>

    <body>
        <a href="http://cubito.s3.amazonaws.com/imagen.jpg">imagen</a>
        <img src="http://cubito.s3.amazonaws.com/imagen.jpg" />
        <p><?php echo($texto); ?></p>
        <p><?php echo($this->s3->listBuckets()); ?></p>

    </body>

</html>

バケットポリシーを追加しましたが、それでも機能しません。

{
    "Version": "2008-10-17",
    "Id": "Policy1351373775750",
    "Statement": [
        {
            "Sid": "Stmt1351373767997",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::cubito",
                "arn:aws:s3:::cubito/*"
            ]
        }
    ]
}
4

2 に答える 2

0

バケットを一覧表示するには、s3バケットポリシーが正しくないと思います。バケットポリシーは何ですか、共有できますか?

You Need to include the bucket itself as a resource.
"Resource":["arn:aws:s3:::my_bucket/*", "arn:aws:s3:::my_bucket"]

編集:

これを試してください:(これは、IAMユーザーにS3へのアクセスを許可するためのポリシーです)

{
  "Statement": [
    {
      "Sid": "Stmt1351373767997",
      "Action": [
        "s3:*"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::cubito",
        "arn:aws:s3:::cubito/*"
      ]
    },
  {
         "Effect":"Allow",
         "Action":"s3:ListAllMyBuckets",
        "Resource":"arn:aws:s3:::*"
     }    
  ]
}

これを試してください:(これはs3バケットのポリシーです)

{
  "Id": "Policy1351375661442",
  "Statement": [
    {
      "Sid": "Stmt1351375657362",
      "Action": "s3:*",
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::*",
      "Principal": {
        "AWS": [
          "\"AWS\": \"*\""
        ]
      }
    }
  ]
}
于 2012-10-27T20:55:10.173 に答える
0

やったよ!!

s3ライブラリのvar$endpointを変更します。オリジナル:

public static $endpoint = 's3.amazonaws.com';

変更:

public static $endpoint = 's3-eu-west-1.amazonaws.com';

私の最初のアクセスキーとシークレットキーで実行されます!!!

みなさん、ありがとうございました。英語が下手でごめんなさい。

¡¡¡グラシアス!!!

于 2012-10-29T18:53:47.003 に答える