🐋

LocalStackを使ってTerraformを動かす

2025/01/26に公開

背景

  • Terraformを勉強したいがAWSで課金されてしまう懸念がある...。

方針

  • LocalStackを用いてTerraformを動かす。
    • docker上でLocakStackを動かす。
    • jestを用いて、構築したサービスのテストを行う。

詳細(実際にやってみる)

いくつかサービスを構築してみたが、sesを例として挙げる。

検証済みメールを作成するコード

env/local/modules.tf
module "resources" {
  source = "../../modules"
}
modules/ses.tf
resource "aws_ses_email_identity" "sample" {
  email = "sender@example.com"
}

テストコード

ses.test.ts
import { SES } from "aws-sdk";
import clientConfig from "./lib/clientConfig";

const sesClient = new SES(clientConfig);

describe("Amazon SES", () => {
  test("sendEmail", async () => {
    /* when */
    const { MessageId } = await sesClient
      .sendEmail({
        Source: "sender@example.com",
        Destination: {
          ToAddresses: ["recipient@example.com"],
        },
        Message: {
          Subject: { Data: "TEST" },
          Body: {
            Html: {
              Data: "This is a message for the test.",
            },
          },
        },
      })
      .promise();

    /* then */
    expect(MessageId).not.toBeUndefined();
  });
});

参考

Discussion