0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ローカル環境で AWSSDK.Extensions.NETCore.Setup 3.7.x を使った初期化が遅い場合は 3.7.1 を使うか DefaultsMode に Standard を指定する。

Last updated at Posted at 2025-03-14

はじめに

AWSにデプロイしたアプリでは問題ないのですが、ローカル環境でAWSSDK.Extensions.NETCore.Setupで構成したAWSの各種クライアントを初期化するときに数秒から数十秒かかる現象に遭遇しました。

この問題はAWSSDK.Extensions.NETCore.Setup 3.7.2で行われた改善が原因で、現在プレビュー版の4.xで改善されるらしいですが、現時点では最新版の3.7.400でも同様に発生しています。

現時点の対応としては、appsettings.jsonでAWS:DefaultsModeStandardにすると回避できます。AWSSDK V4ではStandardがデフォルトになるようなので、問題が出ている場合は先行して変更するということですね。

3.7.2 以降で初期化に時間がかかる

.NETでAWSSDKを利用する場合、GenericHost下であればAWSSDK.Extensions.NETCore.Setupを使って次のように初期化することがほとんどでしょう。

services.AddDefaultAWSOptions(configuration.GetAWSOptions()!);
services.AddAWSService<IAmazonS3>();

AWSSDK.Extensions.NETCore.Setup のバージョン 3.7.2 以降では、DIでAddAWSServiceに登録したサービスを受け取ったり、ServiceProviderからインスタンスを取得したりする場合、ローカル環境では初回のインスタンスの解決に数秒から数十秒時間がかかります。

原因

AWSSDK.Extensions.NETCore.Setup 3.7.2 で入った、インスタンスの遅延初期化に関する問題で、ローカル環境実行時に存在しないIMDS(インスタンスメタデータサービス)と通信を行おうとして失敗し、数回のリトライを待機することが原因のようです。

対処

4.xで解消されているということですが、現在(2025/02/28)時点ではプレビュー状態でまだ利用できないため、appsettings.jsonを次のように修正します。

appsettings.json
{
  "AWS": {
    "Region": "ap-northeast-1",
-    "Profile": "myprofile"
+    "Profile": "myprofile",
+    "DefaultsMode": "Standard"
  }
}

DefaultModeスマート設定デフォルトという機能で利用される設定値です。下記のページに概要が示されていますが、AWS SDKを利用する際の再試行の方法や回数などに影響するようです。

おわりに

DefaultMode が各サービスに与える影響が確実につかめたわけではありませんが、設定後、ローカルおよびAWSかんで動作させてみた感じ問題なさそうなのでとりあえず様子見にしようと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?