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 هستند
بهترین بخش این است که تهیه آن یک دقیقه طول می کشد و حتی زمان کمتری برای تخریب 👏
من در مورد پیشرفتها و پیشرفتهایی که میتوان در این جریان کاری ایجاد کرد هیجانزده هستم. اگر بازخورد، سوال یا پیشنهادی دارید، می توانید در زیر نظر خود را بنویسید یا مستقیماً تماس بگیرید. بیایید این سفر ساده سازی زیرساخت ها را با هم ادامه دهیم!
با تشکر از شما برای خواندن، و کد نویسی مبارک!