PulumiでAWSリソースをデプロイしよう

第2回となる今回は、Pulumiのアカウント作成からAWSリソースの作成まで、ハンズオンを通して一通り実践していきます。

大関 研丞 (Kenneth Ozeki)

2023年3月15日 6:30

はじめに

前回はPulumiの概要について解説しました。今回は、実際にPulumiを利用してAWSリソースを作成し、簡単な静的サイトのホスティングを試してみます。

ハンズオンの内容については基本的にPulumiの公式HPに掲載されている「Get Started with AWS」に沿って進めつつ、前回で触れたPulumiの概要を復習しながらポイントとなる箇所を解説していきます。Pulumiではあらゆる開発言語(GoやPython、JavaScript、TypeScript、C#など)を用いてIaCを実装できますが、ここではPythonでハンズオンを実施します。

【前提】

  • s3:CreateBucket ポリシーが付与されたAWSアカウントを作成しており、認証が可能である
  • PCにPythonを導入済み(version 3.7以上)

また、ここではmacOSを利用しますが、WindowsやLinuxでもPulumiを利用できます。

ハンズオンの流れ

ハンズオンの流れと関連するサービス/リソースの全体象は下図の通りです。

  1. Pulumi CLIをローカルPCにインストールする
  2. Pulumi Serviceを利用するためのPulumiアカウントを新規作成する
  3. Pulumi CLIを実行する際のAWSへのアクセスが認証されるように設定する
  4. Pulumi CLIよりProjectおよびStackの新規作成を実施する
  5. Programを編集して必要なリソースやOutputについて記載する
  6. 更新後のProgramを元にStackをデプロイする(リソース作成)
  7. Pulumi CLIにより作成された静的Webサイトにアクセスして動作確認する

今回は、手順(5)〜(6)で必要に応じて「Programの編集」と「Stackのデプロイ」を何度か繰り返し、少しずつ必要なリソースやOutputを作成していきます。

事前準備

Pulumi CLIのインストール

ここで紹介するのはmacOSにおけるPulumi CLI(Pulumiコマンド)のインストール手順となります。他のOS(Windows/Linux)におけるインストール手順はこちらを参照ください。本記事でPulumi CLIをインストールした時点(2032年2月1日)では、Pulumi CLIのバージョンは「v3.43.1」でした。特にバージョン指定せず、最新版のPulumi CLIをインストールします。

  1. macOSのCLI(ターミナル)を開き、以下Homebrewを用いてPulumi CLIをインストールします。
    $ brew install pulumi/tap/pulumi
    
    ==> Downloading https://github.com/pulumi/pulumi/releases/download/v3.43.1/pulumi-v3.43.1-darwin-arm64.tar.gz
    ==> Downloading from https://objects.githubusercontent.com/github-production-release-asset-2e65be/72477752/1a12a494-63b3-4c5d-a0be-9ab43628a66a?X-Amz-Algorithm
    ######################################################################## 100.0%
    ==> Installing pulumi from pulumi/tap
    ==> Caveats
    zsh completions have been installed to:
      /opt/homebrew/share/zsh/site-functions
    ==> Summary
    🍺  /opt/homebrew/Cellar/pulumi/3.43.1: 18 files, 203.0MB, built in 5 seconds
    ==> Running `brew cleanup pulumi`...
    Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
    Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
    
  2. 「pulumi version」コマンドを実行し、無事Pulumi CLIがインストールされたことを確認します。
    $ pulumi version
    
    v3.43.1

Pulumiアカウント新規作成

Pulumi Serviceを利用するために必要なアカウントを新規作成します。

  1. 「pulumi login」コマンドを実行後ENTERキーを押下すると、Pulumi Serviceのログイン用画面(Webブラウザ)が表示されます。
    $ pulumi login
    Manage your Pulumi stacks by logging in.
    Run `pulumi login --help` for alternative login options.
    Enter your access token from https://app.pulumi.com/account/tokens
        or hit <ENTER> to log in using your browser                   :

  2. [Create an Account]ボタンをクリックすると、アカウント作成画面に切り替わります。
  3. アカウント作成画面でアカウント作成に用いるサービスを選択します。ここでは[Email]を選択しました。
  4. アカウント情報(Full Name/Username/Email/Password)を入力して、[Sign up]ボタンをクリックします。
  5. アカウント登録が完了するとPulumiのダッシュボード画面に遷移します。
  6. アカウント登録したメールアドレス宛にPulumiのメールアドレス承認メールが送信されます。[Verify Email]をクリックしてメールアドレスを承認します。[Verify Email]をクリックした際も同じく、Pulumiのダッシュボードに遷移されます。
  7. CLIに戻り「pulumi login」コマンドの処理を一度キャンセル(process kill)して、再度「pulumi login」コマンドを実行します。
    $ pulumi login
    
    Manage your Pulumi stacks by logging in.
    Run `pulumi login --help` for alternative login options.
    Enter your access token from https://app.pulumi.com/account/tokens
        or hit <ENTER> to log in using your browser                   : 
    We've launched your web browser to complete the login process.
    
    Waiting for login to complete...
    ^C
    
    $ pulumi login
    Manage your Pulumi stacks by logging in.
    Run `pulumi login --help` for alternative login options.
    Enter your access token from https://app.pulumi.com/account/tokens
        or hit <ENTER> to log in using your browser                   : 
    We've launched your web browser to complete the login process.
    
    Waiting for login to complete...
  8. 再度Pulumi Serviceのログイン用画面が表示されるので、登録したサービス(今回はEmail)のボタンをクリックし、ログインを完了させます。
  9. 無事ログインが完了すると、CLIでは「Welcom to Pulumi!」のメッセージが表示されます。
    Waiting for login to complete...
    
    
      Welcome to Pulumi!
    
      Pulumi helps you create, deploy, and manage infrastructure on any cloud using
      your favorite language. You can get started today with Pulumi at:
    
          https://www.pulumi.com/docs/get-started/
    
      Tip of the day: Resources you create with Pulumi are given unique names (a randomly
      generated suffix) by default. To learn more about auto-naming or customizing resource
      names see https://www.pulumi.com/docs/intro/concepts/resources/#autonaming.
    
    
    Logged in to pulumi.com as **** (https://app.pulumi.com/****)

AWSアカウントへのPulumiアクセス設定

AWSリソースの作成に必要な権限が付与されているAWSアカウント情報を、Pulumi(Pulumi CLI)に設定します。2通りの設定方法があるので、ケースに応じて設定してください。

  • AWS CLIをインストールしており、適切な権限が設定されたIAMユーザーの情報(アクセスキー/シークレットアクセスキーなど)が設定されている場合
    → Pulumi CLIは自動的にAWS CLIが保持するIAMユーザーの情報を利用してAWSにアクセスするので、特に設定は必要ありません。AWS CLIをインストール済みで、まだセットアップが済んでいない場合は「aws configue」コマンドなどでセットアップを実施します。
    $ aws configure
    AWS Access Key ID [None]: ******
    AWS Secret Access Key [None]: ******
    Default region name [None]: ap-northeast-1
    Default output format [None]:
    【aws configureセットアップサンプル】
  • AWS CLIを利用していない(利用する予定がない)場合
  • CI/CD pipelineでPulumiを利用したい場合
    → Pulumi実行環境(ローカルPC/pipeline実行ジョブなど)でIAMユーザーのアクセスキー/シークレットアクセスキーの環境変数をセットします。
    $ export AWS_ACCESS_KEY_ID=<YOUR_ACCESS_KEY_ID>
    $ export AWS_SECRET_ACCESS_KEY=<YOUR_SECRET_ACCESS_KEY>
    Multi-Factor Authentication(MFA)デバイスを利用してAWSアカウントを保護しているなどのケースで一時セッションを利用している場合は、以下の環境変数もセットします。
    $ export AWS_SESSION_TOKEN=<YOUR_AWS_SESSION_TOKEN>

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30