AWS Glueの仕様でサポートに問い合わせた内容

f:id:yomon8:20181017121627p:plain

最近Glueを使っていて、その過程でAWSサポートに問い合わせしたり、仕様を確認した内容をまとめておきます。

Tableのプロパティ(Parameters)の制限

GlueのテーブルParameters に色々な情報を格納したいなと思ったので制限を調べました。

AWSのドキュメントからParametersに格納可能な文字に関しては以下の記載を見つけました。

テーブル API - AWS Glue

Parameters – キーと値のペアのマップ配列。 各キーはキー文字列。1 ~ 255 バイト長。Single-line string pattern に一致。 各値は UTF-8 文字列で、512,000 バイト長以下です。 これらのキー/値ペアは、テーブルに関連付けられたプロパティを定義します。

これでサイズはわかったのですが、件数はというところが不明でサポートに問い合わせました。 結論は件数の制限は公開していないそうです。

ただ、手元で確認したところ2048件以上でも問題無く登録できております。 まだまだ行けそうですが、この程度で十分すぎる気もするのでここまでにしました。

SageMakerでGlueのライブラリ読み込むとエラーが出る

SageMaker使ってGlueのライブラリ読み込むとこんなエラーが。

No module named 'awsglue'
Traceback (most recent call last):
ImportError: No module named 'awsglue'

私の初歩的ミスでSparkmagic (PySpark)使うべきところを、Sparkmagic (PySpark3)を使ってしまっていたからでした。 Glueの開発エンドポイントは、Python 3では動作しないため、Sparkmagic (PySpark3)できない。Python 2.7(Sparkmagic (PySpark))を使用して ETL スクリプトを開発するとのことでした。

初歩的質問をしてしまいサポートの方には申し訳なかったです。

S3からS3へのコピーでVPCエンドポイント使いたい

Glue と S3 を用いた仕組みにおいて、Glue と S3 をプライベートなネットワークにて接続を行いたいという要件。

この絵を見るとできそうな気がしますが、結論を言うと2018/10/27時点では原則できません。

Amazon S3 における Amazon VPC エンドポイント - AWS Glue

ちょっと整理します。

  • ① ○ JDBCでのDB接続からS3へのETLジョブあればGlueの接続を作成することでVPCにENIを接続することが可能
  • ② ○ Glueの開発エンドポイントは設定時にVPCの設定が可能
  • ③ ☓ S3からS3へのETL処理等でVPCにENI接続する

③ができそうなのにできない。サポートに聞いてもできないとのこと。

冒頭で原則できないと書いたのは裏技があるからです。JDBCでどこかのDBに接続して、Glueのジョブではその接続使わずにS3を処理すれば、ダミー接続で利用したENIを使ってS3のVPCエンドポイント使えます。確かに使えることには使えますが、あまり使いたくない技です。

接続テストでエラーが出る

これはサポート問い合わせたわけではないですが、書いておきます。

設定確かに正しいはずなのに、接続のテストでこんなエラーがでる状態になりました。

connection_name を作成できませんでした。1 validation error detected: Value '26-10月-2018-5-02-午前-UTC' at 'logProperties.logStreamName' failed to satisfy constraint: Member must satisfy regular expression pattern: [\.\-_/#A-Za-z0-9]+ .

解決方法はManagement Consoleの言語を英語にすることでした。これは近いうち直りそうなバグですね。