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

2023年3月15日(水)
大関 研丞 (Kenneth Ozeki)
第2回となる今回は、Pulumiのアカウント作成からAWSリソースの作成まで、ハンズオンを通して一通り実践していきます。

はじめに

前回は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>
著者
大関 研丞 (Kenneth Ozeki)
クリエーションライン株式会社 Data Platform Team
前職では保険や金融エンタープライズのミッションクリティカルシステム(オンプレミス、仮想サーバー、CDN等のインフラ系業務)の設計/構築を経験。クリエーションラインに転職後はクラウドエンジニアとしてGCP関連の案件でインフラの設計/構築、IaCやCI/CDを用いたDevOpsの導入、コンテナ(Kubernetes)基盤の構築、運用自動化ツールの作成などを担当。
クリエーションラインの技術ブログをチェック

連載バックナンバー

システム運用技術解説
第10回

Pulumiの最新機能「Pulumi ESC」を使ってみよう

2023/12/26
最終回となる今回は、2023年12月時点でリリースされている新機能の紹介と、その新機能の中から「Pulumi ESC」を用いたハンズオンを実践していきます。
システム運用技術解説
第9回

TerraformからPulumiへの移行

2023/11/28
第9回となる今回は、既にTerraformでAWS環境に作成されているリソースをPulumiへ移行するケースを想定して、CoexistenceとConversionのハンズオンを実践していきます
システム運用技術解説
第8回

既に存在するリソースをPulumiで管理してみよう

2023/10/19
第8回となる今回は、既にクラウド環境にデプロイされているリソースをPulumiで管理(import)する方法について、ハンズオンで実践していきます。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています