ただメモができるだけのブラウザアプリ「TextArea」はこちらw

LocalStackを使ってローカル開発環境で AWS 環境をエミュレートする

LocalStackを使ってローカル開発環境で AWS をエミュレートしてみます。

LocalStackコンテナを自分のPCで立ち上げ、AWS CLIやプログラムの向き先をLocalStackコンテナにすることで、エミュレートされたAWS(実際のAWSではない、自分用のAWSエミュレート環境)を使った動作確認が可能です。

LocalStackのインストール

以下のコマンドで、GitHubからLocalStack環境一式をダウンロードします。

git clone https://github.com/localstack/localstack.git
cd localstack

以下のコマンドで、LocalStackコンテナを立ち上げます。

docker-compose up -d

以下のコマンドで、使用できるAWSサービスの一覧取得してみます。

curl -s "http://127.0.0.1:4566/_localstack/health" | jq .

<取得した使用できるサービスの一覧>

{
  "services": {
    "acm": "available",
    "apigateway": "available",
    "cloudformation": "available",
    "cloudwatch": "available",
    "config": "available",
    "dynamodb": "available",
    "dynamodbstreams": "available",
    "ec2": "available",
    "es": "available",
    "events": "available",
    "firehose": "available",
    "iam": "available",
    "kinesis": "available",
    "kms": "available",
    "lambda": "available",
    "logs": "available",
    "opensearch": "available",
    "redshift": "available",
    "resource-groups": "available",
    "resourcegroupstaggingapi": "available",
    "route53": "available",
    "route53resolver": "available",
    "s3": "running",
    "s3control": "available",
    "scheduler": "available",
    "secretsmanager": "available",
    "ses": "available",
    "sns": "available",
    "sqs": "available",
    "ssm": "available",
    "stepfunctions": "available",
    "sts": "available",
    "support": "available",
    "swf": "available",
    "transcribe": "available"
  },
  "edition": "community",
  "version": "3.4.1.dev"
}

いっぱいある….!素晴らしー

AWS CLIでLocalStackを使ってみる

AWS CLIのインストール

PCがmacの場合

以下のコマンドでAWS CLIをインストールします。

brew install awscli

PCがWindowsの場合

以下URLからMSI インストーラをダウンロードして、AWS CLIをインストールします。

https://s3.amazonaws.com/aws-cli/AWSCLISetup.exe

動作確認

以下のコマンドでAWS CLIがインストールできているか確認します。

aws --version

以下のような出力がされればOKです。

aws-cli/2.15.48 Python/3.11.9 Darwin/23.4.0 source/arm64 prompt/off

AWS CLIの設定

以下のように設定します。

aws configure --profile localstack
AWS Access Key ID [None]: aaa
AWS Secret Access Key [None]: aaa
Default region name [None]: ap-northeast-1
Default output format [None]:

Access KeyとSecret Access keyは適当な値でOKです。

regionは「ap-northeast-1」を指定、formatは指定なしでOK

S3バケットを作ってみる

以下のコマンドで「test-bucket」という名前のS3バケットを作成可能です。

aws --endpoint-url=http://localhost:4566 --profile localstack s3 mb s3://test-bucket

以下のような結果が出力され、バケットが作成されたことがわかります。

make_bucket: test-bucket

AWS CLIの使い方

「aws –endpoint-url=http://localhost:4566 –profile localstack」の部分は固定で、その後ろに実行したいAWSコマンドを記載します。

aws --endpoint-url=http://localhost:4566 --profile localstack {実行したいAWS CLIコマンド}

 

プログラムからLocalStackを使ってみる

プログラムからLocalStackを使ってみます。

プログラム言語はPHPを使い、S3にファイルアップロードしてみます。

PHPでLocalStackを使ってみる

まず、aws-sdk-phpをインストールします。

composer require aws/aws-sdk-php

composer: command not found」と表示された場合、composerのインストールが必要なので、composerインストール後に、上記コマンドを実行します。

macの場合、以下のコマンドでcomposerをインストールできます。

brew install composer

次にPHPファイルを作成します。S3にファイルをアップロードするプログラムです。

vi test.php

<ファイルの中身>


<?php require_once 'vendor/autoload.php'; 
use Aws\S3\S3Client; 
$config = [ 'credentials' => [
        'key' => 'hoge',
        'secret' => 'fuga',
    ],
    'region' => 'ap-northeast-1',
    'endpoint' => 'http://localhost:4566',
    'use_path_style_endpoint' => true,
];

$s3 = new S3Client($config);

// アップロード
$result = $s3->putObject([
    'Bucket' => 'test-bucket',  // バケット名
    'Key' => 'test.txt',      // s3のアップロード先
    'Body' => 'hello world!!', // ファイルの内容
]);

作成したPHPを以下のコマンドで実行します。

php test.php

ファイルがアップロードされているか以下のAWS CLIで確認します。

aws --endpoint-url=http://localhost:4566 --profile localstack s3 ls s3://test-bucket

2024-05-11 17:13:48         13 test.txt

想定通り「test.txt」がアップロードされていることが確認できます。

まとめ

LocalStackを使ってローカル開発環境で AWS 環境をエミュレートする方法を記載しました。

結構簡単に、AWS CLIやプログラムからLocalStackを使用できることがわかりましたー

スポンサーリンク
AWS
フォローする
さゆフィクション