برنامه نویسی

اجرای برنامه با CloudFormation AWS (json، nodejs، java)

برای درک مدل معماری به مقاله قبلی مراجعه کنید:
https://dev.to/huydanggdg/migrate-heroku-to-aws-1d73

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

1. راه اندازی اتصال github

ایجاد حساب های متصل

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

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

2. قالب فایل json را برای Cloudformation ایجاد کنید

مثال برای nodejs

{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Resources": {
    "AppRunnerService": {
      "Type": "AWS::AppRunner::Service",
      "Properties": {
        "ServiceName": "client",
        "SourceConfiguration": {
          "AuthenticationConfiguration": {
            "ConnectionArn": "arn:aws:apprunner:ap-northeast-1:68972488xxx:connection/app/xxxxxxxxxx"
          },
          "CodeRepository": {
            "RepositoryUrl": "https://github.com/huydanggdg/client",
            "SourceCodeVersion": {
              "Type": "BRANCH",
              "Value": "main"
            },
            "CodeConfiguration": {
              "ConfigurationSource": "API",
              "CodeConfigurationValues": {
                "Runtime": "NODEJS_14",
        "StartCommand": "npm run production",
                "BuildCommand": "npm install",               
                "Port": "8080"
              }
            }
          }
        },
        "InstanceConfiguration": {
          "Cpu": "1024",
          "Memory": "2048"
        }
      }
    }
  }
}
وارد حالت تمام صفحه شوید

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

مثال برای جاوا

{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Resources": {
    "AppRunnerService": {
      "Type": "AWS::AppRunner::Service",
      "Properties": {
        "ServiceName": "java-main",
        "SourceConfiguration": {
          "AuthenticationConfiguration": {
            "ConnectionArn": "arn:aws:apprunner:ap-northeast-1:6897248xxxx:connection/app/xxxxxxx"
          },
          "CodeRepository": {
            "RepositoryUrl": "https://github.com/huydanggdg/java-main",
            "SourceCodeVersion": {
              "Type": "BRANCH",
              "Value": "main"
            },
            "CodeConfiguration": {
              "ConfigurationSource": "API",
              "CodeConfigurationValues": {
                "Runtime": "CORRETTO_8",
        "StartCommand": "java -Xms256m -jar target/gms_agm.jar .",
                "BuildCommand": "mvn package",               
                "Port": "3020"
              }
            }
          }
        },
        "InstanceConfiguration": {
          "Cpu": "2048",
          "Memory": "4096"
        }
      }
    }
  }
}
وارد حالت تمام صفحه شوید

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

مثال برای پایگاه داده

{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Description": "RDS PostgreSQL with Auto-Created VPC for Singer",
  "Parameters": {
    "DBPassword": {
      "Type": "String",
      "NoEcho": true,
      "Description": "Password for the PostgreSQL database"
    }
  },
  "Resources": {
    "VPC": {
      "Type": "AWS::EC2::VPC",
      "Properties": {
        "CidrBlock": "10.0.0.0/16",
        "EnableDnsSupport": true,
        "EnableDnsHostnames": true,
        "Tags": [{ "Key": "Name", "Value": "SingerVPC" }]
      }
    },
    "InternetGateway": {
      "Type": "AWS::EC2::InternetGateway",
      "Properties": {
        "Tags": [{ "Key": "Name", "Value": "SingerIGW" }]
      }
    },
    "VPCGatewayAttachment": {
      "Type": "AWS::EC2::VPCGatewayAttachment",
      "Properties": {
        "VpcId": { "Ref": "VPC" },
        "InternetGatewayId": { "Ref": "InternetGateway" }
      }
    },
    "SubnetGroup": {
      "Type": "AWS::RDS::DBSubnetGroup",
      "Properties": {
        "DBSubnetGroupDescription": "Subnets for Singer RDS",
        "SubnetIds": [
          { "Ref": "PublicSubnet1" },
          { "Ref": "PublicSubnet2" }
        ]
      }
    },
    "PublicSubnet1": {
      "Type": "AWS::EC2::Subnet",
      "Properties": {
        "VpcId": { "Ref": "VPC" },
        "CidrBlock": "10.0.0.0/24",
        "AvailabilityZone": { "Fn::Select": [0, { "Fn::GetAZs": "" }] },
        "MapPublicIpOnLaunch": true,
        "Tags": [{ "Key": "Name", "Value": "SingerPublicSubnet1" }]
      }
    },
    "PublicSubnet2": {
      "Type": "AWS::EC2::Subnet",
      "Properties": {
        "VpcId": { "Ref": "VPC" },
        "CidrBlock": "10.0.1.0/24",
        "AvailabilityZone": { "Fn::Select": [1, { "Fn::GetAZs": "" }] },
        "MapPublicIpOnLaunch": true,
        "Tags": [{ "Key": "Name", "Value": "SingerPublicSubnet2" }]
      }
    },
    "PostgreSQLInstance": {
      "Type": "AWS::RDS::DBInstance",
      "Properties": {
        "AllocatedStorage": "20",
        "DBInstanceClass": "db.t3.micro",
        "Engine": "postgres",
        "EngineVersion": "14",
        "MasterUsername": "admin",
        "MasterUserPassword": { "Ref": "DBPassword" },
        "DBName": "singer_db",
        "PubliclyAccessible": false,
        "DBSubnetGroupName": { "Ref": "SubnetGroup" }
      }
    }
  },
  "Outputs": {
    "PostgreSQLInstanceEndpoint": {
      "Description": "Endpoint for the PostgreSQL instance",
      "Value": { "Fn::GetAtt": ["PostgreSQLInstance", "Endpoint.Address"] }
    }
  }
}
وارد حالت تمام صفحه شوید

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

3. کد را اجرا کنید

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

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

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

توضیحات تصویر
گزینه پیش فرض و بررسی => ارسال

4. بررسی خدمات
5.پشته را حذف کنید => سرویس پاکسازی خودکار AWS

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

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

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

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