برنامه نویسی

Infra as GitHub Actions – عملکرد بدون سرور AWS برای nodejs

در آخرین پست ما در مورد نیاز به ساده سازی infra و همچنین انتقال آن به مخزن برنامه صحبت کردیم

همانطور که من شروع به کار بر روی infra بعدی به عنوان اقدامات GitHub کردم، که یک وب سایت امن بود authentication@edge. مشخص شد که AWS lambda یک بلوک ساختمانی اساسی در این سفر بود

معرفی actions-aws-function-node 🎉
اکنون با وابستگی های بسیار کمی، می توانید باطن گره خود را به معنای واقعی کلمه در یک دقیقه تهیه کنید 🏎️

شروع شدن

بیایید با کد آشنا شروع کنیم

// src/index.js
exports.handler = async (event, context) => {
    return {
        "statusCode": 200,
        "headers": {
            "Content-Type": "*/*"
        },
        "body": "hello world"
    }
}
وارد حالت تمام صفحه شوید

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

گردش کار را اضافه کنید

# .github/workflows/on-push-main.yml
name: demo
on:
  push:
    branches:
      - main
jobs:
  deploy:
    environment:
      name: main
      url: ${{ steps.backend.outputs.url }}
    permissions: 
      id-token: write
    runs-on: ubuntu-latest
    steps:
      - name: Check out repo
        uses: actions/checkout@v4
      - uses: aws-actions/configure-aws-credentials@v4
        with:
          aws-region: us-east-1
          role-to-assume: ${{ secrets.ROLE_ARN }}
          role-session-name: ${{ github.actor }}
      - uses: alonch/actions-aws-backend-setup@main
        with: 
          instance: sample
      - uses: alonch/actions-aws-function-node@main
        with: 
          name: actions-aws-function-node-sample
          entrypoint-file: index.js
          entrypoint-function: handler
          artifacts: src
          allow-public-access: true
وارد حالت تمام صفحه شوید

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

راز را اضافه کنید ROLE_ARN با دسترسی به AWS و بس
شما می توانید این نمونه را از Github نیز کلون کنید
البته گزینه های بسیار بیشتری وجود دارد

مجوزها

شما می توانید فقط با افزودن نام منبع و دسترسی، خواندن یا نوشتن، دسترسی به خدمات را مجاز کنید

مثلا:

      - uses: alonch/actions-aws-function-node@main
        with: 
          name: actions-aws-function-node-demo
          entrypoint-file: index.js
          entrypoint-function: handler
          artifacts: src
          allow-public-access: true
          permissions: |
            s3: read
            dynamodb: write 
وارد حالت تمام صفحه شوید

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

این پیکربندی، خط‌مشی‌های مدیریت‌شده AmazonS3ReadOnly و AmazonDynamoDBFullAccess را به نقش تابع متصل می‌کند.

متغیرهای محیطی

مشابه مجوزها، می توانید متغیرهای تابع را به صورت زیر پیوست کنید:

      - uses: alonch/actions-aws-function-node@main
        with: 
          name: actions-aws-function-node-demo
          entrypoint-file: index.js
          entrypoint-function: handler
          artifacts: src
          allow-public-access: true
          env: |
            DD_ENV: production 
            DD_SERVICE: demo
            DD_VERSION: ${{ github.sha }}
وارد حالت تمام صفحه شوید

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

بقیه گزینه ها ویژگی های استانداردی مانند حافظه، مهلت زمانی یا انتخاب معماری ARM هستند

بهترین بخش این است که تهیه آن یک دقیقه طول می کشد و حتی زمان کمتری برای تخریب 👏

من در مورد پیشرفت‌ها و پیشرفت‌هایی که می‌توان در این جریان کاری ایجاد کرد هیجان‌زده هستم. اگر بازخورد، سوال یا پیشنهادی دارید، می توانید در زیر نظر خود را بنویسید یا مستقیماً تماس بگیرید. بیایید این سفر ساده سازی زیرساخت ها را با هم ادامه دهیم!

با تشکر از شما برای خواندن، و کد نویسی مبارک!

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

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

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

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