0

ブラウザで AWS javascript SDK V3 を使用して Gamelift を使用することができません。私が最初にしたことは、javascript v3 で aws gamelift を使用して nodejs を作成したことです。

index.js

import * as AWS_S3 from "@aws-sdk/client-s3";
import * as AWS from "@aws-sdk/client-gamelift";

export async function createGameLiftObject()
{
    var gamelift = new AWS.GameLiftClient(
        {endpoint : 'http://localhost:9080',
        accessKeyId :'abcde',
        secretAccessKey:'abcde',
        region:'us-west-2'});
    
    const input = {
        FleetId : 'fleet-123d'
    };
    
    const command = new AWS.DescribeGameSessionDetailsCommand(input);
    const response = await gamelift.send(command);
    console.log(response);
}

webpackでパックする

webpack.config.js

// Import path for resolving file paths
var path = require("path");
module.exports = {
  // Specify the entry point for our app.
  entry: [path.join(__dirname, "index.js")],
  // Specify the output file containing our bundled code.
  output: {
    path: __dirname,
    filename: 'bundle.js',
    library: 'myLibrary'
  },
  optimization: {
    minimize: false
},
   // Enable WebPack to use the 'path' package.
   resolve:{
  fallback: { path: require.resolve("path-browserify")}
  }
  /**
  * In Webpack version v2.0.0 and earlier, you must tell 
  * webpack how to use "json-loader" to load 'json' files.
  * To do this Enter 'npm --save-dev install json-loader' at the 
  * command line to install the "json-loader' package, and include the 
  * following entry in your webpack.config.js.
  * module: {
    rules: [{test: /\.json$/, use: use: "json-loader"}]
  }
  **/
};

bundle.js を生成し、ブラウザー ベースの HTML ファイルにロードして、動作するかどうかをテストします。

<html>
<head>
    <title>Templated client</title>
<script src="./bundle.js"></script> <!--<script type="module" lang="javascript">-->
<script>
      var gamelift = myLibrary.createGameLiftObject();
     
    </script>
</head>
<body>

</body>
</html>

エラーが発生しています

Uncaught (in promise) Error: Credential is missing
    at SignatureV4.tslib_es6_assign.credentialDefaultProvider [as credentialProvider] (uint32ArrayFrom.ts:16:2)
    at SignatureV4.<anonymous> (uint32ArrayFrom.ts:16:2)
    at step (uint32ArrayFrom.ts:16:2)
    at Object.next (uint32ArrayFrom.ts:16:2)
    at uint32ArrayFrom.ts:16:2
    at new Promise (<anonymous>)
    at tslib_es6_awaiter (uint32ArrayFrom.ts:16:2)
    at SignatureV4.signRequest (uint32ArrayFrom.ts:16:2)
    at SignatureV4.<anonymous> (uint32ArrayFrom.ts:16:2)
    at step (uint32ArrayFrom.ts:16:2)

問題は、スタンドアロンの nodejs として実行すると、同じ一連の呼び出しで機能することです。何が足りないの

コンテキスト: GameLift_06_03_2021 の一部であるローカル テスト ネットワーク GameLiftLocal-1.0.5 を使用しています。

SDK が壊れていますか?

更新: このような資格情報を使用するように実装を変更しました

const credentials = {
        accessKeyId :'abcde',
        secretAccessKey:'abcde',
        };

    const gamelift = new AWS.GameLiftClient({
        endpoint : 'http://localhost:9080',
        credentials,
        region:'us-west-2'
    });

そして今、エラーは

Failed to load resource: net::ERR_EMPTY_RESPONSE
uint32ArrayFrom.ts:16 TypeError: Failed to fetch
    at FetchHttpHandler.<anonymous> (bundle.js:5442:29)
    at step (bundle.js:2204:23)
    at Object.next (bundle.js:2185:53)
    at fulfilled (bundle.js:2175:58)

ゲームリフト用のAWS javascript SDK V3が機能しないか、ブラウザをサポートしていないと思い始めています。

4

0 に答える 0