負荷テストツール k6 で Amazon Cognito の Access Token を取得する module サンプルコード
負荷テストツール k6 にて Amazon Cognito の Access Token を取得する module サンプルコードをご紹介します。
負荷テストツール k6 で負荷テストのメイン処理の前処理/後処理はそれぞれ export function setup()
, export function teardown()
でおこなうようです。
? 参考: Test lifecycle
.envrc
export AWS_COGNITO_CLIENT_ID=
export AWS_COGNITO_USERNAME=
export AWS_COGNITO_PASSWORD=
export MY_K6_BASE_URL=http://localhost:3000
auth_cognito.js
import http from 'k6/http';
export function auth() {
const headers = {
'x-amz-target': 'AWSCognitoIdentityProviderService.InitiateAuth',
'content-type': 'application/x-amz-json-1.1',
};
const res = http.post('https://cognito-idp.ap-northeast-1.amazonaws.com/',
JSON.stringify({
AuthFlow: 'USER_PASSWORD_AUTH',
ClientId: `${__ENV.AWS_COGNITO_CLIENT_ID}`,
AuthParameters: {
USERNAME: `${__ENV.AWS_COGNITO_USERNAME}`,
PASSWORD: `${__ENV.AWS_COGNITO_PASSWORD}`
},
ClientMetadata: {}
}), {
headers: headers,
});
const resJson = JSON.parse(res.body);
return resJson.AuthenticationResult.AccessToken;
}
import http from 'k6/http';
import { auth } from './auth_cognito.js';
export function setup() {
console.log('setup');
return auth();
}
export default function (accessToken) {
const query = `
query viewer {
login
}
`;
const headers = {
'Authorization': `Bearer ${accessToken}`,
'Content-Type': 'application/json',
};
const res = http.post(`${__ENV.MY_K6_BASE_URL}/graphql`,
JSON.stringify({
query: query,
}), {
headers: headers,
});
console.log(JSON.parse(res.body));
}
export function teardown(data) {
console.log('teardown');
}
以上、負荷テストツール k6 にて Amazon Cognito の Access Token を取得する module を作成した、現場からお送りしました。