ブラウザで 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が機能しないか、ブラウザをサポートしていないと思い始めています。