14

最新の Aurora アップデート (1.8) で、コマンドLOAD DATA FROM S3が導入されました。誰かがこれを機能させましたか?1.8 にアップグレードした後、こちらのセットアップ ガイドに従って、 RDS から S3 へのアクセスを許可するロールを作成しました。

サーバーを再起動してコマンドを実行しようとした後

LOAD DATA FROM S3 PREFIX 's3://<bucket_name>/prefix' INTO TABLE table_name

SQL Workbench/J では、次のエラーが表示されます。

Warnings:
S3 API returned error: Missing Credentials: Cannot instantiate S3 Client
S3 API returned error: Failed to instantiate S3 Client
Internal error: Unable to initialize S3Stream

追加の手順が必要ですか? これは SDK からのみ実行できますか? ドキュメントのどこにも言及されていません

4

10 に答える 10

36

同じ問題がありました。RDS インスタンスが使用していた IAM ロールに AmazonS3FullAccess を追加しようとしましたが、うまくいきませんでした。

いろいろ調べた後、RDS コンソールの [クラスター] に移動しました。Aurora クラスターを選択し、[IAM ロールの管理] をクリックしました。ドロップダウンが表示されたので、IAM ロールを選択しました (個々のインスタンスが使用していたものと同じ)。

私がそれをしたら、すべてがうまくいき、データの読み込みは素晴らしく速くなりました.

したがって、(私たちにとって) 5 つのステップ/コンポーネントがあります。

1) ユーザーがオブジェクトをアップロードできるようにする S3 バケットとバケット ポリシー

{
    "Version": "2012-10-17",
    "Id": "Policy1453918146601",
    "Statement": [
        {
            "Sid": "Stmt1453917898368",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<account id>:<user/group/role>/<IAM User/Group/Role>"
            },
            "Action": [
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::<bucket name>/*"
        }
    ]
}

「プリンシパル」は、RDS インスタンスがデータをインポートできるように、バケットにデータ ファイルをアップロードする IAM ユーザー、グループ、またはロールです。

2) IAM ポリシー:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1486490368000",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::<bucket name>/*"
            ]
        }
    ]
}

これは、ポリシー ジェネレーターを使用すると非常に簡単です。

3) IAM ロールを作成します。

このロールには、上記の IAM ポリシーを割り当てる必要があります。このポリシーを今後他のロールに使用しない場合は、おそらくインライン ポリシーも実行できますが、必要に応じて後で参照できる定義済みのポリシーを用意するというアイデアが気に入っています。

4) クラスター/インスタンスが aws_default_s3_role 値を上記 #3 のロールの ARN に設定するために使用するパラメーター グループを設定します。

5) [クラスター] に移動し、クラスターを選択して [IAM ロールの管理] を選択し、DB クラスターの IAM ロールを設定して、Aurora クラスターを構成します。

少なくとも私にとっては、これらの手順は魅力的でした。

それが役立つことを願っています!

于 2017-02-17T16:35:44.747 に答える
3

2019 年 3 月:

RDS コンソールには、ロールを変更するオプションがなくなりました。私にとってうまくいったのは、CLI を介して役割を追加し、ライター インスタンスを再起動することです。

aws rds add-role-to-db-cluster --db-cluster-identifier my-cluster --role-arn arn:aws:iam::123456789012:role/AllowAuroraS3Role
于 2019-03-11T09:52:11.880 に答える
0

Amazon Aurora チームに連絡したところ、一部のサーバーでこの問題が発生している特殊なケースがあることが確認されました。彼らはすぐに問題を修正するためのパッチを展開していますが、その間に手動でパッチをクラスターに適用しました。

于 2016-11-02T14:41:58.903 に答える
0

ステップ 2 から 5 に従い、S3 アクセス用の VPC エンドポイントを作成することでうまくいきました。

于 2020-04-01T08:32:57.160 に答える