Closed 20m61 closed 2 months ago
AWS CLIとCDKをセットアップ(まだインストールしていない場合)。
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version
aws configure
npm install -g aws-cdk
CDKプロジェクトの初期化。
mkdir sonotecture-infra
cd sonotecture-infra
cdk init app --language typescript
Lambda関数を作成。
lib/sonotecture-infra-stack.ts
で、Lambda関数を定義します。例えば、Node.jsを使ったLambda関数を以下のように作成します。import * as lambda from 'aws-cdk-lib/aws-lambda';
import { Stack, StackProps } from 'aws-cdk-lib';
import { Construct } from 'constructs';
export class SonotectureInfraStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
// Lambda関数の作成
const musicGenerationFunction = new lambda.Function(
this,
'MusicGenerationFunction',
{
runtime: lambda.Runtime.NODEJS_LATEST,
handler: 'index.handler',
code: lambda.Code.fromAsset('lambda'), // 'lambda'ディレクトリにハンドラコードを配置
},
);
}
}
Lambda関数のハンドラコード作成。
lambda
フォルダを作成し、その中にindex.js
を作成します。簡単なサンプルコードとしては以下のようにします。exports.handler = async function(event) {
console.log("EVENT: \n" + JSON.stringify(event, null, 2));
return {
statusCode: 200,
body: JSON.stringify({ message: "Hello from Lambda!" }),
};
};
S3バケットを定義。
lib/sonotecture-infra-stack.ts
で、S3バケットを追加します。建物データや静的ファイルをホスティングするために使用します。import * as s3 from 'aws-cdk-lib/aws-s3';
// S3バケットの作成
const dataBucket = new s3.Bucket(this, 'SonotectureDataBucket', {
versioned: true,
removalPolicy: s3.RemovalPolicy.DESTROY, // スタック削除時にバケットを削除
});
API Gatewayの作成とLambdaの接続。
import * as apigateway from 'aws-cdk-lib/aws-apigateway';
// API Gatewayを作成し、Lambda関数をエンドポイントとして指定
const api = new apigateway.LambdaRestApi(this, 'SonotectureApi', {
handler: musicGenerationFunction,
proxy: false
});
// "/generate-music"というエンドポイントを作成
const musicResource = api.root.addResource('generate-music');
musicResource.addMethod('GET'); // GETリクエストを許可
インフラリソースをデプロイ。
cdk deploy
コマンドを使用してインフラリソースをAWSにデプロイします。cdk synth # リソースを確認
cdk deploy # デプロイ実行
APIエンドポイントの確認。
これらの手順で、AWS CDKを使ったインフラ基盤が構築され、Lambda関数、S3バケット、API Gatewayの基本的なセットアップが完了します。次のステップとしては、フロントエンドからAPIを呼び出してデータをやり取りしたり、音楽生成機能をLambdaに実装していくことになります。
AWS CDKを使って、必要なインフラリソース(Lambda、API Gateway、S3など)を定義・デプロイします。