AWS 中国 (北京) リージョンで Hive および Presto を使用して Amazon EMR クラスターを起動すると、「The provided token is malformed or otherwise invalid」というエラーが表示されます。

最終更新日: 2020 年 10 月 14 日

AWS 中国 (北京) リージョン (cn-north-1) で Amazon EMR クラスターを起動し、Presto と Apache Hive を使用して Amazon Simple Storage Service (Amazon S3) バケットから外部テーブルを作成しました。Hive と Presto を使用してテーブルのクエリを行うと、次のようなエラーが表示されます。

presto:default> select * from mydata;
Query 20200912_072348_00009_qqx96, FAILED, 1 node
Splits: 1 total, 0 done (0.00%)
0:03 [0 rows, 0B] [0 rows/s, 0B/s]
Query 20200912_072348_00009_qqx96 failed: The provided token is malformed or otherwise invalid. (Service: Amazon S3; Status Code: 400; Error Code: InvalidToken; Request ID: 811359ED1D9F8250)

簡単な説明

以前の Amazon EMR リリースバージョンでは、Presto は S3 バケットがあるリージョンを自動的に使用しません。このエラーを解決するには、以下のいずれかのオプションを使用します。

  • Amazon EMR リリースバージョン 5.12.0 以降にアップグレードする。
  • Amazon EMR リリースバージョン 5.11.x 以前を使用する場合は、hive.s3.pin-client-to-current-region プロパティを true に設定します。

解決方法

Amazon EMR リリースバージョン 5.12.0 以降へアップグレード

新しいクラスターを起動し、Amazon EMR リリースバージョン 5.12.0 以降を選択します。詳細については、「Amazon EMR リリースについて」を参照してください。

hive.s3.pin-client-to-current-region プロパティを true に設定します (バージョン 5.11.x以前)

1.    各ノードで [hive.properties] ファイルを開き、hive.s3.pin-client-to-current-region プロパティを [true] に設定します。例:

sudo vim /etc/presto/conf/catalog/hive.properties
hive.s3.connect-timeout=2m
hive.s3.max-backoff-time=10m
...
hive.s3.pin-client-to-current-region=true

2.    各ノードで Presto を再起動します。

sudo restart presto-server
3.    新しい構成が期待どおりに動作することを確認するには、中国 (北京) リージョンで Hive と Presto を使用してテーブルを照会します。

この記事は役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?