このページ内容は2021年1月21日以降、再調査・再検証してません。実際に扱う際は最新の情報にアクセスしてください。

link
その他
link
Pulumi

Pulumiはインフラ構成をGoやTypeScriptを使って記述できるツールですpulumi。いわゆるIaCで、TerraformやCloudFormationなどと同じものですが、CloudFormationと異なりAWS以外のクラウドサービスでも利用できます。また、Terraformと異なり、独自の言語を使わず、TypeScriptなどで書くことができます。

例えば、以下のように書くと、src配下のindex.htmlをS3にデプロイして公開できます。

1
import * as pulumi from "@pulumi/pulumi";
2
import * as aws from "@pulumi/aws";
3
4
// bucket作成
5
const bucket = new aws.s3.Bucket("my-bucket", {
6
website: { indexDocument: 'index.html' }
7
});
8
9
// index.htmlを配置し、公開設定
10
new aws.s3.BucketObject('index.html', {
11
bucket: bucket,
12
acl: 'public-read',
13
contentType: 'text/html',
14
source: new pulumi.asset.FileAsset('src/index.html')
15
})
16
17
// URLを取得
18
const websiteEndpoint = pulumi.interpolate`http://${bucket.websiteEndpoint}`;
19
20
// Terminalに出力したい項目を書く
21
exports.bucketName = bucket.id
22
exports.websiteEndpoint = websiteEndpoint

デプロイ時はこのような画面になります。また、Terraformと同じように、デプロイごとに状態ファイルを作成するため、差分を確認できます。

pulumiでデプロイしたときの様子

pulumiでデプロイしたときの様子

pulumiでの再デプロイ時の様子 (差分が表示される)

pulumiでの再デプロイ時の様子 (差分が表示される)

Pulumi自体は前からあるのですが、2021年ではNative Providerという機能が追加されましたpulumi_native_provider。これはGCP, Azure, AWSなどで新しいサービスや機能が追加されたときに、その日のうちにPulumiでも利用できるという機能です。すぐ使いたい機能がリリースされたけど、CloudFormationなどが対応してないから手作業でやらないといけない... ということがなくなるリリースで、非常に価値ある機能だと感じています。ちなみに、AWSのNative Provider対応はAWS Cloud Control APIを利用しているようですcloud_control_api


自己紹介
はじめまして Pilefortです。
東京でエソジニアをしてます。
興味のあるスタックは、JavaScript (React, Vue), TypeScript, Rust, WebAssembly, AWS, Pulumi, Serverless Frameworkです。
このブログでは、普段の業務や趣味で気になったことをまとめたり、フロントやAWS, GitHubやTwitterで見かけた面白い記事やニュースをまとめるためのものです。少しでも何かの役に立てば幸いです。
サイトマップ
Notes
業務や趣味での気づき・メモ
Snippets
記事にするまでもないけど、便利なコマンドや豆知識
Works
同人誌一覧