■ はじめに
https://dk521123.hatenablog.com/entry/2022/03/07/233752
の続き。 今回は、AWS環境で行う。
目次
【0】「Get Started with AWS」について 1)目的 2)実行環境 【1】新規プロジェクトを作成する 1)ログイン 2)プロジェクトの作成 【2】出力ファイルの確認 【3】デプロイ(1回目) 【4】プログラムを修正 1)S3にアップロードするindex.htmlを作成する 2)index.ts を修正する 【5】デプロイ(2回目) 【6】後片付け
【0】「Get Started with AWS」について
* 以下のサイトを参照。
https://www.pulumi.com/docs/get-started/aws/
1)目的
* Pulumi で S3 バケットを作る * そのバケットに「index.html」をアップロードする
2)実行環境
https://www.pulumi.com/docs/get-started/aws/begin/
* 実行環境は、以下の通り。 ~~~~~~~~~~~ + OS : Linux + Pulumi : v3.26.1 + Node.js : v16.14.0 ~~~~~~~~~~~ * 構築されていない場合は、以下の関連記事を参考に構築してみる
Pulumi ~ 環境設定編 ~
https://dk521123.hatenablog.com/entry/2022/01/10/155206
Node.js ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2021/11/06/000000
* AWS でアクセスできるようにしておく(以下参照)
Linuxの場合
export AWS_REGION=<YOUR_RESGION(e.g. us-west-2)> export AWS_ACCESS_KEY_ID=<YOUR_ACCESS_KEY_ID> export AWS_SECRET_ACCESS_KEY=<YOUR_SECRET_ACCESS_KEY> # 確認1(AWS Accountを表示) # https://dev.classmethod.jp/articles/get-aws-account-id-with-get-caller-identity/ aws sts get-caller-identity # 確認2(s3バケット名を表示) aws s3 ls
【1】新規プロジェクトを作成する
https://www.pulumi.com/docs/get-started/aws/create-project/
を参考に実行していく
1)ログイン
「Get Started with AWS」にはないのだが、
https://www.pulumi.com/docs/reference/cli/pulumi_login/
に載っている pulumi login を行う。
コマンド例
# 専用ディレクトリ作成および移動 mkdir quickstart && cd quickstart # MissingRegion対策 export AWS_REGION=us-west-2 $ pulumi login s3://your-s3-for-pulumi/xxxx/quickstart Logged in to user-xxx as user (s3://your-s3-for-pulumi/xxxx/quickstart)
補足:MissingRegion対策
* エラー「MissingRegion: could not find region configuration」が でてきた時の対策。 => 詳細は、以下の関連記事を参照のこと。
https://dk521123.hatenablog.com/entry/2022/01/11/105319
2)プロジェクトの作成
* 「pulumi new <project_name>」でプロジェクト作成
コマンド例
# aws-typescript でプロジェクト作成 pulumi new aws-typescript This command will walk you through creating a new Pulumi project. Enter a value or leave blank to accept the (default), and press <ENTER>. Press ^C at any time to quit. project name: (quickstart) project description: (A minimal AWS TypeScript Pulumi program) This is a sample. Created project 'quickstart' stack name: (dev) Created stack 'dev' Enter your passphrase to protect cofig.secrets:<Password> Re-enter your passphrase to confirm:<Password> aws:region: The AWS region to deploy into: (us-east-1) ws-west-2 Saved config Installing dependencies... --- 省略 --- Finished installing dependencies Your new project is ready to go! ✨ To perform an initial deployment, run 'pulumi up'
補足:パスフレーズ省略について
以降、pulumi コマンドを打つごとに、 「Enter your passphrase・・・」って聞いてくる。 うっとしい場合は、以下の関連記事を参照のこと。
https://dk521123.hatenablog.com/entry/2022/03/14/152258
【2】出力ファイルの確認
https://www.pulumi.com/docs/get-started/aws/review-project/
* 以下のようなファイルがあれば、OK + Pulumi.yaml + Pulumi.dev.yaml + index.ts
index.ts
import * as pulumi from "@pulumi/pulumi"; import * as aws from "@pulumi/aws"; import * as awsx from "@pulumi/awsx"; // Create an AWS resource (S3 Bucket) ★「my-bucket」は変更する // https://www.pulumi.com/registry/packages/aws/api-docs/s3/bucket/#bucket const bucket = new aws.s3.Bucket("my-bucket"); // Export the name of the bucket export const bucketName = bucket.id;
【3】デプロイ(1回目)
* とりあえず、pulumi up でデプロイする
コマンド例
pulumi up # yes を選択 # 作成したバケット名を表示 pulumi stack output bucketName
【4】プログラムを修正
https://www.pulumi.com/docs/get-started/aws/modify-program/
1)S3にアップロードするindex.htmlを作成する
cat <<EOT > index.html <html> <body> <h1>Hello, Pulumi!</h1> </body> </html> EOT
2)index.ts を修正する
index.ts
import * as pulumi from "@pulumi/pulumi"; import * as aws from "@pulumi/aws"; import * as awsx from "@pulumi/awsx"; // Create an AWS resource (S3 Bucket) ★「my-bucket」は変更する const bucket = new aws.s3.Bucket("my-bucket"); // ★追加 // https://www.pulumi.com/registry/packages/aws/api-docs/s3/bucketobject/#bucketobject const bucketObject = new aws.s3.BucketObject("index.html", { bucket: bucket, key: "xxxx/xxxx/index.html" source: new pulumi.asset.FileAsset("index.html") }); // Export the name of the bucket export const bucketName = bucket.id;
【5】デプロイ(2回目)
https://www.pulumi.com/docs/get-started/aws/deploy-changes/
コマンド例
# 自信がない場合は、まずは、dry run $ pulumi preview $ pulumi up # yes を選択 $ aws s3 ls $(pulumi stack output bucketName)
【6】後片付け
pulumi destroy
pulumi stack rm dev
関連記事
Pulumi ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/10/23/025230
Pulumi ~ 環境設定編 ~
https://dk521123.hatenablog.com/entry/2022/01/10/155206
Pulumi ~ 入門編 / Hello World in Local/k8s ~
https://dk521123.hatenablog.com/entry/2022/03/07/233752
Pulumi ~ 基本編 / CLI ~
https://dk521123.hatenablog.com/entry/2021/10/25/215508
Pulumi ~ 基本編 / Config ~
https://dk521123.hatenablog.com/entry/2022/03/15/224217
Pulumi ~ 基本編 / Logging ~
https://dk521123.hatenablog.com/entry/2022/03/04/111618
Pulumi ~ 基本編 / Component ~
https://dk521123.hatenablog.com/entry/2022/03/05/100153
Pulumi ~ AWS S3 / KMS のデプロイ ~
https://dk521123.hatenablog.com/entry/2022/03/03/095415
Pulumi ~ AWS Glue のデプロイ ~
https://dk521123.hatenablog.com/entry/2022/03/02/122037
Pulumi ~ AWSリソース情報を取得する ~
https://dk521123.hatenablog.com/entry/2022/03/22/212828
Pulumi ~ パスフレーズ省略を考える ~
https://dk521123.hatenablog.com/entry/2022/03/14/152258
Pulumi に関するトラブル
https://dk521123.hatenablog.com/entry/2022/01/11/105319
Kubernetes ~ Windows / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2020/05/01/000000
Kubernetes ~ 基本編 / kubectlコマンド ~
https://dk521123.hatenablog.com/entry/2022/01/12/110555
Node.js ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2021/11/06/000000