メインコンテンツまでスキップ

CloudFormationを使ったデプロイと動作確認

本カタログのサンプルコードを AWS CloudFormation を使用してデプロイし、動作確認を行う方法を記載したドキュメントです。AWS CloudFormation を使って実際にリソースをAWS上にデプロイしていきます。

デプロイ構成

デプロイ手順

1. デプロイで利用する IAM Role と権限を確認

AMI で作成したインスタンスに付与したインスタンスロールの権限を確認してください。おすすめするやり方は、Administrator 権限付与後実行し、以降は AWS IAM Access Analyzer を利用して必要な権限を絞り込んで適用するやり方です。

2. VPCデプロイ

まずはVPCをデプロイするためにaws-cliを使ってCloudFormationのデプロイを実行します。コマンド実行後AWSのマネジメントコンソールからデプロイの成功を待ちます。--stack-nameAppNameEnvNameはあなたの環境に合わせて好きな値を入れて下さい

[ec2-user ~]aws cloudformation create-stack \
--region us-east-1 \
--stack-name vpc \
--template-body file://deploy/cloudformation/vpc.yaml \
--parameters \
ParameterKey=AppName,ParameterValue=myapp \
ParameterKey=EnvName,ParameterValue=dev \
--capabilities CAPABILITY_NAMED_IAM

デプロイ完了後、マネジメントコンソールの出力タブを開いて以下の値を確認します。これらの値はその後のスタックのデプロイにて使用します。

3. データベースのデプロイ

Amazon Aurora PostgreSQLを先ほどデプロイしたVPC内にデプロイします。

[ec2-user ~]aws cloudformation create-stack \
--region us-east-1 \
--stack-name db \
--template-body file://deploy/cloudformation/db.yaml \
--parameters \
ParameterKey=AppName,ParameterValue=myapp \
ParameterKey=EnvName,ParameterValue=dev \
ParameterKey=DBUserName,ParameterValue=postgreAdmin \ # 好きな値を入れて下さい
ParameterKey=DBUserPassword,ParameterValue=SuperSecurePass123 \ # 8文字以上の好きな値を入れて下さい
ParameterKey=VpcId,ParameterValue=vpc-01187493c944a7ff0 \ # VPCの出力タブに出てきた値を入れます
ParameterKey=PrivateSubnet1,ParameterValue=subnet-0ba1ff7efe656281e \ # VPCの出力タブに出てきた値を入れます
ParameterKey=PrivateSubnet2,ParameterValue=subnet-0007df266992e3a06 \ # VPCの出力タブに出てきた値を入れます
--capabilities CAPABILITY_NAMED_IAM

DBのデプロイが完了したらマネジメントコンソールの出力タブよりAuroraクラスターのライターインスタンスのエンドポイントを確認します。

4. API Gateway + LambdaのCloudFormationスタックのデプロイ

同様にaws-cliにてスタックのデプロイを行います。

[ec2-user ~]aws cloudformation create-stack \
--regio us-east-1 \
--stack-name apigateway-lambda \
--template-body file://deploy/cloudformation/apigateway-lambda.yaml \
--capabilities CAPABILITY_NAMED_IAM \
--parameters \
ParameterKey=AppName,ParameterValue=myapp \
ParameterKey=EnvName,ParameterValue=dev \
ParameterKey=VpcId,ParameterValue=vpc-01187493c944a7ff0 \
ParameterKey=PrivateSubnet1,ParameterValue=subnet-0ba1ff7efe656281e \
ParameterKey=PrivateSubnet2,ParameterValue=subnet-0007df266992e3a06 \
ParameterKey=S3SourceCodeBucket,ParameterValue=$BUCKET_NAME \
ParameterKey=S3SourceCodeKey,ParameterValue=sample_api.zip \
ParameterKey=DbHost,ParameterValue=db-postgresql-rqoopbocmcqq.cluster-chptakso6oan.us-east-1.rds.amazonaws.com \ # Auroraクラスターのライターインスタンスのエンドポイント
ParameterKey=DbUser,ParameterValue=postgreAdmin \
ParameterKey=DbPassword,ParameterValue=SuperSecurePass123 \
ParameterKey=DbName,ParameterValue=mydb

デプロイが成功するとAPIエンドポイントが出力タブに表示されます。これを使って動作確認を行いましょう。

5. S3イベント + LambdaのCloudFormationスタックのデプロイ

[ec2-user ~]aws cloudformation create-stack \
--region us-east-1 \
--stack-name s3-lambda \
--template-body file://deploy/cloudformation/s3-lambda.yaml \
--capabilities CAPABILITY_NAMED_IAM \
--parameters \
ParameterKey=AppName,ParameterValue=myapp \
ParameterKey=EnvName,ParameterValue=dev \
ParameterKey=VpcId,ParameterValue=vpc-01187493c944a7ff0 \
ParameterKey=PrivateSubnet1,ParameterValue=subnet-0ba1ff7efe656281e \
ParameterKey=PrivateSubnet2,ParameterValue=subnet-0007df266992e3a06 \
ParameterKey=S3SourceCodeBucket,ParameterValue=$BUCKET_NAME \
ParameterKey=S3SourceCodeKey,ParameterValue=sample_event.zip \
ParameterKey=DbHost,ParameterValue=db-postgresql-rqoopbocmcqq.cluster-chptakso6oan.us-east-1.rds.amazonaws.com \
ParameterKey=DbUser,ParameterValue=postgreAdmin \
ParameterKey=DbPassword,ParameterValue=SuperSecurePass123 \
ParameterKey=DbName,ParameterValue=mydb

デプロイが成功するとイベントがトリガーされるS3バケットが生成されます。ここにユーザデータのCSVをアップロードするとLambdaファンクションが起動してDBにデータが作成されます。

動作確認

お疲れ様でした。こちらのページより動作確認が行えます。