# Stripe Terraform プロバイダーをインストールする ローカル開発用のプロバイダーを設定します。 Stripe Terraform プロバイダーを利用すると、インフラストラクチャーをコードとして活用して Stripe のリソースを管理できます。宣言的な Terraform 構文を使用して、商品、価格、請求メーター、複雑な料金プランを設定しましょう。Stripe インフラ構成がバージョン管理可能になり、再現性と監査性が向上します。API に関する情報はこちらの [Stripe API リファレンス](https://docs.stripe.com/api.md) をご覧ください。 ## サンプルワークフロー このワークフローに従って、継続価格とイベントを受信する Webhook エンドポイントのある商品を作成します。 新しい Terraform ファイル `main.tf` を作成します。 ```hcl terraform { required_providers { stripe = { source = "stripe/stripe" version = "0.1.3" } } } provider "stripe" { # API key is read from STRIPE_API_KEY environment variable # Alternatively, set it explicitly (not recommended for production) # api_key = "sk_test_..." } # Define a product resource "stripe_product" "pro_plan" { name = "Pro Plan" description = "Professional tier with advanced features" } # Create a recurring price for the product resource "stripe_price" "pro_monthly" { product = stripe_product.pro_plan.id currency = "usd" unit_amount = 2900 recurring { interval = "month" } } # Set up a webhook endpoint for payment events resource "stripe_webhook_endpoint" "payments" { url = "https://api.example.com/webhooks/stripe" enabled_events = [ "payment_intent.succeeded", "payment_intent.payment_failed", "customer.subscription.created", "customer.subscription.deleted", ] } output "price_id" { value = stripe_price.pro_monthly.id } ``` API キーを設定します: ```bash export STRIPE_API_KEY="<>" ``` 変更を確認して適用します: ```bash terraform plan terraform apply terraform output ``` ## サポートされるリソース このセクションでは利用可能なリソースについて簡単にご紹介します。詳細な解説と設定可能なパラメーターについては [サポートされているリソース](https://docs.stripe.com/terraform/resources.md) をご覧ください。 ### 商品カタログ | リソース | 説明 | | ----------------------------- | --------------- | | `stripe_product` | 商品の定義 | | `stripe_price` | 料金体系の設定 | | `stripe_coupon` | 割引クーポン | | `stripe_shipping_rate` | 配送料金の設定 | | `stripe_tax_rate` | 税率の定義 | | `stripe_entitlements_feature` | エンタイトルメントの機能フラグ | ### コアリソース | リソース | 説明 | | ---------------------------------- | ------------------ | | `stripe_customer` | 顧客レコード | | `stripe_webhook_endpoint` | Webhook エンドポイントの設定 | | `stripe_billing_meter` | 使用状況追跡メーター | | `stripe_v2_core_event_destination` | イベントの送信先の設定 | ### 高度な従量課金制 (Private preview) これらのリソースは Billing v2 API の一部であり、プライベートプレビューへのアクセスが必要です。 | リソース | 説明 | | ------------------------------------------ | ---------------- | | `stripe_v2_billing_pricing_plan` | 料金プランコンテナ | | `stripe_v2_billing_pricing_plan_component` | プランの構成要素 | | `stripe_v2_billing_licensed_item` | ライセンスされたアクセスアイテム | | `stripe_v2_billing_license_fee` | サブスクリプション料金 | | `stripe_v2_billing_metered_item` | 従量課金の請求項目 | | `stripe_v2_billing_rate_card` | コンテナの料金体系 | | `stripe_v2_billing_rate_card_rate` | 個々の料金 | | `stripe_v2_billing_service_action` | クレジットと調整 | ### データソース | データソース | 説明 | | ---------------------- | -------------- | | `stripe_billing_meter` | 既存の請求メーターを検索する | ## ワークスペースのある複数の環境を管理 Terraform ワークスペースを使用すると、分離された状態ファイルで個別の Stripe 環境 (サンドボックスと本番環境) を管理できます。これにより、サンドボックスでの作業時に本番環境のリソースが誤って変更されるのを防ぐことができます。 ### ワークスペースを設定する サンドボックスと本番環境用のワークスペースを作成します: ```bash # Create workspaces terraform workspace new sandbox terraform workspace new livemode # List available workspaces terraform workspace list ``` ### 環境を切り替える 各ワークスペースでは、独自の状態ファイルが保持されています。ワークスペースを切り替えて、対応する API キーを設定します。 ```bash # Work in sandbox terraform workspace select sandbox export STRIPE_API_KEY=<> terraform plan terraform apply # Work in livemode (production) terraform workspace select livemode export STRIPE_API_KEY="sk_live_..." terraform plan terraform apply ``` ## レート制限への対処 Terraform はデフォルトで操作を並行して実行するため、多くの Stripe リソースの管理時にレート制限エラーが発生する可能性があります。Stripe API では、[本番環境で 1 秒あたり最大 100 回の読み取り操作、サンドボックスモードで 25 回の読み取り操作](https://docs.stripe.com/rate-limits.md)が許可され、個々の API エンドポイントには独自の制限があります。 レート制限に達しないようにするには、`-parallelism`フラグを使用して、同時操作の数を減らします。 ```bash terraform plan -parallelism=2 terraform apply -parallelism=2 ``` 大規模なインフラストラクチャのデプロイでは、レート制限内に収まるように `parallelism` を 2 〜 5 に設定することを推奨します。これは、レート制限が低いサンドボックスモードで重要です。