terraform - AdedeAppunnerでnodejsアプリケーションを展開する
本稿では、どのようにNodeJSアプリケーションを展開するかについて話します.
AWSのアプリランナーは、開発者が迅速にコンテナのWebアプリケーションとAPIを展開し、スケールで、事前のインフラストラクチャの経験が必要になります完全に管理サービスです.ソースコードまたはコンテナイメージで起動します.アプリケーションランナーが自動的に構築し、Webアプリケーションを展開し、暗号化とトラフィックの負荷を負担します.アプリランナーもスケールアップまたはダウントラフィックのニーズを満たすために自動的に.アプリランナーではなく、サーバーやスケーリングについて考えるよりも、あなたのアプリケーションに集中するより多くの時間があります.
AWS IAM APIキー(アクセスキーと秘密キー)を必要とし、すべてのAWSリソースのアクセス許可を作成および削除します. githubアカウントと新しいリポジトリ. terraformは、マシンにインストールする必要があります.terraformが存在しない場合は、ここからダウンロードしてインストールできます.
デモディレクトリという名前のプロジェクトディレクトリをシステム内に作成し、現在のディレクトリにします.
Expressフレームワークをアプリケーションで使用するには、プロジェクト依存性としてインストールします.
私たちのデモのアプリケーションは、現在Goto Gituub、新しいリポジトリを作成し、Githubリポジトリにアプリケーションのソースコードをプッシュ準備ができました.
地形に移りましょう
バージョン
AWSアプリランナーをビルドするには、次のバージョンを満たす必要があります. terraform v 012以上の AWSプロバイダーの最新版(3.42.0)
テララーAWSプロバイダー のアプリランナーの設定
今回は、次のバージョンで構築しました.
terraformモジュールは、単一のディレクトリ内の地形形式ファイルの集合です.一つ以上のディレクトリからなる単純な構成であっても.tfファイルはモジュールです.このディレクトリから直接terraformコマンドを実行すると、ルートモジュールと見なされます IAMモジュール IAM役割と方針 のアプリプナーモジュール 自動スケーリング設定 AWS Apprunnerサービス AWS Apprunner Gitthub接続 アプリケーションランナーに付与するIAMの役割を作成します
次のコードを作成するAAMの役割とポリシーをビルドAWSのアプリケーションランナーサービス.
キー
その後、AWSはアプリランナーのためのポリシーを準備しているので、IAMの役割にそれを添付してください.
最後に、TraraFormでアプリケーションランナーリソースを作成します.
いくつかのアプリケーションランナー関連のリソースがありますが、彼らは実際にアプリケーションランナーAWSUNE APPRUNNERRANサービスを作成するための主要なリソースです.
ソース設定
我々は2つの方法は、アプリケーションランナーをECRリポジトリを展開する必要があります.は、ECRプライベートリポジトリでアプリランナーを展開 は、ECRパブリックリポジトリでアプリランナーを展開
アプリケーションコマンドの実行結果として作成したアプリケーションランナーのURLを確認したいので、
実行を完了するには2〜3分かかります.
実行が完了すると、以下のようにURLが表示されます.
AWSのアプリランナーは、開発者が迅速にコンテナのWebアプリケーションとAPIを展開し、スケールで、事前のインフラストラクチャの経験が必要になります完全に管理サービスです.ソースコードまたはコンテナイメージで起動します.アプリケーションランナーが自動的に構築し、Webアプリケーションを展開し、暗号化とトラフィックの負荷を負担します.アプリランナーもスケールアップまたはダウントラフィックのニーズを満たすために自動的に.アプリランナーではなく、サーバーやスケーリングについて考えるよりも、あなたのアプリケーションに集中するより多くの時間があります.
必要条件
デモNodeJSアプリケーションを準備する
デモディレクトリという名前のプロジェクトディレクトリをシステム内に作成し、現在のディレクトリにします.
mkdir demo-application
cd demo-application
デモアプリケーションディレクトリ内のノードを初期化するには、次のコマンドを実行します.デフォルト設定のJSプロジェクトnpm init -y
ノードでエクスプレスを設定します。js
Expressフレームワークをアプリケーションで使用するには、プロジェクト依存性としてインストールします.
npm i express
パッケージの後.Jsonは以下のようになります{
"name": "demo-application",
"version": "1.0.0",
"description": "demo-application",
"main": "index.js",
"scripts": {
"start": "node index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"express",
"hello-world"
],
"author": "Prashant_B",
"license": "MIT",
"dependencies": {
"express": "^4.15.0"
}
}
次に、アプリケーションのエントリポイントを作成します.jstouch index.js
インデックスに次のコードを追加します.jsファイル.var express = require('express')
var app = express()
app.get('/', function (req, res) {
res.send('Hello World!')
})
app.listen(3000, function () {
console.log('Listening on port 3000...')
})
このアプリは、サーバーを起動し、接続のポート3000を聞きます.アプリは“こんにちは世界!”ルートURL (/)またはルートへのリクエストに対して.他のすべてのパスについては、404が見つかりません.私たちのデモのアプリケーションは、現在Goto Gituub、新しいリポジトリを作成し、Githubリポジトリにアプリケーションのソースコードをプッシュ準備ができました.
地形に移りましょう
バージョン
AWSアプリランナーをビルドするには、次のバージョンを満たす必要があります.
テララーAWSプロバイダー
今回は、次のバージョンで構築しました.
$ terraform version
Terraform v1.0.0
on linux_amd64
地形を使って作成されるアマゾン資源terraformモジュールは、単一のディレクトリ内の地形形式ファイルの集合です.一つ以上のディレクトリからなる単純な構成であっても.tfファイルはモジュールです.このディレクトリから直接terraformコマンドを実行すると、ルートモジュールと見なされます
次のコードを作成するAAMの役割とポリシーをビルドAWSのアプリケーションランナーサービス.
キー
build.apprunner.amazonaws.com
は、前提となるサービスが指定されるサービスを指定するためにtasks.apprunner.amazonaws.com
である.その後、AWSはアプリランナーのためのポリシーを準備しているので、IAMの役割にそれを添付してください.
resource "aws_iam_role" "role" {
name = "test-role"
assume_role_policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": [
"build.apprunner.amazonaws.com",
"tasks.apprunner.amazonaws.com"
]
},
"Effect": "Allow",
"Sid": ""
}
]
} EOF
}
resource "aws_iam_role_policy_attachment" "test-attach" {
role = aws_iam_role.role.name
policy_arn = "arn:aws:iam::aws:policy/service-role/AWSAppRunnerServicePolicyForECRAccess"
}
アプリランナー
最後に、TraraFormでアプリケーションランナーリソースを作成します.
いくつかのアプリケーションランナー関連のリソースがありますが、彼らは実際にアプリケーションランナーAWSUNE APPRUNNERRANサービスを作成するための主要なリソースです.
ソース設定
我々は2つの方法は、アプリケーションランナーをECRリポジトリを展開する必要があります.
アプリケーションランナーを配備する
resource "aws_apprunner_auto_scaling_configuration_version" "ngnix-apprunner-autoscaling" {
auto_scaling_configuration_name = "demo_auto_scalling"
max_concurrency = 100
max_size = 5
min_size = 1
tags = {
Name = "demo_auto_scalling"
}
}
resource "aws_apprunner_service" "ngnix-apprunner-service-ecr" {
service_name = "demo_apprunner"
source_configuration {
image_repository {
image_configuration {
port = "80"
}
image_identifier = "XXXXX.dkr.ecr.us-east-2.amazonaws.com/nginx-web:latest"
image_repository_type = "ECR"
}
authentication_configuration{
access_role_arn = aws_iam_role.role.arn
}
auto_deployments_enabled = true
}
auto_scaling_configuration_arn = aws_apprunner_auto_scaling_configuration_version.ngnix-apprunner-autoscaling.arn
health_check_configuration {
healthy_threshold = 1
interval = 10
path = "/"
protocol = "TCP"
timeout = 5
unhealthy_threshold = 5
}
tags = {
Name = "demo_apprunner"
}
}
アプリケーションのランナーを展開する
Note: In this approach we don't need IAM role.
resource "aws_apprunner_auto_scaling_configuration_version" "ngnix-apprunner-autoscaling" {
auto_scaling_configuration_name = "demo_auto_scalling"
max_concurrency = 100
max_size = 5
min_size = 1
tags = {
Name = "demo_auto_scalling"
}
}
resource "aws_apprunner_service" "ngnix-apprunner-service-ecr-public" {
service_name = "demo_apprunner"
source_configuration {
image_repository {
image_configuration {
port = var.port
}
image_identifier = "public.ecr.aws/nginx/nginx:latest"
image_repository_type = "ECR_PUBLIC"
}
auto_deployments_enabled = false
}
auto_scaling_configuration_arn = aws_apprunner_auto_scaling_configuration_version.ngnix-apprunner-autoscaling.arn
health_check_configuration {
healthy_threshold = 1
interval = 10
path = "/"
protocol = "TCP"
timeout = 5
unhealthy_threshold = 5
}
tags = {
Name = "demo_apprunner"
}
}
アプリケーションランナーのアプリケーションを作成したのURLをチェック
アプリケーションコマンドの実行結果として作成したアプリケーションランナーのURLを確認したいので、
output
を設定します.output "app_runner_url" {
value = aws_apprunner_service.example.service_url
}
その後、次のコマンドを実行します.terraform init
terraform plan
terraform apply
実行を完了するには2〜3分かかります.
実行が完了すると、以下のようにURLが表示されます.
app_runner_url = "xxxxx.us-east-2.awsapprunner.com/"
あなたが応答を送信したり、メモを追加してくださいするために何かを持っている場合は、読んでいただきありがとうございます!Reference
この問題について(terraform - AdedeAppunnerでnodejsアプリケーションを展開する), 我々は、より多くの情報をここで見つけました https://dev.to/prashant_b/terraform-deploy-nodejs-application-with-aws-apprunner-22h2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol