mcpField
L
localstack-deploy

localstack-deploy

github.com/localstackクラウド・DevOps1568 回インストール8 週間前に更新
リポジトリ

localstack-deploy について

localstack-deploy は、LocalStack 上で AWS インフラをデプロイし、検証するスキルです。Terraform、AWS CDK、CloudFormation、SAM、Pulumi のワークフローを扱います。

主な機能

  1. 01Terraform 設定のデプロイ
  2. 02AWS CDK のデプロイ実行
  3. 03CloudFormation スタックのデプロイ
  4. 04AWS SAM アプリのビルドとデプロイ
  5. 05Pulumi プログラムの実行

活用シーン

  1. 01LocalStack 上でインフラ変更をテスト
  2. 02デプロイ前の IaC 検証
  3. 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 に対して実行します
  • デプロイ前にインフラストラクチャを検証します

前提条件

  • lstk CLI がインストールされ、エミュレーターが実行中であること(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-1AWS_REGION にフォールバックします
--account <id>test12 桁です。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 を設定します

コメント