6

boto を使用して S3 のバケットにアクセスしようとしています。バケットへの読み取りアクセスが許可されており、S3 ブラウザーでバケットを探索すると、キーが機能します。次のコードは、403 Forbidden Access Denied を返しています。

conn = S3Connection('Access_Key_ID', 'Secret_Access_Key')
conn.get_all_buckets()

これは、boto 構成ファイルを介してアクセス キーとシークレット アクセス キーを使用する場合にも発生します。キーはおそらく IAM からのものであるため、他に何かする必要がありますか? これは、セットアップのエラーを示している可能性がありますか? 私は IAM についてあまり知りません。キーを与えられただけです。

4

3 に答える 3

6

確認事項をいくつか...

  • boto を使用している場合は、conn.get_bucket(bucket_name) を使用して、アクセス許可のあるバケットのみにアクセスしていることを確認してください。

  • IAM (ユーザー) ポリシーで、単一のバケットへのアクセスを制限している場合は、ポリシーにバケットへの適切なアクセス許可が含まれていることを確認し、ARN 名の末尾にスラッシュとアスタリスクを含めないでください (以下の例を参照)。

  • バケットの S3 で「認証済みユーザー」に「アップロード/削除」権限を設定してください。

権限のサンプル:

ここに画像の説明を入力

IAM ポリシーのサンプル:

注: ポリシー ジェネレーターを使用すると、SID が自動的に生成されます。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:*"
      ],
      "Sid": "Stmt0000000000001",
      "Resource": [
        "arn:aws:s3:::myBucketName"
      ],
      "Effect": "Allow"
    }
  ]
}
于 2013-10-01T21:16:31.640 に答える
4

私の推測では、アクセスできる個々のバケットに対して conn.get_bucket(bucket_name) の代わりに conn.get_all_buckets() を呼び出しているためです。

于 2012-09-13T21:30:06.653 に答える