0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Posted at

はじめに

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

デモ動画

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の柔軟性と強力な機能を活用することで、様々なクラウドネイティブアプリケーションを効率的に開発・デプロイできます。

参考サイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?