7

EC2 Ubuntu インスタンスにあるリバース プロキシ マシンとして使用している nginx サーバーのログ ローテーション構成を使用しようとしています。

ローテーション後にこれらのログを S3 バケットに保存したいのですが、s3cmd ツールを構成しようとすると、「アクセスが拒否されました。キーに ListAllMyBuckets 権限エラーがありますか?」というメッセージしか表示されません。

私の資格情報が IAM で正しく構成されていることは確かです。少なくとも 5 つの異なる資格情報 (ルート資格情報も含む) を試してみましたが、結果は同じでした。同じ資格情報を持つ aws cli ツールを使用して、ローカル コンピューターからすべてのバケットを一覧表示しても問題なく機能するため、EC2 インスタンスだけにアクセスできないことに困惑します。

これは私が実行するものです:

which s3cmd
/usr/local/bin/s3cmd

s3cmd --configure --debug

Access Key: **************
Secret Key: *******************************
Encryption password: 
Path to GPG program: /usr/bin/gpg
Use HTTPS protocol: False
HTTP Proxy server name:
HTTP Proxy server port: 0

そしてこれが結果です

...
DEBUG: ConnMan.put(): connection put back to pool (http://s3.amazonaws.com#1)
DEBUG: S3Error: 403 (Forbidden)
DEBUG: HttpHeader: x-amz-id-2: nMI8DF+............
DEBUG: HttpHeader: server: AmazonS3
DEBUG: HttpHeader: transfer-encoding: chunked
DEBUG: HttpHeader: x-amz-request-id: 5912737605BB776C
DEBUG: HttpHeader: date: Wed, 23 Apr 2014 13:16:53 GMT
DEBUG: HttpHeader: content-type: application/xml
DEBUG: ErrorXML: Code: 'AccessDenied'
DEBUG: ErrorXML: Message: 'Access Denied'
DEBUG: ErrorXML: RequestId: '5912737605BB776C'
DEBUG: ErrorXML: HostId: 'nMI8DF+............
ERROR: Test failed: 403 (AccessDenied): Access Denied
ERROR: Are you sure your keys have ListAllMyBuckets permissions?

nginx サーバーの前にあるのはロード バランサーだけですが、それが私の要求を妨害する理由がわかりません。それは私が見逃した何か他のものでしょうか?

4

6 に答える 6

9

--configure スイッチを信用しないでください:

私は同じ問題に直面していました。--configure で 403 を表示していましたが、最後に設定を保存してから試しました:

エラー: テストに失敗しました: 403 (AccessDenied): アクセスが拒否されました
再試行構成? [Y/n] n
設定を保存しますか? [y/N] y
構成を「/root/.s3cfg」に保存しました

# s3cmd put MyFile s3://MyBucket/

& 出来た..

于 2014-09-03T06:15:12.057 に答える
9

使用しているキーのIAMユーザー権限を確認してください

ステップは

  • AWS コンソールはIAMパネルに移動します
  • IAMユーザー> そのユーザーを選択> 下部メニューの 2 番目のタブで アクセス許可
  • ユーザー ポリシーを添付する

    {
    "Version": "2012-10-17",
    "Statement": [
     {
      "Effect": "Allow",
      "Action": ["s3:ListAllMyBuckets"],
      "Resource": "arn:aws:s3:::*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetBucketLocation"
      ],
      "Resource": "arn:aws:s3:::YOU-Bucket-Name"
    
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::YOU-Bucket-Name/*"
    
    
    }
    ]
    }
    

それがどうなるか教えて

于 2014-04-23T14:07:39.787 に答える
1

使用しているのバージョンは何s3cmdですか?

s3cmd1.1を使用して試してみましたが、 s3cmd1.1 は IAM ロールでは機能しないようです。

s3cmdしかし、 1.5 alpha2 は IAM ロールをサポートしていると誰かが言っています ( http://t1983.file-systems-s3-s3tools.file-systemstalk.info/s3cmd-1-5-0-alpha2-iam-roles-supportincluded-t1983. html )

s3cmd1.5 ベータ 1 ( https://github.com/s3tools/s3cmd/archive/v1.5.0-beta1.tar.gz )を試しましたが、IAM ロールで正常に動作します。

の s3 バケットにアクセスするには、次の 2 つの方法がありますs3cmd

  1. アクセスキーとシークレットキーの使用 `

    次のように /root/.s3cfg (デフォルト パス) に構成ファイルを設定する必要があります。

    access_key=xxxxxxxx secret_key=xxxxxxxxxxxxxxxxxxxx

    .s3cfg で 2 つのキー値の上に設定するだけで、他のキーは必要ないことに注意してください。

    `
  2. IAM を使用して、s3cmd > 1.5 alph2 で s3 ポリシーを追加します。`

    IAM を ec2 インスタンスに追加する必要があります。このロールには次のようなポリシーがある場合があります。

    { "Effect": "Allow", "Action": [ "s3: " ], "Resource": " " } `
于 2014-04-24T04:33:43.367 に答える
0

私も同様の問題を抱えていました。EC2 インスタンスを s3 フル アクセス ポリシーを使用して IAM ロールに関連付けた後でも、.s3cfg ファイルが含まれていなかったため、s3cmd が失敗していました。s3cmdのバージョンを更新することで修正しました。

sudo pip install s3cmd==1.6.1

トリックをやった!

于 2016-08-26T12:21:59.620 に答える