AWSの開発でたまに遭うエラーと原因

公開 ( 更新)履歴 (5)

また遭遇しそうなやつを記録するやつです。環境はAWS Lambda, Node.js 14.xでSDKはv3を使っています。npmパッケージはバンドルせずLayerに入れてimport (require)しています。

crypto.getRandomValues() not supported #link

原因から察するにたぶんSQSに限りませんがSQSでSendMessageBatchしようとしたらでたエラーです。

  1. Error: crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported
  2. at rng (/var/task/index.js:7175:13)
  3. at v4 (/var/task/index.js:7209:52)
  4. at StandardRetryStrategy2.<anonymous> (/var/task/index.js:7327:55)
  5. at step (/var/task/index.js:226:25)
  6. at Object.next (/var/task/index.js:173:20)
  7. at fulfilled (/var/task/index.js:144:30)
  8. at processTicksAndRejections (internal/process/task_queues.js:95:5)

エラーはsrc/rng-browserから出ています。リンク先にはReactNativeの対処とかしかなくて困りました。原因は@aws-sdk/client-sqsをLayerに入れ忘れていたからでした。入れ忘れたのにrequire()ではエラーになりませんでした。入ってないならrequire()の時点で「パッケージないよ」のエラーを出してほしい……

The expected type comes from property A which is declared here on type B #link

aws-cdkのコードで出たTypeScriptのエラーです。例えばcoreのDurationで下のようなエラーが出ます。

  1. Type 'import("A").Duration' is not assignable to type 'import("B").Duration'.
  2. Types have separate declarations of a private property 'amount'.

何度か遭遇しましたが、たいてい別の@aws-cdk/aws-???を入れた後に出ます。aws-cdkのパッケージたちのバージョンが揃っていないのが原因で、全部アップグレードするなどしてバージョンを揃えれば出なくなります。現状だとaws-cdkが週1回以上で更新されているので開発中に新しいパッケージを導入するときはだいたいずれます。

今回はここまで。