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()

質問済み 1年前626ビュー
1回答
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
回答済み 1年前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

質問に答えるためのガイドライン