localstack-deploy について
localstack-deploy は、LocalStack 上で AWS インフラをデプロイし、検証するスキルです。Terraform、AWS CDK、CloudFormation、SAM、Pulumi のワークフローを扱います。
主な機能
- 01Terraform 設定のデプロイ
- 02AWS CDK のデプロイ実行
- 03CloudFormation スタックのデプロイ
- 04AWS SAM アプリのビルドとデプロイ
- 05Pulumi プログラムの実行
活用シーン
- 01LocalStack 上でインフラ変更をテスト
- 02デプロイ前の IaC 検証
- 03ローカル開発ワークフローで AWS スタックをデプロイ
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ localstack/ skills --skill localstack-deployインストール後、Claude Code で/localstack-deployを入力して読み込まれたか確認します。
詳細
Infrastructure as Code のデプロイ
Terraform、AWS CDK、CloudFormation、SAM、Pulumi などの一般的な IaC ツールを使用して、AWS インフラストラクチャを LocalStack にデプロイします。
機能
- Terraform の設定を LocalStack にデプロイします
- AWS CDK のデプロイをローカルで実行します
- CloudFormation スタックをデプロイします
- AWS SAM アプリケーションをビルドしてデプロイします
- Pulumi プログラムを LocalStack に対して実行します
- デプロイ前にインフラストラクチャを検証します
前提条件
lstkCLI がインストールされ、エミュレーターが実行中であること(lstk start)—localstackスキルを参照してください- 使用するツールが
PATHにあること:terraform、cdk、sam、またはaws。lstkはこれらをプロキシしますが、同梱はしていません。
lstk は以前の awslocal/tflocal/cdklocal/samlocal ラッパーに代わるものです。これらを pip install/npm install する必要はありません。例外は Pulumi です。Pulumi を参照してください。
Terraform
lstk terraform の使用(推奨)
lstk terraform(エイリアスは lstk tf)は、プロバイダーのオーバーライドファイルを生成して Terraform を LocalStack に対して実行するため、.tf ファイルに LocalStack 固有の変更を加える必要はありません。
lstk terraform init
lstk terraform plan
lstk terraform apply -auto-approve
lstk terraform destroy -auto-approve
# Short alias
lstk tf apply -auto-approve
lstk 固有のフラグは、Terraform のサブコマンドより前に指定します。
lstk terraform --region us-west-2 plan
lstk terraform --account 000000000000 apply
| フラグ | デフォルト | 備考 |
|---|---|---|
--region <region> | us-east-1 | AWS_REGION にフォールバックします |
--account <id> | test | 12 桁です。AWS_ACCESS_KEY_ID にフォールバックします |
便利な環境変数:AWS_ENDPOINT_URL、LSTK_TF_CMD(バイナリ名。デフォルトは terraform)、LSTK_TF_OVERRIDE_FILE_NAME(デフォルトは localstack_providers_override.tf)、LSTK_TF_DRY_RUN。
lstk terraform の接続先は AWS エミュレーターのみです。
プロバイダーの手動設定(代替手段)
手動でプロバイダーを設定するのは、lstk を使用できない場合(たとえば、terraform のみがインストールされた CI イメージの場合)に限ってください。この方法では、Terraform ファイルを変更する必要があります。
# In your provider configuration:
provider "aws" {
access_key = "test"
secret_key = "test"
region = "us-east-1"
endpoints {
s3 = "http://localhost:4566"
dynamodb = "http://localhost:4566"
lambda = "http://localhost:4566"
# Add other services as needed
}
skip_credentials_validation = true
skip_metadata_api_check = true
skip_requesting_account_id = true
}
注:手動設定を使用する場合は、設定内で使用する AWS サービスごとにエンドポイントを指定する必要があります。
AWS CDK
AWS CDK CLI 2.177.0 以降が必要です。
# Bootstrap (first time only)
lstk cdk bootstrap
# Deploy all stacks
lstk cdk deploy --all --require-approval never
# Deploy a specific stack
lstk cdk deploy MyStack
# Synthesize
lstk cdk synth
# Destroy
lstk cdk destroy --all --force
lstk cdk では、CDK コマンドより前に --region <region>(デフォルトは us-east-1)を指定できます。--account フラグはありません。CDK の接続先は常にデフォルトアカウント 000000000000 です。
便利な環境変数:AWS_ENDPOINT_URL、AWS_ENDPOINT_URL_S3、LSTK_CDK_CMD(デフォルトは cdk)、AWS_REGION。
CloudFormation
lstk aws を使用します。ホストの aws CLI を、エンドポイント、認証情報、リージョンがあらかじめ設定された状態でプロキシします。
# Create stack
lstk aws cloudformation create-stack \
--stack-name my-stack \
--template-body file://template.yaml
# Update stack
lstk aws cloudformation update-stack \
--stack-name my-stack \
--template-body file://template.yaml
# Delete stack
lstk aws cloudformation delete-stack --stack-name my-stack
# Describe stack
lstk aws cloudformation describe-stacks --stack-name my-stack
通常の aws CLI を使う場合は、lstk setup aws を一度実行して ~/.aws/config と ~/.aws/credentials に localstack プロファイルを書き込み、その後 aws --profile localstack ... を使用します。
AWS SAM
AWS SAM CLI 1.95.0 以降が必要です。
lstk sam build
lstk sam validate
lstk sam deploy
lstk sam --region us-west-2 deploy
lstk sam では、SAM コマンドより前に --region <region>(デフォルトは us-east-1)と --account <id>(デフォルトは 000000000000)を指定できます。
制限事項: イメージ/コンテナベースの Lambda(ECR)のデプロイと、ネストされた CloudFormation スタックは lstk sam ではサポートされません。これらのワークフローには、samlocal ラッパー(pip install aws-sam-cli-local)をインストールして使用してください。
Pulumi
lstk には Pulumi のプロキシコマンドがないため、引き続き pulumilocal ラッパーが必要です。
pulumilocal の使用(推奨)
# Requires Python/pip — this is an extra install beyond lstk
pip install pulumi-local
# Use pulumilocal instead of pulumi - no config changes needed
pulumilocal preview
pulumilocal up --yes
pulumilocal destroy --yes
手動設定(代替手段)
pulumilocal をインストールできない場合(例:環境で Python/pip を利用できない場合)に限り、手動設定を使用してください。
# Configure Pulumi for LocalStack
pulumi config set aws:accessKey test
pulumi config set aws:secretKey test
pulumi config set aws:region us-east-1
pulumi config set aws:endpoints '[{"s3":"http://localhost:4566"}]'
# Deploy with standard pulumi commands
pulumi preview
pulumi up --yes
pulumi destroy --yes
エンドポイントの解決
lstk aws、lstk terraform、lstk cdk、lstk sam は、localhost.localstack.cloud が 127.0.0.1 に解決されるかを確認し、解決される場合はそれを使用します。解決されない場合は 127.0.0.1:4566 にフォールバックします。LOCALSTACK_HOST 環境変数で上書きできます。
ベストプラクティス
- エンドポイントを IaC ファイルに直接編集して追加するのではなく、
lstk terraform、lstk cdk、lstk sam、lstk awsなどのlstkプロキシコマンドを使用します - AWS にデプロイする前に、インフラストラクチャの変更をローカルでテストします
- LocalStack の再起動後も状態を保持するには、
lstk start --persistを使用します - デプロイ済みのインフラストラクチャを
lstk saveでスナップショットとして保存すると、再デプロイせずにすぐに復元できます。localstack-stateスキルを参照してください - CI では、
lstkコマンドに--non-interactiveを追加し、LOCALSTACK_AUTH_TOKENを設定します