AWSTypeScriptInfrastructure_as_codePulumiAdventCalendar2021

Pulumi (TypeScript) で AWS Native Package を利用する初期設定

はじめに

Public preview 中の AWS Native Package の初期設定方法について本記事にまとめました。 AWS Native Package については ▼ 記事を参照してみてください

Pulumi の project は作成済みであることを前提として記載します。 まだ、 project を作成していない方は以下記事や公式ドキュメントを参考に初期設定まで完了させてください。

実行環境

% sw_vers
ProductName:	macOS
ProductVersion:	12.0.1
BuildVersion:	21A559
% node -v
v16.10.0
% yarn -v
1.22.17

AWS Native Package を追加

yarn add @pulumi/aws-native を実行し aws-native package を追加します

yarn add @pulumi/aws-native

region を設定する

AWS Native Package も AWS Classic と同様に region の設定を行う必要があります。 今回は、東京リージョン ap-northeast-1 を設定します

pulumi config set aws-native:region ap-northeast-1

credentials を設定する

AWS のリソースを操作するため 対象のアカウントにアクセスできる権限を付与します。 access_keyassumeRole などサポートしていますが今回は、シンプルに access_key を発行して検証します。

IAM の作成や access_key の発行がわからない方は以下ドキュメントを参考に作成してください

発行した IAM の access_keysecret_keypulumi config set コマンドを用いて設定します。

設定する際は --secret オプションを必ず設定してください。 オプションを指定しないと、Pulumi.stack_name.yml に平文で記載されてしまいます。

pulumi config set aws-native:accessKey xxxxxxxxxxx --secret
pulumi config set aws-native:secretKey xxxxxxxxxxx --secret

pulumi config set を利用しなくても 環境変数からも token を渡すことができます。

export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY_ID
export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY

ここまで設定すれば AWS Native Package で AWS リソースの管理を行うことができます。

AWS Native Package で 情報を参照してみる

今回は、 Pulumi で 管理対象としたリージョン情報が取得できるか確認してみます。

import * as pulumi from "@pulumi/pulumi"
import * as awsNative from "@pulumi/aws-native"

export const region = awsNative.getRegion()

yarn preview を実行します region 情報が Outputs に表示されました。

% yarn preview
Previewing update (xxxxxxx)

View Live: https://app.pulumi.com/mziyut/xxxxxxx/xxxxxxx/xxxxxxx/xxxxxxx-xxxxxxx-xxxxxxx-xxxxxxx-xxxxxxx

     Type                 Name                       Plan
     xxxxxxx              xxxxxxx

Outputs:
  + region       : {
      + region: "ap-northeast-1"
    }

Resources:
    x unchanged

最後に

AWS Native Package はまだ public preview ということもあり対応していないリソースも多い状態です。 今後は、AWS Native Package の利用がスタンダードになっていくことは明確なため、 新規で作成するリソースは AWS Native Package を使った構築することを検討してみてください。

Reference