{"id":85861,"date":"2024-11-28T15:29:02","date_gmt":"2024-11-28T11:59:02","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/puppeteer-in-docker-lambda-1b47\/"},"modified":"2024-11-28T15:29:02","modified_gmt":"2024-11-28T11:59:02","slug":"puppeteer-in-docker-lambda-1b47","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/puppeteer-in-docker-lambda-1b47\/","title":{"rendered":"\u0686\u06af\u0648\u0646\u0647: \u0639\u0631\u0648\u0633\u06a9 \u06af\u0631\u062f\u0627\u0646\u06cc \u062f\u0631 AWS Docker Lambda"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang<br \/>\n              \u0645\u0646 \u0627\u0632 \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0639\u0627\u0644\u06cc \u062f\u06cc\u06af\u0631 \u0628\u0647 \u0646\u0627\u0645 puck \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0631\u062f\u0645 \u06a9\u0647 \u0627\u0633\u0627\u0633\u0627\u064b \u06cc\u06a9 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u0628\u0633\u06cc\u0627\u0631 \u0642\u0627\u0628\u0644 \u062a\u0646\u0638\u06cc\u0645 \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0633\u0627\u06cc\u062a \u0647\u0627 \/ \u062e\u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \/ \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc PDF (\u0686\u06cc\u0632\u06cc \u0628\u0635\u0631\u06cc) \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u062f \u0648 \u0628\u0647 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u06cc \u0631\u0633\u06cc\u062f\u0645 \u06a9\u0647 \u062e\u0631\u0648\u062c\u06cc \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u0631\u0627 \u0628\u0647 PDF \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u062f.<\/p>\n<p>\u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f \u0628\u0647\u062a\u0631\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f PDF \u0628\u0631 \u0627\u0633\u0627\u0633 HTML \u0639\u0631\u0648\u0633\u06a9 \u06af\u0631\u062f\u0627\u0646\u06cc \u0627\u0633\u062a. \u062d\u0627\u0644\u0627 \u0645\u0646 \u0633\u0631\u0648\u0631\u06cc \u0646\u062f\u0627\u0634\u062a\u0645 \u06a9\u0647 \u062f\u0631 \u062c\u0627\u06cc\u06cc \u0627\u062c\u0631\u0627 \u0634\u0648\u062f\u060c \u062a\u0627 \u06a9\u0646\u0648\u0646 \u0628\u06cc\u0634\u062a\u0631 \u0644\u0627\u0645\u0628\u062f\u0627\u0647\u0627\u06cc \u06a9\u0648\u0686\u06a9 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0639\u0645\u0644\u06a9\u0631\u062f \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0631\u062f\u0645\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u06cc \u062e\u0648\u0627\u0633\u062a\u0645 \u0627\u0632 \u0644\u0627\u0645\u0628\u062f\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u06cc\u0632 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0645. <\/p>\n<p>\u0645\u0639\u0644\u0648\u0645 \u0634\u062f \u06a9\u0647 \u0622\u0632\u0645\u0648\u0646 \u0648 \u062e\u0637\u0627\u06cc \u0622\u0646 \u06a9\u0645\u06cc \u0628\u06cc\u0634\u062a\u0631 \u0627\u0632 \u062d\u062f \u0627\u0646\u062a\u0638\u0627\u0631 \u0628\u0648\u062f\u0647 \u0627\u0633\u062a\u060c \u0632\u06cc\u0631\u0627 \u0639\u0631\u0648\u0633\u06a9 \u06af\u0631\u062f\u0627\u0646 \u0628\u0647 \u06a9\u0631\u0648\u0645 \u0645\u062a\u06a9\u06cc \u0627\u0633\u062a \u0648 \u062f\u0631 \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc \u0628\u062f\u0648\u0646 \u0633\u0631\u0648\u0631 \u0628\u0647 \u062e\u0648\u0628\u06cc \u06a9\u0627\u0631 \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0627\u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u06a9\u0627\u0631 \u06a9\u0631\u062f\u0646 \u0628\u0627 \u0622\u0646 \u0627\u0633\u062a.<\/p>\n<p>\u0627\u0628\u062a\u062f\u0627 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u062c\u062f\u06cc\u062f Node.js \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f (\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0628\u062a\u062f\u0627 npm init -y):<\/p>\n<p>npm install puppeteer-core@23.9.0<br \/>\nnpm install @sparticuz\/chromium@131.0.1<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0627 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u0645 \u0627\u06cc\u0646 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u0644\u0627\u0645\u0628\u062f\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u0645 puppeteer \u0628\u0633\u062a\u0647 \u06a9\u0627\u0631 \u0646\u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f (\u062d\u062f\u0627\u0642\u0644 \u0628\u0631\u0627\u06cc \u0645\u0646) \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0646\u0635\u0628 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0633\u062a\u0647 \u0628\u0647 \u0647\u0645\u0631\u0627\u0647 \u0646\u0633\u062e\u0647 \u0627\u06cc \u0627\u0632 \u06a9\u0631\u0648\u0645 \u0647\u0633\u062a\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u0644\u0627\u0645\u0628\u062f\u0627 \u0628\u0647\u062a\u0631 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u0633\u062e\u0647 \u0647\u0627 \u0628\u0633\u06cc\u0627\u0631 \u0645\u0647\u0645 \u0647\u0633\u062a\u0646\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0646 \u0622\u0646\u0647\u0627 \u0631\u0627 \u0642\u0641\u0644 \u0645\u06cc \u06a9\u0646\u0645. <\/p>\n<p>\u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f index.js \u0641\u0627\u06cc\u0644 \u0628\u0627 \u0645\u062d\u062a\u0648\u06cc\u0627\u062a \u0632\u06cc\u0631:<\/p>\n<p>import puppeteer from &#8220;puppeteer-core&#8221;;<br \/>\nconst chromium = require(&#8220;@sparticuz\/chromium&#8221;); \/\/ this looks a bit odd with &#8216;import&#8217; and &#8216;require&#8217; statements but I was using TypeScript so everything compiled down to commonjs in the end. @sparticuz\/chromium didn&#8217;t support ESM<\/p>\n<p>chromium.setHeadlessMode = true;<br \/>\nchromium.setGraphicsMode = false;<\/p>\n<p>const browser = await puppeteer.launch({<br \/>\n    args: chromium.args,<br \/>\n    defaultViewport: chromium.defaultViewport,<br \/>\n    executablePath: await chromium.executablePath(),<br \/>\n    headless: chromium.headless,<br \/>\n});<br \/>\nconst page = await browser.newPage();<\/p>\n<p>await page.setContent(&#8220;Hello world&#8221;);<\/p>\n<p>const pdf = await page.pdf({ format: &#8220;A4&#8221; });<br \/>\nawait browser.close();<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 index.js \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0628\u0627\u06cc\u062f \u0646\u062a\u06cc\u062c\u0647 \u0645\u062b\u0628\u062a\u06cc \u0628\u0647 \u0647\u0645\u0631\u0627\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f. \u0627\u06a9\u0646\u0648\u0646 \u0628\u0627 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u0627\u06cc\u0646 \u06a9\u062f \u062f\u0631 AWS lambda\u060c \u0628\u0627\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 Dockerfile \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0627 \u06cc\u06a9 \u062f\u0627\u06a9\u0631 \u0644\u0627\u0645\u0628\u062f\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u0627\u06cc\u062f \u06a9\u0627\u0631\u0647\u0627 \u0631\u0627 \u0633\u0627\u062f\u0647 \u062a\u0631 \u06a9\u0646\u062f. \u06cc\u06a9 \u0645\u0632\u06cc\u062a \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0627 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u06a9\u062f \u06a9\u0631\u0648\u0645\u06cc\u0648\u0645 \u062f\u0631 \u0644\u0627\u06cc\u0647 \u0644\u0627\u0645\u0628\u062f\u0627 \u0646\u062f\u0627\u0631\u06cc\u0645\u060c \u0627\u0645\u0627 \u0628\u0647 \u063a\u06cc\u0631 \u0627\u0632 \u0627\u06cc\u0646\u060c \u0648\u0627\u0642\u0639\u0627\u064b \u0628\u0647 \u0634\u0645\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u0647 \u0628\u0633\u062a\u06af\u06cc \u062f\u0627\u0631\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u062a\u0631\u062c\u06cc\u062d \u0645\u06cc\u200c\u062f\u0647\u06cc\u062f \u0627\u0632 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0648\u0627\u0646\u06cc\u0644\u06cc \u0644\u0627\u0645\u0628\u062f\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u06cc\u0627 \u0644\u0627\u0645\u0628\u062f\u0627 \u062f\u0627\u06a9\u0631.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 Dockerfile \u0633\u0627\u062f\u0647 \u0645\u0627 \u0627\u0633\u062a:<\/p>\n<p># Use the official Amazon Linux image for Lambda<br \/>\nFROM public.ecr.aws\/lambda\/nodejs:18<\/p>\n<p># Set working directory<br \/>\nWORKDIR ${LAMBDA_TASK_ROOT}<\/p>\n<p>COPY . .<\/p>\n<p>RUN npm install<br \/>\nRUN npm run build # i was using typescript so here i run the build command &#8216;tsc&#8217;, you can omit it if you&#8217;re doing JS<\/p>\n<p># Your CMD or ENTRYPOINT command<br \/>\nCMD [&#8220;index.handler&#8221;]\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0628\u0627 \u062f\u0627\u06a9\u0631\u0641\u0627\u06cc\u0644 \u0648 index.js \u0641\u0627\u06cc\u0644 \u0622\u0645\u0627\u062f\u0647 \u0627\u0633\u062a\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u062a\u0635\u0648\u06cc\u0631 Docker \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0628\u0633\u0627\u0632\u06cc\u0645 (\u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 Docker \u0646\u0635\u0628 \u0634\u062f\u0647 \u0627\u0633\u062a):<\/p>\n<p>docker build &#8211;platform linux\/amd64 -t  .<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0647\u062f\u0641 \u06af\u0630\u0627\u0631\u06cc \u0647\u0633\u062a\u06cc\u0645 linux\/amd64 \u06a9\u0647 \u0645\u062d\u06cc\u0637 \u0644\u0627\u0645\u0628\u062f\u0627 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u0627\u0633\u062a. \u0647\u0645\u0686\u0646\u06cc\u0646 \u0644\u0627\u0632\u0645 \u0628\u0647 \u0630\u06a9\u0631 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0646 \u0627\u0632 Macbook Pro M1 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0645\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u06cc\u0646 \u06cc\u06a9 \u0627\u0644\u0632\u0627\u0645 \u0627\u0633\u062a. \u0627\u06af\u0631 \u0627\u0632 \u0644\u06cc\u0646\u0648\u06a9\u0633 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0634\u0627\u06cc\u062f \u0644\u0627\u0632\u0645 \u0646\u0628\u0627\u0634\u062f \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f\u060c \u0627\u0645\u0627 \u0641\u0642\u0637 \u0645\u0637\u0645\u0626\u0646 \u0628\u0627\u0634\u06cc\u062f.<\/p>\n<p>\u0645\u0631\u0627\u062d\u0644 \u0628\u0639\u062f\u06cc \u0634\u0645\u0627 \u0631\u0627 \u0645\u0644\u0632\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc AWS lambda \u0631\u0627 \u062f\u0631 \u0645\u062d\u0644 \u062e\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u0648 \u062f\u0631 \u0645\u0648\u0631\u062f \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc ECR \u0648 Lambda \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0637\u0648\u0644\u0627\u0646\u06cc \u0634\u0648\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0646 \u0628\u0627 \u0686\u0646\u062f \u06a9\u0644\u0645\u0647 \u062a\u0648\u0635\u06cc\u0647 \u062f\u0631 \u0645\u0648\u0631\u062f \u0645\u0631\u0627\u062d\u0644 \u0628\u0639\u062f\u06cc \u0622\u0646 \u0631\u0627 \u062a\u0631\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u0645:<\/p>\n<p>\u067e\u0633 \u0627\u0632 \u0633\u0627\u062e\u062a\u0646 \u062a\u0635\u0648\u06cc\u0631 \u062f\u0627\u06a9\u0631\u060c \u062a\u0635\u0648\u06cc\u0631 \u062f\u0627\u06a9\u0631 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u062a\u06af \u06a9\u0646\u06cc\u062f:<\/p>\n<p>docker tag :latest .dkr.ecr..com\/:latest<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062a\u0635\u0648\u06cc\u0631 \u062f\u0627\u06a9\u0631 \u0641\u0634\u0627\u0631<\/p>\n<p>docker push .dkr.ecr..amazonaws.com\/:latest<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>(\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u0645\u062e\u0632\u0646 ECR \u0634\u0645\u0627 \u062f\u0631 \u06a9\u0646\u0633\u0648\u0644 AWS \u0646\u06cc\u0632 \u0642\u0627\u0628\u0644 \u0645\u0634\u0627\u0647\u062f\u0647 \u0647\u0633\u062a\u0646\u062f)<\/p>\n<p>\u0644\u0627\u0645\u0628\u062f\u0627 \u0631\u0627 \u0628\u0627 \u062a\u0635\u0648\u06cc\u0631 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 AWS CLI \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u062f (\u0641\u0631\u0636 \u0645\u06cc \u06a9\u0646\u062f AWS CLI \u0631\u0648\u06cc \u062f\u0633\u062a\u06af\u0627\u0647 \u0634\u0645\u0627 \u0646\u0635\u0628 \u0634\u062f\u0647 \u0627\u0633\u062a). \u0647\u0645\u0686\u0646\u06cc\u0646 \u062f\u0631 \u0635\u0648\u0631\u062a \u062a\u0645\u0627\u06cc\u0644 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u062f\u0631 \u06a9\u0646\u0633\u0648\u0644 \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<p>aws lambda update-function-code \\<br \/>\n  &#8211;function-name  \\<br \/>\n  &#8211;image-uri .dkr.ecr..amazonaws.com\/:latest \\<br \/>\n  &#8211;profile default \\<br \/>\n  &#8211;region <\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0644\u0627\u0645\u0628\u062f\u0627 \u062d\u062f\u0627\u0642\u0644 1024 \u0645\u06af\u0627\u0628\u0627\u06cc\u062a \u062d\u0627\u0641\u0638\u0647 \u062f\u0627\u0631\u062f \u0648 30 \u062b\u0627\u0646\u06cc\u0647 \u0641\u0627\u0635\u0644\u0647 \u0632\u0645\u0627\u0646\u06cc \u062f\u0627\u0631\u062f.<\/p>\n<p>\u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u0645 \u0627\u06cc\u0646 \u0645\u0641\u06cc\u062f \u0628\u0648\u062f\u0647 \u0628\u0627\u0634\u062f!<\/p>\n<div data-article-id=\"2125343\" id=\"article-body\">\n<p>\u0645\u0646 \u0627\u0632 \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0639\u0627\u0644\u06cc \u062f\u06cc\u06af\u0631 \u0628\u0647 \u0646\u0627\u0645 puck \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0631\u062f\u0645 \u06a9\u0647 \u0627\u0633\u0627\u0633\u0627\u064b \u06cc\u06a9 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u0628\u0633\u06cc\u0627\u0631 \u0642\u0627\u0628\u0644 \u062a\u0646\u0638\u06cc\u0645 \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0633\u0627\u06cc\u062a \u0647\u0627 \/ \u062e\u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \/ \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc PDF (\u0686\u06cc\u0632\u06cc \u0628\u0635\u0631\u06cc) \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u062f \u0648 \u0628\u0647 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u06cc \u0631\u0633\u06cc\u062f\u0645 \u06a9\u0647 \u062e\u0631\u0648\u062c\u06cc \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u0631\u0627 \u0628\u0647 PDF \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u062f.<\/p>\n<p>\u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f \u0628\u0647\u062a\u0631\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f PDF \u0628\u0631 \u0627\u0633\u0627\u0633 HTML \u0639\u0631\u0648\u0633\u06a9 \u06af\u0631\u062f\u0627\u0646\u06cc \u0627\u0633\u062a. \u062d\u0627\u0644\u0627 \u0645\u0646 \u0633\u0631\u0648\u0631\u06cc \u0646\u062f\u0627\u0634\u062a\u0645 \u06a9\u0647 \u062f\u0631 \u062c\u0627\u06cc\u06cc \u0627\u062c\u0631\u0627 \u0634\u0648\u062f\u060c \u062a\u0627 \u06a9\u0646\u0648\u0646 \u0628\u06cc\u0634\u062a\u0631 \u0644\u0627\u0645\u0628\u062f\u0627\u0647\u0627\u06cc \u06a9\u0648\u0686\u06a9 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0639\u0645\u0644\u06a9\u0631\u062f \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0631\u062f\u0645\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u06cc \u062e\u0648\u0627\u0633\u062a\u0645 \u0627\u0632 \u0644\u0627\u0645\u0628\u062f\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u06cc\u0632 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0645. <\/p>\n<p>\u0645\u0639\u0644\u0648\u0645 \u0634\u062f \u06a9\u0647 \u0622\u0632\u0645\u0648\u0646 \u0648 \u062e\u0637\u0627\u06cc \u0622\u0646 \u06a9\u0645\u06cc \u0628\u06cc\u0634\u062a\u0631 \u0627\u0632 \u062d\u062f \u0627\u0646\u062a\u0638\u0627\u0631 \u0628\u0648\u062f\u0647 \u0627\u0633\u062a\u060c \u0632\u06cc\u0631\u0627 \u0639\u0631\u0648\u0633\u06a9 \u06af\u0631\u062f\u0627\u0646 \u0628\u0647 \u06a9\u0631\u0648\u0645 \u0645\u062a\u06a9\u06cc \u0627\u0633\u062a \u0648 \u062f\u0631 \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc \u0628\u062f\u0648\u0646 \u0633\u0631\u0648\u0631 \u0628\u0647 \u062e\u0648\u0628\u06cc \u06a9\u0627\u0631 \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0627\u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u06a9\u0627\u0631 \u06a9\u0631\u062f\u0646 \u0628\u0627 \u0622\u0646 \u0627\u0633\u062a.<\/p>\n<p>\u0627\u0628\u062a\u062f\u0627 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u062c\u062f\u06cc\u062f Node.js \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f (\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0628\u062a\u062f\u0627 <code>npm init -y<\/code>):<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>npm install puppeteer-core@23.9.0 \nnpm install @sparticuz\/chromium@131.0.1\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0627 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u0645 \u0627\u06cc\u0646 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u0644\u0627\u0645\u0628\u062f\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u0645 <code>puppeteer<\/code> \u0628\u0633\u062a\u0647 \u06a9\u0627\u0631 \u0646\u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f (\u062d\u062f\u0627\u0642\u0644 \u0628\u0631\u0627\u06cc \u0645\u0646) \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0646\u0635\u0628 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0633\u062a\u0647 \u0628\u0647 \u0647\u0645\u0631\u0627\u0647 \u0646\u0633\u062e\u0647 \u0627\u06cc \u0627\u0632 \u06a9\u0631\u0648\u0645 \u0647\u0633\u062a\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u0644\u0627\u0645\u0628\u062f\u0627 \u0628\u0647\u062a\u0631 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u0633\u062e\u0647 \u0647\u0627 \u0628\u0633\u06cc\u0627\u0631 \u0645\u0647\u0645 \u0647\u0633\u062a\u0646\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0646 \u0622\u0646\u0647\u0627 \u0631\u0627 \u0642\u0641\u0644 \u0645\u06cc \u06a9\u0646\u0645. <\/p>\n<p>\u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <code>index.js<\/code> \u0641\u0627\u06cc\u0644 \u0628\u0627 \u0645\u062d\u062a\u0648\u06cc\u0627\u062a \u0632\u06cc\u0631:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>import puppeteer from \"puppeteer-core\";\nconst chromium = require(\"@sparticuz\/chromium\"); \/\/ this looks a bit odd with 'import' and 'require' statements but I was using TypeScript so everything compiled down to commonjs in the end. @sparticuz\/chromium didn't support ESM\n\nchromium.setHeadlessMode = true;\nchromium.setGraphicsMode = false;\n\nconst browser = await puppeteer.launch({\n    args: chromium.args,\n    defaultViewport: chromium.defaultViewport,\n    executablePath: await chromium.executablePath(),\n    headless: chromium.headless,\n});\nconst page = await browser.newPage();\n\nawait page.setContent(\"<p>Hello world<\/p>\");\n\nconst pdf = await page.pdf({ format: \"A4\" });\nawait browser.close();\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 <code>index.js<\/code> \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0628\u0627\u06cc\u062f \u0646\u062a\u06cc\u062c\u0647 \u0645\u062b\u0628\u062a\u06cc \u0628\u0647 \u0647\u0645\u0631\u0627\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f. \u0627\u06a9\u0646\u0648\u0646 \u0628\u0627 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u0627\u06cc\u0646 \u06a9\u062f \u062f\u0631 AWS lambda\u060c \u0628\u0627\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 <code>Dockerfile<\/code> \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0627 \u06cc\u06a9 \u062f\u0627\u06a9\u0631 \u0644\u0627\u0645\u0628\u062f\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u0627\u06cc\u062f \u06a9\u0627\u0631\u0647\u0627 \u0631\u0627 \u0633\u0627\u062f\u0647 \u062a\u0631 \u06a9\u0646\u062f. \u06cc\u06a9 \u0645\u0632\u06cc\u062a \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0627 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u06a9\u062f \u06a9\u0631\u0648\u0645\u06cc\u0648\u0645 \u062f\u0631 \u0644\u0627\u06cc\u0647 \u0644\u0627\u0645\u0628\u062f\u0627 \u0646\u062f\u0627\u0631\u06cc\u0645\u060c \u0627\u0645\u0627 \u0628\u0647 \u063a\u06cc\u0631 \u0627\u0632 \u0627\u06cc\u0646\u060c \u0648\u0627\u0642\u0639\u0627\u064b \u0628\u0647 \u0634\u0645\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u0647 \u0628\u0633\u062a\u06af\u06cc \u062f\u0627\u0631\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u062a\u0631\u062c\u06cc\u062d \u0645\u06cc\u200c\u062f\u0647\u06cc\u062f \u0627\u0632 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0648\u0627\u0646\u06cc\u0644\u06cc \u0644\u0627\u0645\u0628\u062f\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u06cc\u0627 \u0644\u0627\u0645\u0628\u062f\u0627 \u062f\u0627\u06a9\u0631.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 Dockerfile \u0633\u0627\u062f\u0647 \u0645\u0627 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code># Use the official Amazon Linux image for Lambda\nFROM public.ecr.aws\/lambda\/nodejs:18\n\n# Set working directory\nWORKDIR ${LAMBDA_TASK_ROOT}\n\nCOPY . .\n\nRUN npm install\nRUN npm run build # i was using typescript so here i run the build command 'tsc', you can omit it if you're doing JS\n\n\n# Your CMD or ENTRYPOINT command\nCMD [\"index.handler\"]\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0627 \u062f\u0627\u06a9\u0631\u0641\u0627\u06cc\u0644 \u0648 <code>index.js<\/code> \u0641\u0627\u06cc\u0644 \u0622\u0645\u0627\u062f\u0647 \u0627\u0633\u062a\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u062a\u0635\u0648\u06cc\u0631 Docker \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0628\u0633\u0627\u0632\u06cc\u0645 (\u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 Docker \u0646\u0635\u0628 \u0634\u062f\u0647 \u0627\u0633\u062a):<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>docker build --platform linux\/amd64 -t <name> .\n<\/name><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0647\u062f\u0641 \u06af\u0630\u0627\u0631\u06cc \u0647\u0633\u062a\u06cc\u0645 <code>linux\/amd64<\/code> \u06a9\u0647 \u0645\u062d\u06cc\u0637 \u0644\u0627\u0645\u0628\u062f\u0627 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u0627\u0633\u062a. <br \/>\u0647\u0645\u0686\u0646\u06cc\u0646 \u0644\u0627\u0632\u0645 \u0628\u0647 \u0630\u06a9\u0631 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0646 \u0627\u0632 Macbook Pro M1 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0645\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u06cc\u0646 \u06cc\u06a9 \u0627\u0644\u0632\u0627\u0645 \u0627\u0633\u062a. \u0627\u06af\u0631 \u0627\u0632 \u0644\u06cc\u0646\u0648\u06a9\u0633 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0634\u0627\u06cc\u062f \u0644\u0627\u0632\u0645 \u0646\u0628\u0627\u0634\u062f \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f\u060c \u0627\u0645\u0627 \u0641\u0642\u0637 \u0645\u0637\u0645\u0626\u0646 \u0628\u0627\u0634\u06cc\u062f.<\/p>\n<p>\u0645\u0631\u0627\u062d\u0644 \u0628\u0639\u062f\u06cc \u0634\u0645\u0627 \u0631\u0627 \u0645\u0644\u0632\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc AWS lambda \u0631\u0627 \u062f\u0631 \u0645\u062d\u0644 \u062e\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u0648 \u062f\u0631 \u0645\u0648\u0631\u062f \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc ECR \u0648 Lambda \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0637\u0648\u0644\u0627\u0646\u06cc \u0634\u0648\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0646 \u0628\u0627 \u0686\u0646\u062f \u06a9\u0644\u0645\u0647 \u062a\u0648\u0635\u06cc\u0647 \u062f\u0631 \u0645\u0648\u0631\u062f \u0645\u0631\u0627\u062d\u0644 \u0628\u0639\u062f\u06cc \u0622\u0646 \u0631\u0627 \u062a\u0631\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u0645:<\/p>\n<ol>\n<li>\u067e\u0633 \u0627\u0632 \u0633\u0627\u062e\u062a\u0646 \u062a\u0635\u0648\u06cc\u0631 \u062f\u0627\u06a9\u0631\u060c \u062a\u0635\u0648\u06cc\u0631 \u062f\u0627\u06a9\u0631 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u062a\u06af \u06a9\u0646\u06cc\u062f:\n<\/li>\n<\/ol>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>docker tag <name>:latest <aws_account>.dkr.ecr.<region>.com\/<ecr_repo>:latest\n<\/ecr_repo><\/region><\/aws_account><\/name><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ol>\n<li>\u062a\u0635\u0648\u06cc\u0631 \u062f\u0627\u06a9\u0631 \u0641\u0634\u0627\u0631\n<\/li>\n<\/ol>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>docker push <aws_account>.dkr.ecr.<aws_region>.amazonaws.com\/<ecr_repo>:latest\n<\/ecr_repo><\/aws_region><\/aws_account><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>(\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u0645\u062e\u0632\u0646 ECR \u0634\u0645\u0627 \u062f\u0631 \u06a9\u0646\u0633\u0648\u0644 AWS \u0646\u06cc\u0632 \u0642\u0627\u0628\u0644 \u0645\u0634\u0627\u0647\u062f\u0647 \u0647\u0633\u062a\u0646\u062f)<\/p>\n<ol>\n<li>\u0644\u0627\u0645\u0628\u062f\u0627 \u0631\u0627 \u0628\u0627 \u062a\u0635\u0648\u06cc\u0631 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 AWS CLI \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u062f (\u0641\u0631\u0636 \u0645\u06cc \u06a9\u0646\u062f AWS CLI \u0631\u0648\u06cc \u062f\u0633\u062a\u06af\u0627\u0647 \u0634\u0645\u0627 \u0646\u0635\u0628 \u0634\u062f\u0647 \u0627\u0633\u062a). \u0647\u0645\u0686\u0646\u06cc\u0646 \u062f\u0631 \u0635\u0648\u0631\u062a \u062a\u0645\u0627\u06cc\u0644 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u062f\u0631 \u06a9\u0646\u0633\u0648\u0644 \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f:\n<\/li>\n<\/ol>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>aws lambda update-function-code \\\n  --function-name <lambda_name> \\\n  --image-uri <aws_account>.dkr.ecr.<aws_region>.amazonaws.com\/<ecr_repo>:latest \\\n  --profile default \\\n  --region <aws_region>\n<\/aws_region><\/ecr_repo><\/aws_region><\/aws_account><\/lambda_name><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ol>\n<li>\u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0644\u0627\u0645\u0628\u062f\u0627 \u062d\u062f\u0627\u0642\u0644 1024 \u0645\u06af\u0627\u0628\u0627\u06cc\u062a \u062d\u0627\u0641\u0638\u0647 \u062f\u0627\u0631\u062f \u0648 30 \u062b\u0627\u0646\u06cc\u0647 \u0641\u0627\u0635\u0644\u0647 \u0632\u0645\u0627\u0646\u06cc \u062f\u0627\u0631\u062f.<\/li>\n<\/ol>\n<p>\u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u0645 \u0627\u06cc\u0646 \u0645\u0641\u06cc\u062f \u0628\u0648\u062f\u0647 \u0628\u0627\u0634\u062f!<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u0645\u0646 \u0627\u0632 \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0639\u0627\u0644\u06cc \u062f\u06cc\u06af\u0631 \u0628\u0647 \u0646\u0627\u0645 puck \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0631\u062f\u0645 \u06a9\u0647 \u0627\u0633\u0627\u0633\u0627\u064b \u06cc\u06a9 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u0628\u0633\u06cc\u0627\u0631 \u0642\u0627\u0628\u0644 \u062a\u0646\u0638\u06cc\u0645 \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0633\u0627\u06cc\u062a \u0647\u0627 \/ \u062e\u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \/ \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc PDF (\u0686\u06cc\u0632\u06cc \u0628\u0635\u0631\u06cc) \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u062f \u0648 \u0628\u0647 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u06cc \u0631\u0633\u06cc\u062f\u0645 \u06a9\u0647 \u062e\u0631\u0648\u062c\u06cc \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u0631\u0627 \u0628\u0647 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":85862,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-85861","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/85861","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=85861"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/85861\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/85862"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=85861"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=85861"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=85861"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}