برنامه نویسی

یک API بدون سرور ایجاد کنید که با جدول AWS DynamoDB تعامل داشته باشد

هنگامی که ما API را فراخوانی می کنیم، درخواست ما به یک تابع Lambda هدایت می شود که عمل مورد نظر را بین Lambda و DynamoDB انجام می دهد.

توضیحات تصویر

**یک جدول DynamoDB ایجاد کنید

یک تابع Lambda ایجاد کنید

  • به کنسول Lambda در https://console.aws.amazon.com/lambda وارد شوید
  • ایجاد تابع را انتخاب کنید.
  • برای نام تابع، http-demo-function را وارد کنید.
  • در قسمت Permissions Change default execution role را انتخاب کنید.
  • ایجاد نقش جدید از الگوهای خط مشی AWS را انتخاب کنید.
  • برای نام نقش، http-demo-role را وارد کنید.
  • برای الگوهای خط مشی، مجوزهای میکروسرویس ساده را انتخاب کنید.

  • ایجاد تابع

  • index.mjs را در تب Code باز کنید و تمام کدها را با این کد نمونه جایگزین کنید.

import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
import {
  DynamoDBDocumentClient,
  ScanCommand,
  PutCommand,
  GetCommand,
  DeleteCommand,
} from "@aws-sdk/lib-dynamodb";

const client = new DynamoDBClient({});

const dynamo = DynamoDBDocumentClient.from(client);

const tableName = "items";

export const handler = async (event, context) => {
  let body;
  let statusCode = 200;
  const headers = {
    "Content-Type": "application/json",
  };

  try {
    switch (event.routeKey) {
      case "DELETE /items/{id}":
        await dynamo.send(
          new DeleteCommand({
            TableName: tableName,
            Key: {
              id: event.pathParameters.id,
            },
          })
        );
        body = `Deleted item ${event.pathParameters.id}`;
        break;
      case "GET /items/{id}":
        body = await dynamo.send(
          new GetCommand({
            TableName: tableName,
            Key: {
              id: event.pathParameters.id,
            },
          })
        );
        body = body.Item;
        break;
      case "GET /items":
        body = await dynamo.send(
          new ScanCommand({ TableName: tableName })
        );
        body = body.Items;
        break;
      case "PUT /items":
        let requestJSON = JSON.parse(event.body);
        await dynamo.send(
          new PutCommand({
            TableName: tableName,
            Item: {
              id: requestJSON.id,
              price: requestJSON.price,
              name: requestJSON.name,
            },
          })
        );
        body = `Put item ${requestJSON.id}`;
        break;
      default:
        throw new Error(`Unsupported route: "${event.routeKey}"`);
    }
  } catch (err) {
    statusCode = 400;
    body = err.message;
  } finally {
    body = JSON.stringify(body);
  }

  return {
    statusCode,
    body,
    headers,
  };
};

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  • برای به روز رسانی عملکرد، Deploy را انتخاب کنید.

یک API HTTP ایجاد کنید

  • به کنسول API Gateway در https://console.aws.amazon.com/apigateway وارد شوید.
  • Create API را انتخاب کنید و سپس برای HTTP API، Build را انتخاب کنید.
  • برای نام API، http-demo-api را وارد کنید.
  • Next را انتخاب کنید.
  • مرحله ای که API Gateway را مرور کنید، Next را انتخاب کنید.
  • ایجاد را انتخاب کنید.

ایجاد مسیرها

  • به https://console.aws.amazon.com/apigateway مراجعه کنید
  • API خود را انتخاب کنید.
  • مسیرها را انتخاب کنید.
  • ایجاد را انتخاب کنید.
  • برای Method، GET را انتخاب کنید.
  • برای مسیر، /items/{id} را وارد کنید.
  • ایجاد را انتخاب کنید.
  • اکنون باید مراحل 4-7 را برای GET /items، DELETE /items/{id} و PUT /items تکرار کنید.

ایجاد یکپارچگی
این برای اتصال یک مسیر به منابع پشتیبان استفاده می شود.

  • به https://console.aws.amazon.com/apigateway مراجعه کنید
  • API خود را انتخاب کنید.
  • Integrations را انتخاب کنید.
  • مدیریت ادغام ها را انتخاب کنید، ایجاد را انتخاب کنید.
  • برای نوع ادغام، تابع Lambda را انتخاب کنید.
  • برای تابع Lambda، تابع http-demo-function را وارد کنید.
  • ایجاد را انتخاب کنید.

ادغام ما را به مسیرها وصل کنید

  • به https://console.aws.amazon.com/apigateway مراجعه کنید
  • API خود را انتخاب کنید.
  • Integrations را انتخاب کنید.
  • مسیری را انتخاب کنید.
  • در بخش Choose an موجود ادغام، تابع http-demo را انتخاب کنید. Attach integration را انتخاب کنید. این مراحل 4-6 را برای تمام مسیرهایی که قبلا ایجاد کردیم تکرار کنید.

تست API ما

curl -X "PUT" -H "Content-Type: application/json" -d "{\"id\": \"123\", \"price\": 12345, \"name\": \"myitem\"}" https://abc123.execute-api.us-east-1.amazonaws.com/items

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

curl https://abc123.execute-api.us-east-1.amazonaws.com/items
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

curl https://abc123.execute-api.us-east-1.amazonaws.com/items/123
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

تست حذف یک مورد

curl -X "DELETE" https://abc123.execute-api.us-east-1.amazonaws.com/items/123
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیحات تصویر

توضیحات تصویر

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا