投稿

5月, 2020の投稿を表示しています

TerraformでAWSリソース1種類を複数個作成する

ここんとこ Terraform づくしです。 前回 は APIGateway と Lambda と SNS と S3 を一気にまとめて作成するものを作ったわけですが、諸般の事情から複数の DynamoDB と複数のLambdaそして複数のAPIGateway、、はてはS3まで準備しないといけなくなったので、いろいろと試行錯誤しながら準備しました。 1つのリソースを複数個用意するとかいうサンプルがなかなかなかったので 役に立つかなと思って備忘録として残しておきます。 *なんかもっと効率いい方法あれば教えてほしい。 そしてTerraformはプログラムではないのでforとかifの使い方に癖があるし 結構な制約事項となります。けれども、1個覚えればどこのクラウドだろうが オンプレだろうが1つの記述法で行けるというのは非常に魅力的なんですよねぇ。 ◆設定 1.terraformファイル群  (1)ルートに置くもの # main.tf ----------------- resource "aws_sns_topic" "this_sns_topic" { name = var.sns_topic_name } module "lambda" { source = "./lambda" } module "apigateway" { source = "./apigateway" region = var.region account_id = var.account_id } module "dymano" { source = "./dynamodb" } module "s3" { source = "./s3" } ----------------- # variables.tf ----------------- variable "access_key" { description = "AWS Access Key" }

TerraformでSNSトピックとAPIGateway+LambdaとS3Bucketを一撃で作成してみた

イメージ
以前に Terraformで3大クラウドの仮想ネットワークを作って 、その後Teraform熱は冷めていた感じだったのですが、急遽AWSの開発環境が必要になって本番環境のやつをコピーしようと思ったんですが、そこで APIGateway を一々ちまちまとやるのがめんどくさく、かといって ServelessFramework でやるのもなぁと思ったのでここで登場の Terraform です。当然ながらAPIGatewayどころか Lambda とか S3 とか主要どころのAWSのリソースはいじくれます。なんか CloudFormation も いじくれるらしい です。頼もしい限りです。 そこで コピペ の限りを尽くして本番環境のAPIGatewayとかLambdaをバコンと自分で用意したAWSのアカウントに投入します。 とりあえず今回の準備に必要となる「 SNS トピック」と「APIGateway」それと「Lambda」そして「S3」のBucketを準備します。コマンド一発で出来上がる様にしたいところですがSNSについては メールのサブスクライバ は承認が必要なのでTerraformが対応していないのでトピックのみ作成です。 ◆設定ファイルやコマンド関連など #事前準備(環境変数に埋込) $ export TF_VAR_access_key="アクセスキー" $ export TF_VAR_secret_key="シークレットキー" $ export TF_VAR_role_arn="IAMロールのARN" #1.作業用ディレクトリ作成 $ mkdir apigwsample $ cd apigwsample $ mkdir apigateway lambda s3 #2.ルートのtfファイル作成 $ vi main.tf ※以下の内容を新規作成 --------------------- resource "aws_sns_topic" "this_sns_topic" { name = var.sns_topic_name } module "lambda" { source = "./lambda"

3大クラウドのFaaSをServelessFrameworkでやってみた。

イメージ
Terraformで3大クラウドのVPC構築できるところは試した ので、次はいよいよ本命の Serveless を試してみようということで ServelessFramework に手を出してみました。 クラウドプロバイダー 間の差異を吸収して FaaS を統一的に動かそうというような そういう発想のものだそうです。 マルチクラウド でServeless構成でなるべく手間を少なくという発想なので非常に ありがたいサービスじゃないかと飛びついた次第です。 コンテナ とか k8s 使えというお声もあるかもしれないですが、なんせ自身がへぼいのと サーバという発想が残ったり環境依存とかできてしまったりとかするし スケールするときとかもう考慮しないといけないことが色々あるのでかなり逃げています。 Docker-compose ですら逃げてたりする位、ダメな奴なので設定とか、もうあまり考えたくありません。 どうしてもマネージドサービスで何とかしたいと思い、少し調べてみた次第です。 ひとまず手順まとめてみました。 3つの 仮想マシン準備 してそれぞれ AWS用、GCP用 、 Azure用 に割り当てました。それぞれの仮想マシン構築方法やCLIインストール手順は割愛します。 GCPについては Teraformで作成したプロジェクト を流用しています。 ◆インストール手順 $ sudo apt install -y nodejs npm $ sudo npm install n -g $ sudo n stable $ sudo apt purge -y nodejs npm $ exec $SHELL -l $ node -v v12.16.0 $ npm -v 6.13.4 $ sudo npm install -g serverless $ sudo chown -R $USER:$(id -gn $USER) /home/users/.config $ serverless --version Framework Core: 1.67.3 Plugin: 3.6.6 SDK: 2.3.0 Components: 2.30.1 $ sudo npm install serverless-offline $ mkdir sls $ cd sls