3

ここで説明されているように、s3fsをインストールしますhttp://code.google.com/p/s3fs/wiki/InstallationNotes

次に、ユーザーbucket_userを作成します

次に、彼の accessKeyId:secretAccessKey を /etc/passwd-s3fs に入れます

それらは S3 です バケットを作成します super_bucket

ポリシーを設定します。

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "AddCanned",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::234234234234:user/bucket_user"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::super_bucket/*"
        }
    ]
}

次に、私のサーバーで /usr/bin/s3fs super_bucket /mnt/s3/

そして答えを受け取ります:

s3fs: CURLE_HTTP_RETURNED_ERROR

s3fs: HTTP Error Code: 403

s3fs: AWS Error Code: AccessDenied

s3fs: AWS Message: Access Denied

使用している s3fs のバージョン (s3fs --version): 1.61

使用されているヒューズのバージョン (pkg-config --modversion fuse): 2.8.4

システム情報 (uname -a): Linux Ubuntu-1110-oneiric-64-minimal 3.0.0-14-server #23-Ubuntu SMP Mon Nov 21 20:49:05 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

ディストリビューション (cat /etc/issue): Ubuntu 11.10 \n \l

s3fs syslog メッセージ (grep s3fs /var/log/syslog): 空

だから私は最初から始めます

サーバー上

nano ~/.passwd-s3fs

cmd+v accessKeyId:secretAccessKey

chmod 600 ~/.passwd-s3fs

バケット ポリシーで

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::super_bucket/*",
                "arn:aws:s3:::super_bucket"
            ]
        }
    ]
}

"保存"

/usr/bin/s3fs super_bucket /mnt/s3/

そしてまた受け取る

s3fs: AWS メッセージ: アクセスが拒否されました

4

3 に答える 3

5

AWSIAMでユーザーポリシーを設定する必要があるとは誰も言いませんでした

于 2012-02-15T22:07:47.660 に答える
1

アップデート

分析

どうやらs3fsには、使用している最新の安定バージョン 1.61までの IAM サポートに関する問題があるようです。詳細については、 IAM ユーザー権限の問題、特にコメント 4を確認してください。

マウントを試行する前に、要求されたバケットが存在するかどうかを判断するために必要な[ ListAllMyBuckets() ] への呼び出しが明らかにあります。

現在、ListAllMyBuckets()は、ステートメントが現在対象としている唯一のエンティティであるバケットまたはオブジェクトではなく、サービスに対する操作であるため、 ListAllMyBuckets()の使用は現在のポリシーによって事実上拒否されます。Resource

解決

コメント 4にも記載されているように、追加のポリシー フラグメントを追加して、s3fsのバージョンのこの要件に対応する必要があります。

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

または、コメント 9で提供されているパッチを適用した後、ソースから s3fs バージョン 1.61 をビルドすることもできます。明らかに、後のバージョンにはこれに対する修正も含まれる可能性があります。コメント 11 ffを参照してください。

幸運を!


意図した機能 (つまり、バケットをローカル ファイル システムの読み取り/書き込みとしてマウントする) を考えると、s3fsはおそらくバケットに含まれるオブジェクトだけでなく、バ​​ケット自体にもアクセスする必要があり、個別に処理されます。Resourceステートメントを次のように置き換えてみてください。 :

"Resource": [
    "arn:aws:s3:::super_bucket",
    "arn:aws:s3:::super_bucket/*",
]

最初のリソースはバケットを対象とし、後者はそこに含まれるオブジェクトを対象とします。

于 2012-01-30T15:05:52.820 に答える