見出し画像

Nitricの深掘り:ベストプラクティスとAWSへのデプロイ


はじめに

前回の記事では、Nitricのインストールから初めてのアプリケーション実行までの基本的な手順を解説しました。今回は、Nitricを使用する上でのベストプラクティスと、AWSへのデプロイメント方法について詳しく説明します。

https://hamaruki.com/nitric-framework-revolutionizing-cloud-app-development/

https://hamaruki.com/getting-started-with-nitric/

デモ動画

AWSにNitricアプリをデプロイできた!!!
📌Pulumiをインストール(winget install pulumi)
📌Pulumiアカウント作成&アクセストークン取得
📌環境変数設定:PULUMI_ACCESS_TOKEN
📌AWS CLIインストール&設定(aws configure)
📌プロジェクトディレクトリで「nitric up」実行 https://t.co/T6dPoo6LFq pic.twitter.com/gvlrKOrrJw

-- Maki@Sunwood AI Labs. (@hAru_mAki_ch) August 19, 2024

Nitricのベストプラクティス

Nitricを効果的に使用するために、以下のベストプラクティスを心がけましょう。

1. リソース宣言のルール

✅ ランタイムコードでリソースを宣言しない

from nitric.resources import api, bucket
from nitric.application import Nitric

public_api = api('public')

# ✅ 正しい宣言方法
files = bucket('files').allow('read')

@public_api.get("/files/:name")
async def get_file(ctx):
    # ❌ この宣言は機能しません(ランタイム時のみ呼び出されるため)
    bad_bucket = bucket('wont-work').allow('write')

Nitric.run()

✅ トップレベルコードでランタイムメソッドを使用しない

from nitric.resources import api, bucket
from nitric.application import Nitric

public_api = api('public')
files = bucket('files').allow('read')

# ❌ この操作は機能しません
file_contents = files.file('example.txt').read()

@public_api.get("/files/:name")
async def get_file(ctx):
    # ✅ この操作は機能します
    file_contents = await files.file('example.txt').read()

Nitric.run()

2. リソースの共有と権限管理

✅ 共有リソースの宣言を再利用する

# resources.py
from nitric.resources import api, topic

public_api = api('public')
update_topic = topic('updates')

# services/api.py
from resources import public_api, update_topic

publisher = update_topic.allow('publish')

@public_api.post("/update")
async def new_update(ctx):
    await publisher.publish({"test": "message"})

# services/updates.py
from resources import update_topic

@update_topic.subscribe
async def updates_sub(ctx):
    print(ctx.req.payload)

❌ 共有リソースの権限を一括で宣言しない

各サービスで必要な権限のみを宣言するようにしましょう。

AWSへのNitricアプリケーションデプロイメント

前提条件

  • Nitricがインストールされていること

  • AWSアカウントを持っていること

1. Pulumiのインストールと設定

NitricはデプロイメントにPulumiを使用します。以下の手順でPulumiをインストールし、設定します。

  1. PowerShellを管理者として実行し、以下のコマンドを入力します:

winget install pulumi

または、chocolateyを使用している場合:

choco install pulumi

1. インストールを確認します:

pulumi version

1. Pulumiアクセストークンを設定します: 2. Pulumiのウェブサイトでアクセストークンを生成 3. 環境変数を設定: bash setx PULUMI_ACCESS_TOKEN "your-access-token-here"

2. AWSクレデンシャルの設定

  1. AWS CLIをインストールします(まだの場合)。

  2. AWSクレデンシャルを設定します: bash aws configure

  3. プロンプトに従って、AWS Access Key ID、AWS Secret Access Key、デフォルトリージョン名を入力します。

3. Nitricアプリケーションのデプロイ

  1. Nitricプロジェクトのルートディレクトリに移動します。

  2. スタックを作成します: bash nitric stack new my-aws-stack aws

  3. nitric.aws.yamlファイルを編集してAWS固有の設定を行います: yaml provider: nitric/aws@1.1.0 region: us-east-1 telemetry: 10 config: default: lambda: memory: 1024 memory-optimized: lambda: memory: 4096

  4. デプロイメントを実行します: bash nitric up

トラブルシューティング

  • pulumi is required to use this provider エラー:

  • Pulumiが正しくインストールされているか確認

  • PATHにPulumiのインストールディレクトリが含まれているか確認

  • PULUMI_ACCESS_TOKEN must be set for login during non-interactive CLI sessions エラー:

  • PULUMI_ACCESS_TOKEN 環境変数が正しく設定されているか確認

  • 新しいコマンドプロンプトを開いて環境変数の反映を確認

  • その他のエラー:

  • Nitricの公式ドキュメントを参照

  • Nitricのサポートチームに問い合わせ

セキュリティに関する注意事項

アクセストークンやAWSクレデンシャルなどの機密情報は、適切に管理し、決して公開リポジトリにコミットしないでください。

まとめ

このガイドでは、Nitricのベストプラクティス、AWSへのデプロイメントプロセス、そしてPulumiの設定方法について詳しく解説しました。これらの知識を活用することで、効率的かつ安全なクラウドアプリケーション開発が可能になります。

リソースの適切な宣言と権限管理、Pulumiを使用したAWSへのスムーズなデプロイ、そして潜在的な問題のトラブルシューティングを理解することで、Nitricの力を最大限に活用できるでしょう。

次のステップとして、より複雑なアプリケーションの開発や、CI/CDパイプラインへのNitricの統合にチャレンジしてみてください。Nitricの柔軟性と強力な機能を活用することで、様々なクラウドネイティブアプリケーションを効率的に開発・デプロイできます。

参考サイト

https://nitric.io/docs/getting-started/deployment

https://www.pulumi.com/

この記事が気に入ったらサポートをしてみませんか?