Aku sudah terlalu lama terjebak di sini. Bagaimana cara mengaktifkan Kunci API untuk metode REST tertentu menggunakan aws-sdk? Saya dapat mengaktifkannya menggunakan konsol, tetapi tidak menemukan metode untuk mencapai ini menggunakan nodejs SDK. Jadi pada dasarnya ingin mengatur kunci rahasia untuk API Endpoint + Resource + Method yang ditentukan.

Dalam cuplikan berikut, saya mengaktifkan kunci-api yang diperlukan untuk true dari konsol.

enter image description here

Dokumen yang dirujuk: AWS Nodejs Doc

Inilah yang dapat saya lakukan sejauh ini:

    // CREATE API KEY
    async function create() {
    try {
        const apiKey = await apigateway.createApiKeyAsync({
            enabled: true,
            generateDistinctId: true,
            name: NAME_OF_KEY
        });

        /**
         * @see https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/APIGateway.html#createUsagePlan-property
         */
        // CREATE USAGE PLAN AND LINK API
        const usagePlan = await apigateway.createUsagePlanAsync({
            name: NAME_OF_USAGE_PLAN,
            apiStages: [
                {
                    apiId: API_ID,
                    stage: STAGE
                },
                /* more items */
            ],
            quota: QUOTA_INFO,
            throttle: THROTTLE_INFO
        });

        /**
         * Creates a usage plan key for adding an existing API key to a usage plan.
         */
        // LINK API KEY AND USAGE PLAN
        await apigateway.createUsagePlanKeyAsync({
            keyId: apiKey.id,
            keyType: 'API_KEY',
            usagePlanId: usagePlan.id
        });

        return Promise.resolve(apiKey);
    } catch (err) {
        return Promise.reject(err);
    }
}
1
Suhail Gupta 12 Januari 2018, 21:27

1 menjawab

Jawaban Terbaik

Anda perlu memanggil fungsi updateMethod untuk memperbarui permintaan metode Anda:

Referensi: Kelas: AWS .APIGateway

var params = {
  httpMethod: 'STRING_VALUE', /* required */
  resourceId: 'STRING_VALUE', /* required */
  restApiId: 'STRING_VALUE', /* required */
  patchOperations: [
    {
      from: 'STRING_VALUE',
      op: add | remove | replace | move | copy | test,
      path: 'STRING_VALUE',
      value: 'STRING_VALUE'
    },
    /* more items */
  ]
};
apigateway.updateMethod(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

Agar Anda dapat melakukan hal berikut:

var apigateway = new AWS.APIGateway({apiVersion: '2015-07-09'});

var params = {
  httpMethod: 'POST',
  resourceId: 'resource id',
  restApiId: API_ID,
  patchOperations: [
    {
      op: 'replace',
      path: '/apiKeyRequired',
      value: 'true' || 'false'
    },
  ]
};

apigateway.updateMethod(params, function(err, data) {
  if (err) cb(err, err.stack); // an error occurred
  else     cb(null, data);           // successful response
});

Semoga membantu!

1
Ele 12 Januari 2018, 19:12