Pulumi Cloudで新しい変数(environment)を作成
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]をクリックします。
AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_SESSION_TOKENそれぞれの値は、yamlに記載のaws-loginプロバイダーからOIDCを利用して自動的に取得されます。最終的に、Pulumi ESCが実行された際に「environmentVariables」配下に記載した変数のkey、valueがPulumi ESCの実行環境のPCに環境変数としてセットされるイメージです。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"
動作確認
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をレンデリングした内容を取得します。
AWSの認証関連に利用される変数(env)と、自身で設定した変数(env)が取得できていることが確認できます。ちなみに「--format shell」オプションを付加することで、shellコマンドで変数(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" } }$ 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経由であれば、AWSのクレデンシャル情報が設定されていない状態でも無事にawsコマンドが実行できる(認証できる)ことが確認できました。ESCを実行して取得した環境変数をPulumi Programで利用したい場合はconfiguration APIを利用する方法がありますので、ぜひ参考にしてみてください。$ esc run aws-cred-environment -i aws s3 ls 2023-08-23 14:20:30 *** 2023-11-17 13:33:10 ***
おわりに
今回で、「今日からはじめる Pulumiでカンタン インフラ運用・管理」の連載は終了となります。本連載を通じて、Pulumiが提供する素晴らしい機能や利点を少しでも伝えられたなら、大変嬉しく思います。また、クラウドインフラストラクチャの構築と管理がよりシンプルで柔軟になるPulumiの可能性に触れ、読者の皆さんが新たな技術に対する興奮を共有できたなら、それに越したことはありません。
また本連載のような執筆ができる機会が訪れるまで、今後も技術の進化に合わせて、より深い洞察と実践的な情報をお届けできるよう、努力してまいります。最後まで本連載をお読みいただき、本当にありがとうございました。今後ともよろしくお願いいたします。
- この記事のキーワード