2020年5月14日木曜日

動き始めたAWS

ようやくクラウドが動きました。コードのLinux化に続く難所は越えたと思います。

嵌った点は、次の2点でした。

1)SDK使用時、DefaultTimeoutを超えると同期リクエストでもリトライする。

https://aws.amazon.com/jp/premiumsupport/knowledge-center/lambda-function-retry-timeout-sdk/

非同期は、リトライが入るのは理解できますが、同期リクエストでもリトライがDefaultでは入ります。
確かに書いてありますが、C++ については、aws-sdk-docにもそのような記述例はなく、設定方法が不明です。海外を含めてこの点を指摘している記事はないと思います。

Lambdaリソース側では、メモリ3GB、15分のタイムアウトを設定しています。それとは別にCallerがタイムアウトを設定してやらないといけません。そうしないと、C++の場合、defaultでは、10秒くらいで、タイムアウトリトライが発生するようです。リソース側の設定と同じ、15分に設定しました。

Aws::Client::ClientConfiguration clientConfig;
     clientConfig.requestTimeoutMs = 15*60*1000;



2)Pythonライブラリの配置
クラウドにアップするときに、ZIPで固めます。これは、CMAKEがやってくれます。ただし、Pythonについては、コアについてはやってくれますが、Python上のソースについてはやってくれません。この辺、どこに配置されるかが判らず、以下のようなエラーが発生しました。

Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]

これについては、以下でDirectoryを出力させてどこに配置されるのかを調べました。
  std::system("ls -l ");

で、上で調べたDirectoryを環境変数PYTHONHOMEに設定して事なきを得ました。

0 件のコメント:

コメントを投稿