অ্যামাজন এপিআই গেটওয়ে থেকে কীভাবে কোনও ক্যুরিস্ট্রিং বা রুট পরামিতি এডাব্লুএস ল্যাম্বডায় পাস করবেন


348

উদাহরণস্বরূপ যদি আমরা ব্যবহার করতে চাই

GET /user?name=bob

অথবা

GET /user/bob

এই দুটি উদাহরণকে ল্যাম্বদা ফাংশনের প্যারামিটার হিসাবে আপনি কীভাবে পাস করবেন?

ডকুমেন্টেশনে একটি "ম্যাপ করা" সেট করার বিষয়ে আমি কিছু দেখেছি, তবে আমি এপিআই গেটওয়ে কনসোলটিতে সেটিংটি খুঁজে পাচ্ছি না।

  • method.request.path.parameter-nameparameter-nameপদ্ধতি অনুরোধ পৃষ্ঠাতে সংজ্ঞায়িত হিসাবে চিহ্নিত একটি পাথ প্যারামিটারের জন্য ।
  • method.request.querystring.parameter-nameparameter-nameপদ্ধতি অনুরোধ পৃষ্ঠাতে সংজ্ঞায়িত হিসাবে নামকৃত একটি ক্যোরিয় স্ট্রিং পরামিতির জন্য ।

আমি কোয়েরি স্ট্রিং সংজ্ঞায়িত করেও আমি এই বিকল্পগুলির কোনওটিই দেখতে পাচ্ছি না।

উত্তর:


298

সেপ্টেম্বর 2017 পর্যন্ত, আপনাকে আর অনুরোধের বডিটি অ্যাক্সেস করতে ম্যাপিং কনফিগার করতে হবে না।

আপনার যা করতে হবে তা হ'ল সংস্থান অনুরোধের অধীনে, সংস্থার অধীনে "ল্যাম্বদা প্রক্সি ইন্টিগ্রেশন ব্যবহার করুন" যাচাই করা দরকার।

এখানে চিত্র বর্ণনা লিখুন

এরপরে আপনি ক্যোয়ারি প্যারামিটারগুলি, পাথ প্যারামিটারগুলি এবং এর মতো শিরোনাম অ্যাক্সেস করতে সক্ষম হবেন

event['pathParameters']['param1']
event["queryStringParameters"]['queryparam1']
event['requestContext']['identity']['userAgent']
event['requestContext']['identity']['sourceIP']

23
এটি একটি মহান টিপ। তবে, মনে রাখবেন যে ল্যাম্বদা প্রক্সি ইন্টিগ্রেশনটি চালু করার ফলে একটি "ত্রুটিযুক্ত ল্যাম্বদা প্রক্সি প্রতিক্রিয়া" ত্রুটি হতে পারে। এখানে কিভাবে এটা ঠিক করতে stackoverflow.com/questions/43708017/...
AaronBaker

5
জাভাতে এটি করার কোনও উপায় আছে, যখন স্বচ্ছ deserialization যে বাস্তবায়ন RequestHandlerকরে?
জুতো

2
এই সেটিংটি কোথায়?
red888

2
@ ম্যাটওয়েস্টলেক আপনি ব্যবহারকারী নামে একটি সংস্থান তৈরি করেছেন এবং এর অধীনে এপিআই গেটওয়েতে {নাম called নামে একটি সংস্থান রয়েছে।
জোনাথন

3
আমি কেবল উল্লেখ করতে চাই যে এই পরিবর্তনের পরে আমাকে অ্যামাজন এপিআই গেটওয়ে -> ক্রিয়া -> এপিআই ডিপ্লোয় করতে হবে এবং লাইভ পরিবেশে পুনরায় স্থাপন করতে হবে।
ভিক্টোরভার্টন

221

এই কাজ করার পদক্ষেপগুলি হ'ল:

এপিআই গেটওয়ে কনসোলের মধ্যে ...

  1. যাও Resources -> Integration Request
  2. টেমপ্লেটগুলি ড্রপডাউনের পাশের প্লাস বা সম্পাদনা আইকনটিতে ক্লিক করুন (আমি জানি যেহেতু টেমপ্লেট ক্ষেত্রটি ইতিমধ্যে খোলা আছে এবং এখানকার বোতামটি ধুসর দেখায়)
  3. স্পষ্টভাবে application/jsonকন্টেন্ট-টাইপ ক্ষেত্রে টাইপ করুন যদিও এটি একটি ডিফল্ট দেখায় (আপনি এটি না করলে এটি সংরক্ষণ করবে না এবং আপনাকে একটি ত্রুটি বার্তা দেবে না)
  4. এটি ইনপুট ম্যাপিংয়ে রাখুন { "name": "$input.params('name')" }

  5. টেমপ্লেটগুলি ড্রপডাউনের পাশের চেক বাক্সে ক্লিক করুন (আমি ধরে নিচ্ছি এটি এটিই শেষ পর্যন্ত সংরক্ষণ করে)


9
আপনি কি কখনই ইউআরএল পরামিতিগুলির মাধ্যমে / ব্যবহারকারী / বব-এর মতো ইউআরএলগুলিতে পাঠানোর জন্য পেয়েছেন যেখানে রুটটি ছিল / ব্যবহারকারী / {ব্যবহারকারী নাম}? আমি সব ধরণের অনুমতি দেওয়ার চেষ্টা করেছি, তবে এটি কার্যকর করতে পারিনি।
লুকাস

5
অফিসিয়াল ডকুমেন্টেশন আছে কি কেউ জানেন? খালি স্ট্রিংয়ের চেয়ে কেবল সমস্ত ক্যোয়ারী প্যারামিটারগুলির মধ্য দিয়ে যেতে বা
graceচ্ছিক

6
আইওএস বিকাশকারীদের জন্য একটি পরামর্শ: এপিআই গেটওয়ে আপনি প্রতিটি ভেরিয়েবলকে ক্যোরি স্ট্রিং হিসাবে ব্যাখ্যা না করে ('পদ্ধতি অনুরোধের আওতায়') এবং এপিআই মোতায়েন করবেন না query স্থাপনার আগ পর্যন্ত এটি কনসোল পরীক্ষা থেকে কাজ করে, তবে অ্যাপ্লিকেশনগুলির অনুসন্ধানগুলি থেকে কেটে দেয়।
আলেক্সিভিএমপি

3
@ ফ্যাক্স এখানে ডকুমেন্টেড করেছেন: ডকসস.এওএস.আমজোন.com
apigateway

6
লুকাস, আমি এটি ব্যবহারকারীর / {ব্যবহারকারীর নাম} প্যাটার্নটি ব্যবহার করে কাজ করতে পেরেছি। আপনার জিইটি রিসোর্স পাথটি যদি / ব্যবহারকারীর / {ব্যবহারকারী নাম is হয় তবে 4 ধাপে ইনপুট ম্যাপিংটি এই {"নাম": "$ ইনপুট.প্রেমস ('ব্যবহারকারীর নাম')" Ge
জেরার্ড

134

আমি এই ম্যাপিং টেম্পলেটটি লাম্বদা ইভেন্টে বডি, শিরোনাম, পদ্ধতি, পাথ এবং URL টি কোয়েরি স্ট্রিং প্যারামিটার সরবরাহ করতে ব্যবহার করেছি। আমি টেমপ্লেটটি আরও বিশদে ব্যাখ্যা করে একটি ব্লগ পোস্ট লিখেছি: http://kennbrodhagen.net/2015/12/06/how-to-create-a-request-object-for-your-lambda-event-from-api- প্রবেশপথ/

আপনি যে ম্যাপিং টেম্পলেটটি ব্যবহার করতে পারেন তা এখানে:

{
  "method": "$context.httpMethod",
  "body" : $input.json('$'),
  "headers": {
    #foreach($param in $input.params().header.keySet())
    "$param": "$util.escapeJavaScript($input.params().header.get($param))" #if($foreach.hasNext),#end

    #end
  },
  "queryParams": {
    #foreach($param in $input.params().querystring.keySet())
    "$param": "$util.escapeJavaScript($input.params().querystring.get($param))" #if($foreach.hasNext),#end

    #end
  },
  "pathParams": {
    #foreach($param in $input.params().path.keySet())
    "$param": "$util.escapeJavaScript($input.params().path.get($param))" #if($foreach.hasNext),#end

    #end
  }  
}

অ্যামেজিং! আমি আমার হ্যান্ডলারের কাছে সাধারণভাবে জিনিসগুলি দিয়ে যাওয়ার সাথে লড়াই করছিলাম। এখানে সেরা উত্তর।
ভেঙ্কট ডি

আমি এটি করেছি, তবে আমি এখনও কিছুই পাচ্ছি না। এটি প্রদর্শিত হচ্ছে আমরা কীভাবে ইউআরএলে প্যারামিটারগুলি প্রেরণ করব? এবং আমাদের কি সাধারণ জিইটি ইউআরএল দৃশ্যের মতো ইউআরএলটিতে পরিবর্তনশীল নাম উল্লেখ করা দরকার? এই আমাকে সাহায্য করুন।
পার্থপ্রতিম নিওগ

8
কিছু মনে নেই আমি ফলাফল পেয়েছি। সমস্যাটি ছিল, আমি ম্যাপিংটি যুক্ত করে কেবল এটি সংরক্ষণ করেছিলাম এবং আর deployএকবার এপিআই করিনি । আমি একবার নতুন ম্যাপিংয়ের সাথে এপিআই মোতায়েন করেছি, এটি ঠিক কাজ করেছে। অসংখ্য ধন্যবাদ.
পার্থপ্রতিম নিওগ

@ shashu10 আমার উত্তর দেখুন
ম্যাটসেভ

1
আপনার ব্লগটি কতটা দরকারী তা আমি আপনাকে বলতে শুরু করতে পারি না। আমি "eturn-html-from-aws-api-gwayway" পোস্টটি প্রথম খুঁজে পেয়েছি এবং এটি অনুসরণ করেছি, কারণ এটি আমার প্রয়োজন ঠিক তাই। এখন আমাকে ফাংশনে কিছু পরামিতিগুলি পাস করতে হবে এবং তার উপর ভিত্তি করে এইচটিএমএল সংশোধন করতে হবে - এবং আবারও আপনি সত্যিকারের গাইড সহ একমাত্র! অন্য যে সমস্ত গাইড আমি খুঁজে পেয়েছি সেগুলি পয়েন্টটি মিস করবে বলে মনে হচ্ছে।
ব্যবহারকারী3685427

41

এই দিনগুলিতে একটি ড্রপ-ডাউন টেম্পলেট এডাব্লুএস-এর এপিআই গেটওয়ে কনসোলে অন্তর্ভুক্ত রয়েছে।

আপনার এপিআই এর জন্য, সংস্থানটির নামে ক্লিক করুন ... তারপরে জিইটি করুন

"বডি ম্যাপিং টেম্পলেটগুলি" প্রসারিত করুন

টাইপ করুন

আবেদন / JSON

সামগ্রী-প্রকারের জন্য (অবশ্যই স্পষ্টভাবে টাইপ করতে হবে) এবং টিক ক্লিক করুন

"টেমপ্লেট উত্পন্ন করুন" এবং একটি ড্রপডাউন (চিত্র দেখুন) শব্দগুলি সহ একটি নতুন উইন্ডো খুলবে।

নির্বাচন করা

পদ্ধতি অনুরোধ পাসথ্রু

এখানে চিত্র বর্ণনা লিখুন

তারপরে সেভ ক্লিক করুন

যে কোনও ভেরিয়েবল অ্যাক্সেস করতে, কেবলমাত্র নিম্নলিখিত সিনট্যাক্সটি (এটি পাইথন) যেমন URL টি ব্যবহার করুন:

https://yourURL.execute-api.us-west-2.amazonaws.com/prod/confirmReg?token=12345&uid=5

আপনি নিম্নলিখিত হিসাবে ভেরিয়েবল পেতে পারেন:

from __future__ import print_function

import boto3
import json

print('Loading function')


def lambda_handler(event, context):
    print(event['params']['querystring']['token'])
    print(event['params']['querystring']['uid'])

সুতরাং আপনার পছন্দসই প্রতিটি পরিবর্তনশীলকে স্পষ্টভাবে নামকরণ বা মানচিত্রের প্রয়োজন নেই।


চমৎকার! কার্যকারিতা ঠিক পরিষেবাটিতে আছে তবে এটি মিস হয়ে গিয়েছিল!
hnvasa

25

আপনার ল্যাম্বদা ফাংশনে প্যারামিটারগুলি পাস করার জন্য আপনাকে এপিআই গেটওয়ে অনুরোধ এবং আপনার ল্যাম্বদা ফাংশনের মধ্যে একটি ম্যাপিং তৈরি করতে হবে। ম্যাপিংটি নির্বাচিত এপিআই গেটওয়ে সংস্থার Integration Request-> Mapping templatesবিভাগে করা হয়।

প্রকারের ম্যাপিং তৈরি করুন application/json, তারপরে ডানদিকে আপনি টেমপ্লেটটি সম্পাদন করবেন (পেন্সিল ক্লিক করুন)।

একটি ম্যাপিং টেমপ্লেট আসলে একটি वेग টেম্পলেট যেখানে আপনি এটি, লুপ এবং অবশ্যই এতে মুদ্রণের ভেরিয়েবল ব্যবহার করতে পারেন। টেমপ্লেটে এই ভেরিয়েবলগুলি ইনজেকশন দেওয়া আছে যেখানে আপনি পৃথকভাবে ক্যোরিস্ট্রিং প্যারামিটারগুলি, অনুরোধ শিরোনাম ইত্যাদি অ্যাক্সেস করতে পারেন। নিম্নলিখিত কোডের সাহায্যে আপনি পুরো ক্যোরিস্ট্রিংটি পুনরায় তৈরি করতে পারবেন:

{
    "querystring" : "#foreach($key in $input.params().querystring.keySet())#if($foreach.index > 0)&#end$util.urlEncode($key)=$util.urlEncode($input.params().querystring.get($key))#end",
    "body" : $input.json('$')
}

দ্রষ্টব্য: টেমপ্লেটটি সংরক্ষণ করতে চেক প্রতীকটিতে ক্লিক করুন। আপনি আপনার সংস্থানগুলিতে "পরীক্ষা" বোতামের সাহায্যে আপনার পরিবর্তনগুলি পরীক্ষা করতে পারেন। তবে এডাব্লুএস কনসোলে ক্যোরিস্ট্রিং প্যারামিটারগুলি পরীক্ষা করার জন্য Method Requestআপনার সংস্থান বিভাগের প্যারামিটারের নামগুলি সংজ্ঞায়িত করতে হবে ।

দ্রষ্টব্য: বেগটি টেম্প্লেটিং ভাষা সম্পর্কে আরও তথ্যের জন্য वेग ব্যবহারকারী ব্যবহারকারী চেক করুন check

তারপরে আপনার ল্যাম্বদা টেমপ্লেটে আপনি ক্যোরিস্ট্রিংটিকে পার্স করার জন্য নিম্নলিখিতটি করতে পারেন:

var query = require('querystring').parse(event.querystring)
// access parameters with query['foo'] or query.foo

9
এটিই সেরা সমাধান। দয়া করে মনে রাখবেন Actions>Deploy API(আমি এটি ভুলে আমার সময় নষ্ট করেছি ...)। সম্পর্কিত লাম্বদা আরন মোতায়েনের পরপরই পরিবর্তনটি গ্রহণ করবে। আপনি এটি পরীক্ষা করতে পারেন Stages > #stage (like: prod) > Deployment History
loretoparisi

24

গৃহীত উত্তরটি আমার পক্ষে ভাল কাজ করেছে, তবে গিমিনেটের উত্তরের উপর প্রসারিত হয়ে আমি একটি জেনেরিক টেম্পলেট চেয়েছিলাম যা আমি সমস্ত ক্যোয়ারী / পাথ / শিরোলেখের প্যারামগুলি দিয়ে যেতে পারি (কেবল এখনকার স্ট্রিং হিসাবে), এবং আমি নিম্নলিখিত টেম্পলেটটি নিয়ে এসেছি। কেউ যদি এটির কাজে লাগে তবে আমি এটি এখানে পোস্ট করছি:

#set($keys = [])
#foreach($key in $input.params().querystring.keySet())
  #set($success = $keys.add($key))
#end

#foreach($key in $input.params().headers.keySet())
  #if(!$keys.contains($key))
    #set($success = $keys.add($key))
  #end
#end

#foreach($key in $input.params().path.keySet())
  #if(!$keys.contains($key))
    #set($success = $keys.add($key))
  #end
#end

{
#foreach($key in $keys)
  "$key": "$util.escapeJavaScript($input.params($key))"#if($foreach.hasNext),#end
#end
}

1
ফ্যাব, আমি উভয় পোষ্ট (জেএসওএন বডি সহ) অনুরোধগুলির জন্য একই ফাংশনটি ব্যবহার করতে সক্ষম হয়েছি এবং কোয়েরি স্ট্রিং সহ জিইটি পেতে পারি। একটি স্বপ্ন কাজ করে। ধন্যবাদ!
ম্যাট ফ্লেচার

@ বেভ এই পুরো টেম্পলেট কি?
এনএক্সমোহামাদ

17

এখানে আমার নিজের একটি প্রশ্নের উত্তর দেওয়ার চেষ্টা করার অংশ হিসাবে , আমি এই কৌশলটি পেরেছি।

এপিআই গেটওয়ে ম্যাপিং টেমপ্লেটে, এইচটিটিপি ক্লায়েন্টের পাঠানো অনুসারে আপনাকে সম্পূর্ণ কোয়েরি স্ট্রিং দেওয়ার জন্য নিম্নলিখিতটি ব্যবহার করুন:

{
    "querystring": "$input.params().querystring"
}

সুবিধাটি হ'ল আপনাকে নিজের ক্যোয়ারী স্ট্রিংয়ের পূর্বনির্ধারিত ম্যাপ করা কীগুলির সেটগুলিতে নিজেকে সীমাবদ্ধ করতে হবে না। আপনি যদি এইভাবে হ্যান্ডেল করতে চান তবে এখন আপনি কোয়েরি স্ট্রিংয়ের যে কোনও কী-মান জোড়াকে গ্রহণ করতে পারবেন।

নোট: মতে এই মাত্র $input.params(x)একটি পরিবর্তনশীল VTL টেমপ্লেট জন্য উপলব্ধ করা তালিকাভুক্ত করা হয়। এটা সম্ভব যে অভ্যন্তরগুলি পরিবর্তন হতে পারে এবং querystringএটি আর উপলভ্য নাও হতে পারে।


1
এটি এখনও ২০১ 2017 সালের মে হিসাবে কাজ করে তবে এটি জেএস অবজেক্টটি ফিরিয়ে দেয় যা সত্যিকারের ক্যোয়ারী স্ট্রিংয়ের পরিবর্তে এপিআই গেটওয়ে আপনার জন্য তৈরি করে। এটি আমার জন্য বিরক্তিকর কারণ আমি পুনরাবৃত্ত প্যারামগুলিকে একটি অ্যারে রূপান্তর করতে কোয়েরি স্ট্রিংকে বিশ্লেষণের চেষ্টা করছি।
টম সালেবা

11

ম্যাপিংগুলি কনফিগার করার পরিবর্তে ল্যাম্বডায় স্বয়ংক্রিয়ভাবে সম্পূর্ণ অনুরোধটি স্ট্যান্ডার্ড আকারে পাওয়ার জন্য আপনার নতুন প্রক্সি ইন্টিগ্রেশন প্রকারটি ব্যবহার করতে সক্ষম হওয়া উচিত।

দেখুন: http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-set-up-simple-proxy.html#api-gateway-set-up-lambda-proxy-integration-on- প্রক্সি-সম্পদ


1
আমি নিশ্চিত না কেন, তবে প্রক্সি সংহতটি সাধারণত আমার পক্ষে কাজ করে না। আমার তৈরি সর্বশেষ APIs থেকে আমাকে এটি সরিয়ে ফেলতে হয়েছিল।
গুস্তাভো স্ট্রুব

একই ^ তাছাড়া এপিআই গেটওয়েতে আমার কাছে সিওআরএস সমস্যা ছিল। এডাব্লুএস ডক্সের সাথে অনুসরণ করে আমি সিওআরএস কাজ করতে সক্ষম হইনি। তবে আমি ২০১৫ এর মাঝামাঝি থেকে একটি পুরাতন মাঝারি নিবন্ধটি পেয়েছি যার মধ্যে সিওআরএস স্থাপনের ম্যানুয়াল পদ্ধতি ছিল এবং এটি কার্যকর।
স্টিফেন টেট্রোল্ট


5

এখানে প্রচুর উত্তর দুর্দান্ত। তবে আমি কিছুটা সহজ সরল চাইছিলাম। আমি এমন কিছু চাইছিলাম যা বিনামূল্যে "হ্যালো ওয়ার্ল্ড" নমুনা নিয়ে কাজ করবে। এর অর্থ আমি একটি সরল একটি অনুরোধের বডি তৈরি করতে চেয়েছিলাম যা ক্যোয়ারী স্ট্রিংয়ের সাথে মেলে:

{
#foreach($param in $input.params().querystring.keySet())
  "$param": "$util.escapeJavaScript($input.params().querystring.get($param))" #if($foreach.hasNext),#end
#end
}

আমি মনে করি সত্যিকারের কিছু তৈরি করার সময় শীর্ষের উত্তরটি আরও কিছু কার্যকর উপস্থাপন করে, তবে এডাব্লুএস থেকে টেমপ্লেট ব্যবহার করে দ্রুত হ্যালো ওয়ার্ল্ড চালানোর জন্য এটি দুর্দান্ত কাজ করে।


4

নিম্নলিখিত প্যারামিটার-ম্যাপিং উদাহরণটি JSON পেইড লোডের মাধ্যমে ইন্টিগ্রেশন শেষ পয়েন্টে পথ, ক্যোরিস্ট্রিং এবং শিরোলেখ সহ সমস্ত পরামিতিগুলি পাস করে

#set($allParams = $input.params())
{
  "params" : {
    #foreach($type in $allParams.keySet())
    #set($params = $allParams.get($type))
    "$type" : {
      #foreach($paramName in $params.keySet())
      "$paramName" : "$util.escapeJavaScript($params.get($paramName))"
      #if($foreach.hasNext),#end
      #end
    }
    #if($foreach.hasNext),#end
    #end
  }
}

কার্যতঃ, এই ম্যাপিং টেম্পলেটটি নীচের হিসাবে উল্লিখিত রূপরেখার মধ্যে সমস্ত অনুরোধ পরামিতিগুলি আউটপুট করে:

{
  "parameters" : {
     "path" : {    
       "path_name" : "path_value", 
       ...
     }
     "header" : {  
       "header_name" : "header_value",
       ...
     }
     'querystring" : {
       "querystring_name" : "querystring_value",
       ...
     }
   }
}

আমাজন এপিআই গেটওয়ে বিকাশকারী গাইড থেকে অনুলিপি করা হয়েছে


2

ল্যাম্বডায় জাভাস্ক্রিপ্টে পার্স করার জন্য ক্যোরিয় স্ট্রিংটি সরাসরি এগিয়ে রয়েছে

জিইটি / ব্যবহারকারীর জন্য? নাম = বব

 var name = event.params.querystring.name;

এটি যদিও জিইটি ব্যবহারকারী / বব প্রশ্নের সমাধান করবে না।


এর ইভেন্ট.ক্যুরি স্ট্রিংপ্যারামিটার.নাম
নিও

আমাকে করতে হয়েছিলevent.queryStringParameters.name
অ্যান্ডারস কিটসন

2

হিসাবে @ যোনাথনের উত্তর, চিহ্নটির পর ব্যবহারের ল্যামডা প্রক্সি ইন্টিগ্রেশন মধ্যে ইন্টিগ্রেশন অনুরোধ , আপনার সোর্স কোডে আপনি বিন্যাস নিচে হিসাবে পাস দ্বারা বাস্তবায়ন করা উচিত 502 Bad Gateway এ ত্রুটি।

নোডজেএস 8.10:

exports.handler = async (event, context, callback) => {
  // TODO: You could get path, parameter, headers, body value from this
  const { path, queryStringParameters, headers, body } = event;

  const response = {
    "statusCode": 200,
    "headers": {
      "Content-Type": "application/json"
    },
    "body": JSON.stringify({
      path, 
      query: queryStringParameters,
      headers,
      body: JSON.parse(body)
    }),
    "isBase64Encoded": false
  };

  return response;
};

আপনার এপিআই পুনরায় চালানোর আগে এপিআই গেটওয়েতে আপনার সংস্থান স্থাপন করুন ভুলবেন না । প্রতিক্রিয়া জেএসওএন কেবল ফিরে আসবে যা দেহের মধ্যে সেটগুলি সঠিক। সুতরাং, আপনি ইভেন্ট থেকে পথ, পরামিতি, শিরোনাম, শরীরে মান পেতে পারেন

কনস্ট {পাথ, কোয়েরিস্ট্রিংপ্যারামিটার, শিরোনাম, বডি event = ইভেন্ট;


1

লাম্বদা ফাংশনটি JSON ইনপুটটি প্রত্যাশা করে, সুতরাং কোয়েরি স্ট্রিংকে বিশ্লেষণ করা প্রয়োজন। সমাধানটি হ'ল ম্যাপিং টেমপ্লেটটি ব্যবহার করে ক্যোরির স্ট্রিংটি JSON এ পরিবর্তন করা।
আমি এটি সি #। নেট কোরের জন্য ব্যবহার করেছি, সুতরাং প্রত্যাশিত ইনপুটটি "ক্যোরিস্ট্রিংপ্যারামিটারগুলি" পরামিতি সহ একটি জেএসএন হওয়া উচিত।
এটি অর্জনের জন্য নীচে এই 4 টি পদক্ষেপ অনুসরণ করুন:

  1. আপনার এপিআই গেটওয়ে সংস্থানটির ম্যাপিং টেম্পলেটটি খুলুন এবং নতুন application/jsonসামগ্রী-টাইপ যুক্ত করুন:

এপিআই গেটওয়ে ম্যাপিং টেম্পলেট

  1. নীচের টেমপ্লেটটি অনুলিপি করুন, যা জেএসএনে কোয়েরি স্ট্রিংটিকে বিশ্লেষণ করে ম্যাপিং টেমপ্লেটে আটকান:

    {
    "queryStringParameters": {#foreach($key in $input.params().querystring.keySet())#if($foreach.index > 0),#end"$key":"$input.params().querystring.get($key)"#end}
    }
    
  2. এপিআই গেটওয়েতে, আপনার ল্যাম্বদা ফাংশনটি কল করুন এবং নীচের ক্যোয়ারী স্ট্রিং যুক্ত করুন (উদাহরণস্বরূপ): param1=111&param2=222&param3=333

  3. ম্যাপিং টেমপ্লেটটি নীচে JSON আউটপুট তৈরি করা উচিত যা আপনার লাম্বদা ফাংশনের জন্য ইনপুট

    {
    "queryStringParameters": {"param3":"333","param1":"111","param2":"222"}
    }
    
  4. তুমি করেছ. এই জায়গা থেকে আপনার ল্যাম্বদা ফাংশনের যুক্তি কোয়েরি স্ট্রিং পরামিতি ব্যবহার করতে পারে।
    শুভকামনা!


0

আপনি ল্যাম্বডাকে "ল্যাম্বডা প্রক্সি ইন্টিগ্রেশন" হিসাবে ব্যবহার করতে পারেন , এটি [ https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-create-api-as-simple-proxy- for-lambda- এ রেফার করুন । এইচটিএমএল # এপি-গেটওয়ে-প্রক্সি-ইন্টিগ্রেশন-ল্যাম্বদা-ফাংশন-পাইথন] , এই ল্যাম্বডায় উপলভ্য অপশনগুলি

নোডেজ ল্যাম্বদা 'ইভেন্ট.হেডার্স', 'ইভেন্ট.পথপ্যারামিটারস', 'ইভেন্ট.বিডি', 'ইভেন্ট.স্টেজভেরিয়েবলস', এবং 'ইভেন্ট.রেইকস্টেক্সটেক্সটেক্সট' এর জন্য

পাইথন ল্যাম্বদা ইভেন্টের জন্য ['শিরোনাম'] ['প্যারামিটারনেম'] এবং আরও অনেক কিছু



-1

এই উত্তরগুলির বেশ কয়েকটি পড়ার পরে, আমি পাইথন ৩.6 এর জন্য ল্যাম্বদার মাধ্যমে ক্যোরি স্ট্রিং প্যারামগুলি পুনরুদ্ধার করতে 2018 এর আগস্টে বেশ কয়েকটিটির সংমিশ্রণ ব্যবহার করেছি।

প্রথমত, আমি এপিআই গেটওয়ে -> আমার এপিআই -> সংস্থানসমূহ (বাম দিকে) -> সংহতকরণের অনুরোধে গিয়েছিলাম। নীচে নীচে, ম্যাপিং টেম্পলেটগুলি নির্বাচন করুন তারপরে সামগ্রী প্রকারের জন্য প্রবেশ করুন application/json

এরপরে, অ্যামাজন সরবরাহ করে এমন মেথড রিকুয়েস্ট পাসস্ট্রু টেম্পলেটটি নির্বাচন করুন এবং আপনার API টি সংরক্ষণ করুন এবং স্থাপন করুন নির্বাচন করুন।

তারপর, লাম্বদা event['params'] হ'ল আপনি কীভাবে আপনার সমস্ত পরামিতিগুলিতে অ্যাক্সেস করেন। ক্যোয়ারী স্ট্রিংয়ের জন্য:event['params']['querystring']

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.