AWS SDKからSwaggerJS(したがってSwaggerUI)に簡単に署名することができます。 here
私はわずかに変更されたSwaggerUI hereを持っています。いくつかのAWSの資格情報とAPIのIDが与えられ、それは、闊歩定義をプルダウンしますSwaggerUIでそれを表示し、あなたはsigv4を使用してAPIを呼び出すことができます。
オーソの実装は次のようになります。
var AWSSigv4RequestSigner = function(credentialProvider, aws) {
this.name = "sigv4";
this.aws = aws;
this.credentialProvider = credentialProvider;
};
AWSSigv4RequestSigner.prototype.apply = function(options, authorizations) {
var serviceName = "execute-api";
//If we are loading the definition itself, then we need to sign for apigateway.
if (options && options.url.indexOf("apigateway") >= 0) {
serviceName = "apigateway";
}
if(serviceName == "apigateway" || (options.operation && options.operation.authorizations && options.operation.authorizations[0].sigv4))
{
/**
* All of the below is an adapter to get this thing into the right form for the AWS JS SDK Signer
*/
var parts = options.url.split('?');
var host = parts[0].substr(8, parts[0].indexOf("/", 8) - 8);
var path = parts[0].substr(parts[0].indexOf("/", 8));
var querystring = parts[1];
var now = new Date();
if (!options.headers)
{
options.headers = [];
}
options.headers.host = host;
if(serviceName == "apigateway")
{
//For the swagger endpoint, apigateway is strict about content-type
options.headers.accept = "application/json";
}
options.pathname = function() {
return path;
};
options.methodIndex = options.method;
options.search = function() {
return querystring ? querystring : "";
};
options.region = this.aws.config.region || 'us-east-1';
//AWS uses CAPS for method names, but swagger does not.
options.method = options.methodIndex.toUpperCase();
var signer = new this.aws.Signers.V4(options, serviceName);
//Actually add the Authorization header here
signer.addAuthorization(this.credentialProvider, now);
//SwaggerJS/yourbrowser complains if these are still around
delete options.search;
delete options.pathname;
delete options.headers.host;
return true;
}
return false;
};
私たちは、APIを定義するためにAPIゲートウェイと同様に闊歩を使用していても威張っ-コード生成を使用してJS SDKを生成するために、両方の方法を把握しようとしています(APIゲートウェイのコンソールには、テンプレート付きコードにsigv4コードを含むカスタムテンプレートやテンプレートがあります)、そのsigv4追加ソースをSwagger docsのJSコードに埋め込みます: 'ApiClient.js' on' applyAuthToRequest' switch case 。 –
私は、swagger doc生成ツールは、別のマークアップ、スクリプトなどで出力をカスタマイズするために追加の(つまり:口ひげ)テンプレートを有効にするswagger codegenと同様の方法で動作すると思いますか?一つの選択肢を推測 –
は '威張っ-ui'(https://github.com/swagger-api/swagger-ui)をフォークし、そこに同じsigv4の魔法を含めることでしょうか? –