🍎

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

2024/08/20に公開

はじめに

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

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

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

デモ動画

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アクセストークンを設定します:
    • Pulumiのウェブサイトでアクセストークンを生成
    • 環境変数を設定:
      setx PULUMI_ACCESS_TOKEN "your-access-token-here"
      

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

  1. AWS CLIをインストールします(まだの場合)。
  2. AWSクレデンシャルを設定します:
    aws configure
    
  3. プロンプトに従って、AWS Access Key ID、AWS Secret Access Key、デフォルトリージョン名を入力します。

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

  1. Nitricプロジェクトのルートディレクトリに移動します。
  2. スタックを作成します:
    nitric stack new my-aws-stack aws
    
  3. nitric.aws.yamlファイルを編集してAWS固有の設定を行います:
    provider: nitric/aws@1.1.0
    region: us-east-1
    telemetry: 10
    config:
      default:
        lambda:
          memory: 1024
      memory-optimized:
        lambda:
          memory: 4096
    
  4. デプロイメントを実行します:
    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/

<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

Discussion