連載 [第10回] :
今日からはじめる Pulumiでカンタン インフラ運用・管理Pulumiの最新機能「Pulumi ESC」を使ってみよう
2023年12月26日(火)
最終回となる今回は、2023年12月時点でリリースされている新機能の紹介と、その新機能の中から「Pulumi ESC」を用いたハンズオンを実践していきます。
Pulumi Cloudで新しい変数(environment)を作成
次に、Pulumi Cloud画面にてPulumi ESCで取得する変数を作成します。ESC経由でAWSへの認証を行うために必要となる3つの変数「AWS_ACCESS_KEY_ID」「AWS_SECRET_ACCESS_KEY」「AWS_SESSION_TOKEN」をPulumi Cloud側で用意していきます。
- ブラウザでPulumi Cloudにログインして、左メニューから [Environments] → [Create Environment] をクリックします。
- 「Create Environment」画面で「aws-cred-environment」と入力して、[Create Environment]をクリックします。
- 変数を定義する「Environment definition」欄で以下のyamlに書き換えます。「roleArn」には先ほどの手順で控えたロールのARNを入力します。認証に必要な変数の他に、自身が用意したい変数(TEST_ENV: “hoge”)もテスト用に設定しておきます。入力が完了したら、画面下部の[Save]をクリックします。
values: aws: login: fn::open::aws-login: oidc: duration: 1h roleArn: <your-oidc-iam-role-arn> sessionName: pulumi-environments-session environmentVariables: AWS_ACCESS_KEY_ID: ${aws.login.accessKeyId} AWS_SECRET_ACCESS_KEY: ${aws.login.secretAccessKey} AWS_SESSION_TOKEN: ${aws.login.sessionToken} TEST_ENV: "hoge"
AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_SESSION_TOKENそれぞれの値は、yamlに記載のaws-loginプロバイダーからOIDCを利用して自動的に取得されます。最終的に、Pulumi ESCが実行された際に「environmentVariables」配下に記載した変数のkey、valueがPulumi ESCの実行環境のPCに環境変数としてセットされるイメージです。
動作確認
Pulumi ESCを利用するための一通りの設定が完了したので、動作確認をしてみます。
- ローカルPCで、ESCの変数(env)リストを取得します。
$ esc env ls aws-cred-environment
- 「esc env get」コマンドで、変数(env)の設定内容を確認します。
$ esc env get aws-cred-environment Value { "aws": { "login": null }, "environmentVariables": { "AWS_ACCESS_KEY_ID": null, "AWS_SECRET_ACCESS_KEY": null, "AWS_SESSION_TOKEN": null, "TEST_ENV": "hoge" } } Definition values: aws: login: fn::open::aws-login: oidc: duration: 1h roleArn: arn:aws:iam::*** sessionName: pulumi-environments-session environmentVariables: AWS_ACCESS_KEY_ID: ${aws.login.accessKeyId} AWS_SECRET_ACCESS_KEY: ${aws.login.secretAccessKey} AWS_SESSION_TOKEN: ${aws.login.sessionToken} TEST_ENV: "hoge"
- 「esc env open」コマンドで、変数(env)のvalueをレンデリングした内容を取得します。
$ esc env open aws-cred-environment { "aws": { "login": { "accessKeyId": "ASIA***", "secretAccessKey": "*******", "sessionToken": "*********" } }, "environmentVariables": { "AWS_ACCESS_KEY_ID": "ASIA***", "AWS_SECRET_ACCESS_KEY": "********", "AWS_SESSION_TOKEN": "********", "TEST_ENV": "hoge" } }
AWSの認証関連に利用される変数(env)と、自身で設定した変数(env)が取得できていることが確認できます。ちなみに「--format shell」オプションを付加することで、shellコマンドで変数(env)のvalueをレンダリングした内容を取得できます。$ esc env open aws-cred-environment --format shell export AWS_ACCESS_KEY_ID="ASIA***" export AWS_SECRET_ACCESS_KEY="*******" export AWS_SESSION_TOKEN="************" export TEST_ENV="hoge"
- 最後に「esc run」コマンドで、AWSのクレデンシャル情報が設定されていない状態で「aws s3 ls」コマンドが実行できるか(AWSへの認証が可能か)確認します。まずは、aws s3 lsコマンド単体では認証エラーが出ることを確認します(実行環境によってはエラーメッセージが異なる場合があります)
$ aws s3 ls An error occurred (ExpiredToken) when calling the ListBuckets operation: The provided token has expired.
- 今度は、esc runコマンドを用いてaws s3 lsコマンドを実行します。ESC経由で実行したいコマンドは「-i」オプション以降に指定します。
$ esc run aws-cred-environment -i aws s3 ls 2023-08-23 14:20:30 *** 2023-11-17 13:33:10 ***
ESC経由であれば、AWSのクレデンシャル情報が設定されていない状態でも無事にawsコマンドが実行できる(認証できる)ことが確認できました。ESCを実行して取得した環境変数をPulumi Programで利用したい場合はconfiguration APIを利用する方法がありますので、ぜひ参考にしてみてください。
おわりに
今回で、「今日からはじめる Pulumiでカンタン インフラ運用・管理」の連載は終了となります。本連載を通じて、Pulumiが提供する素晴らしい機能や利点を少しでも伝えられたなら、大変嬉しく思います。また、クラウドインフラストラクチャの構築と管理がよりシンプルで柔軟になるPulumiの可能性に触れ、読者の皆さんが新たな技術に対する興奮を共有できたなら、それに越したことはありません。
また本連載のような執筆ができる機会が訪れるまで、今後も技術の進化に合わせて、より深い洞察と実践的な情報をお届けできるよう、努力してまいります。最後まで本連載をお読みいただき、本当にありがとうございました。今後ともよろしくお願いいたします。
連載バックナンバー
Think ITメルマガ会員登録受付中
Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。
全文検索エンジンによるおすすめ記事
- Pulumi Kubernetes Operatorを活用してPulumiのCI/CDを実現しよう
- PulumiでAWSリソースをデプロイしよう
- SecretもPulumiで使いこなしたい! PulumiのSecurityを試してみよう
- NGINX Ingress Controllerの柔軟なアプリケーション制御、具体的なユースケースと設定方法を理解する
- クラウドネイティブな環境でKeycloakによるシングルサインオンを実現
- Policy as Codeでインフラのコンプライアンスを自動実現! 「Pulumi CrossGuard」を活用してみよう
- Oracle Cloud Hangout Cafe Season4 #4「マイクロサービスの認証・認可とJWT」(2021年7月7日開催)
- マシン・イメージを自動構築し、作業効率を高めるPacker入門
- 3scaleの基本的な使い方
- 3scaleをインストールしてみよう!