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側で用意していきます。

  1. ブラウザでPulumi Cloudにログインして、左メニューから [Environments] → [Create Environment] をクリックします。
  2. 「Create Environment」画面で「aws-cred-environment」と入力して、[Create Environment]をクリックします。
  3. 変数を定義する「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を利用するための一通りの設定が完了したので、動作確認をしてみます。

  1. ローカルPCで、ESCの変数(env)リストを取得します。
    $ esc env ls
    
    aws-cred-environment
  2. 「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"
  3. 「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"
  4. 最後に「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.
  5. 今度は、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の可能性に触れ、読者の皆さんが新たな技術に対する興奮を共有できたなら、それに越したことはありません。

また本連載のような執筆ができる機会が訪れるまで、今後も技術の進化に合わせて、より深い洞察と実践的な情報をお届けできるよう、努力してまいります。最後まで本連載をお読みいただき、本当にありがとうございました。今後ともよろしくお願いいたします。

【参考】Pulumi公式ホームページ(英語)

人気記事トップ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