aws-sdk/credential-providersのfromContainerMetadataメソッドが使えません。

0

Fargateに紐づくロールをクレデンシャルとして利用したく、aws-sdk/credential-providersのfromContainerMetadataメソッドを使用したい。 しかし、aws-sdk/credential-providersをインストール後、fromContainerMetadataを呼び出して使おうとすると、以下のようなWarningメッセージが出る

export 'fromContainerMetadata' (imported as 'fromContainerMetadata') was not found in '@aws-sdk/credential-providers' (possible exports: fromCognitoIdentity, fromCognitoIdentityPool, fromTemporaryCredentials, fromWebToken)

バージョン

aws-sdk/credential-providers : v3.312.0, v3.310.0, v3.309.0, v3.262.0 上記のバージョン、全てで同じメッセージが表示

再現手順

aws-sdk/credential-providersをインストール

yarn add aws-sdk/credential-providers

fromContainerMetadata呼び出し

import { PollyClient, SynthesizeSpeechCommand } from '@aws-sdk/client-polly';
import { fromContainerMetadata } from '@aws-sdk/credential-providers';

const polly = new PollyClient({
    region: 'ap-northeast-1',
    credentials: fromContainerMetadata(),
  }); /

build後Warningメッセージが表示

export 'fromContainerMetadata' (imported as 'fromContainerMetadata') was not found in '@aws-sdk/credential-providers' (possible exports: fromCognitoIdentity, fromCognitoIdentityPool, fromTemporaryCredentials, fromWebToken)

類似事象

https://twitter.com/deottam/status/1645373566173556739?s=20

参考資料

https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html#fromcontainermetadata-and-frominstancemetadata:~:text=fromContainerMetadata()%20and%20fromInstanceMetadata()

gefragt vor einem Jahr654 Aufrufe
1 Antwort
0

ご質問いただきました事象は、以下の Issue に該当している可能性があると存じます。

type checking error with fromEnv in @aws-sdk/credential-providers #3392
https://github.com/aws/aws-sdk-js-v3/issues/3392

お使いのビルドツールにより、下記の index.ts ではなく index.web.ts が使用され、fromContainerMetadataexport されていないものと存じます。

以下の package.json に記載がございます通り、ビルドのエントリーポイントが browser の場合に index.web が使用されます。

一例といたしまして、esbuild を使用してビルドを実行する場合、デフォルトでは browser 向けのビルドが実行されます。

https://esbuild.github.io/api/#platform

By default, esbuild's bundler is configured to generate code intended for the browser.

それにより、以下の通り、fromContainerMetadataexport されないことを示すエラーが発生いたします。

browser の場合

$ npx esbuild index.js --bundle --outfile=out.js
✘ [ERROR] No matching export in "node_modules/@aws-sdk/credential-providers/dist-es/index.web.js" for import "fromContainerMetadata"

    index.js:2:9:
      2 │ import { fromContainerMetadata } from '@aws-sdk/credential-providers';
        ╵          ~~~~~~~~~~~~~~~~~~~~~

1 error

一方、ビルド時に Node.js をターゲットに設定し、ビルドのエントリーポイントを main,module に変更いたしますとエラーは回避できます。

https://esbuild.github.io/api/#platform

When the platform is set to node:
...
The main fields setting is set to main,module.

browser 以外の場合

$ npx esbuild index.js --platform=node --bundle --outfile=out.js

  out.js  976.9kb

⚡ Done in 196ms

お手数をお掛けいたしますが、お使いのビルドツールの設定にて browser 向けのビルドではなく main のエントリーポイントが使用されるようにご変更いただき、事象が解消するかご確認いただけますでしょうか。
なお、ビルドツールの設定方法につきましては、該当のツールのウェブサイトなどで情報をご確認いただけますようお願い申し上げます。

AWS
Homma_D
beantwortet vor einem Jahr

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen