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を利用できます。
ハンズオンの流れ
ハンズオンの流れと関連するサービス/リソースの全体象は下図の通りです。
- Pulumi CLIをローカルPCにインストールする
- Pulumi Serviceを利用するためのPulumiアカウントを新規作成する
- Pulumi CLIを実行する際のAWSへのアクセスが認証されるように設定する
- Pulumi CLIよりProjectおよびStackの新規作成を実施する
- Programを編集して必要なリソースやOutputについて記載する
- 更新後のProgramを元にStackをデプロイする(リソース作成)
- 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をインストールします。
- 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`).
- 「pulumi version」コマンドを実行し、無事Pulumi CLIがインストールされたことを確認します。
$ pulumi version v3.43.1
Pulumiアカウント新規作成
Pulumi Serviceを利用するために必要なアカウントを新規作成します。
- 「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 :
- [Create an Account]ボタンをクリックすると、アカウント作成画面に切り替わります。
- アカウント作成画面でアカウント作成に用いるサービスを選択します。ここでは[Email]を選択しました。
- アカウント情報(Full Name/Username/Email/Password)を入力して、[Sign up]ボタンをクリックします。
- アカウント登録が完了するとPulumiのダッシュボード画面に遷移します。
- アカウント登録したメールアドレス宛にPulumiのメールアドレス承認メールが送信されます。[Verify Email]をクリックしてメールアドレスを承認します。[Verify Email]をクリックした際も同じく、Pulumiのダッシュボードに遷移されます。
- 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...
- 再度Pulumi Serviceのログイン用画面が表示されるので、登録したサービス(今回はEmail)のボタンをクリックし、ログインを完了させます。
- 無事ログインが完了すると、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>
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- 既に存在するリソースをPulumiで管理してみよう
- Policy as Codeでインフラのコンプライアンスを自動実現! 「Pulumi CrossGuard」を活用してみよう
- 「Pulumi Stack」とは ー Pulumiによるマルチステージ環境の構築方法
- TerraformからPulumiへの移行
- 「Pulumi Automation API」でPulumi CLIの機能をコード化しよう
- SecretもPulumiで使いこなしたい! PulumiのSecurityを試してみよう
- Pulumi Kubernetes Operatorを活用してPulumiのCI/CDを実現しよう
- Pulumiの最新機能「Pulumi ESC」を使ってみよう
- Oracle Cloud Hangout Cafe Season7 #2「IaC のベストプラクティス」(2023年7月5日開催)
- Infrastructure-as-Codeアプローチと「Pulumi」の概要