Go_AWSCDK

date
Jan 10, 2023
slug
goawscdk
status
Published
tags
Golang
AWS
summary
GoCDKでAWS Lambda関数とAPI Gateway構成
type
Post

Go_AWSCDK

The cdk.json file tells the CDK toolkit how to execute your app.

Useful commands

  • cdk deploy deploy this stack to your default AWS account/region
  • cdk diff compare deployed stack with current state
  • cdk synth emits the synthesized CloudFormation template
  • go test run unit tests
 
 

コードの概要

AWS CDKを使用してAWSのリソースをプロビジョニングするためのアプリケーションです。
具体的には、AWS Lambda関数とAPI Gatewayを作成しています。
 

パッケージのインポート

package main import (    "github.com/aws/aws-cdk-go/awscdk/v2"    "github.com/aws/aws-cdk-go/awscdk/v2/awslambda"    "github.com/aws/aws-cdk-go/awscdk/v2/awsapigateway"    "github.com/aws/aws-cdk-go/awscdklambdagoalpha/v2"    "github.com/aws/constructs-go/constructs/v10"    "github.com/aws/jsii-runtime-go" )
まず、使用するパッケージをインポートしています。以下は各パッケージの役割です:
  • github.com/aws/aws-cdk-go/awscdk/v2:AWS CDKのコアライブラリです。AWSリソースをプロビジョニングするためのクラスや関数が提供されています。
  • github.com/aws/aws-cdk-go/awscdklambdagoalpha/v2:AWS CDKのLambda Go Runtime用のライブラリです。Go言語で記述されたAWS Lambda関数を作成するためのクラスや関数が提供されています。
  • github.com/aws/aws-cdk-go/awscdk/v2/awsapigateway:AWS CDKのAPI Gateway用のライブラリです。API Gatewayの設定やリソースを作成するためのクラスや関数が提供されています。
  • github.com/aws/constructs-go/constructs/v10:ConstructsフレームワークのGo版です。AWS CDKで使用されるコンストラクトの基礎となるクラスや関数が提供されています。
  • github.com/aws/jsii-runtime-go:AWS CDKのJavaScriptインターフェースインフラストラクチャ(JSII)ランタイムのGo版です。CDKアプリケーションとAWSの間での相互作用をサポートしています。

スタックの定義

type HelloStackProps struct {    awscdk.StackProps } func NewCfdStack(scope constructs.Construct, id string, props *HelloStackProps) awscdk.Stack {    // スタックの初期化    // ...    // Lambda関数の作成    // ...    // API Gatewayの作成    // ...    return stack }
HelloStackProps 構造体は、CDKのスタックのプロパティを定義するためのものです。NewCfdStack 関数は、CDKのスタックを作成するための関数です。このスタックでは、AWS Lambda関数とAPI Gatewayが作成されます。

Lambda関数の作成

func NewAfLambdaHandler(stack awscdk.Stack) awscdklambdagoalpha.GoFunction {    // Lambda関数の初期化    // ...    return handler }
NewAfLambdaHandler 関数は、AWS Lambda関数を作成するための関数です。この関数は、指定されたディレクトリからGo言語で書かれたコードを読み込み、AWS Lambda関数としてデプロイします。(※LambdaとGin統合利用しています。Lambdaフォルダーを参照)

API Gatewayの作成

func NewAfApiGatewap(stack awscdk.Stack, handler awscdklambdagoalpha.GoFunction) {    // API Gatewayの初期化    // ...    // API Gatewayのリソースとメソッドの追加    // ... }
NewAfApiGatewap 関数は、AWS API Gatewayを作成するための関数です。API GatewayはRESTfulなエンドポイントを提供し、Lambda関数と統合します。この関数内では、API Gatewayの初期化やエンドポイントの設定が行われます。

メイン関数

func main() {    // アプリケーションの初期化    // ...    // スタックの作成    // ...    // デプロイ    // ... }
main 関数は、CDKアプリケーションのエントリーポイントです。CDKアプリケーションを初期化し、スタックを作成します。CDKアプリケーションを構築した後、app.Synth() メソッドを呼び出すことで、AWS CloudFormationテンプレートが生成されます。

環境設定

func env() *awscdk.Environment {    // 環境の設定    // ...    return nil }
env 関数は、CDKスタックをデプロイするAWSの環境(アカウントとリージョン)を設定するための関数です。現在のCLIの設定や環境変数を基に環境を指定することができます。
 
以上、です!
記事に関する疑問があればお気軽にご連絡ください。