関数の設定
defineFunctionは、合理的でありながら最小限のデフォルト設定を備えて提供されます。以下のオプションを使用して、関数の設定を調整できます。
name
デフォルトでは、関数はdefineFunction呼び出しが配置されているディレクトリに基づいて名前が付けられます。上記の例では、amplify/functions/my-demo-function/resource.tsで関数を定義すると、デフォルトで関数にmy-demo-functionという名前が付けられます。
entryが指定されている場合、名前はentryパスのベース名にデフォルト設定されます。たとえば、./signup-trigger-handler.tsのentryは、関数名がデフォルトでsignup-trigger-handlerになります。
このオプションプロパティを使用して、関数の名前を明示的に設定できます。
export const myDemoFunction = defineFunction({ entry: './demo-function-handler.ts', name: 'overrideName' // デフォルトの命名動作をオーバーライドするために名前を明示的に設定});timeoutSeconds
デフォルトでは、関数は3秒後にタイムアウトします。これは、最大15分までの任意の秒数に設定できます。
export const myDemoFunction = defineFunction({ timeoutSeconds: 60 // 1分のタイムアウト});memoryMB
デフォルトでは、関数には512 MBのメモリが割り当てられています。これは128 MBから10240 MBまで設定できます。これは関数呼び出しのコストを増加させる可能性があることに注意してください。詳細な料金情報については、こちらを参照してください。
export const myDemoFunction = defineFunction({ memoryMB: 256 // 関数に256 MBのメモリを割り当てます。});ephemeralStorageSizeMB
デフォルトでは、関数には512MBのエフェメラルストレージが割り当てられています。これは512 MBから10240 MBまで設定できます。これは関数呼び出しのコストを増加させる可能性があることに注意してください。詳細な料金情報については、Lambda料金ドキュメントを参照してください。
export const myDemoFunction = defineFunction({ ephemeralStorageSizeMB: 1024 // 関数に1024 MBのエフェメラルストレージを割り当てます。});runtime
現在、defineFunctionではNodeランタイムのみがサポートされています。ただし、関数が使用するNodeのバージョンを変更できます。デフォルトは、AWS Lambdaでサポートされている最も古いNode LTSバージョンです(現在はNode 18)。
古いバージョンのNodeを使用したい場合は、Lambda Nodeバージョン廃止予定スケジュールに注意してください。Lambdaが古いNodeバージョンのサポートを終了する場合、サポートされている新しいバージョンに更新する必要があります。
export const myDemoFunction = defineFunction({ runtime: 20 // Node 20を使用});entry
デフォルトでは、AmplifyはdefineFunctionが呼び出されているファイルと同じディレクトリにあるhandler.tsという名前のファイルで関数ハンドラーを探します。別のハンドラーの場所を指定するには、entry値を指定してください。
export const myDemoFunction = defineFunction({ entry: './path/to/handler.ts' // このパスは絶対パスであるか、現在のファイルからの相対パスである必要があります。});resourceGroupName
デフォルトでは、関数はfunctionという名前のリソースグループにグループ化されます。これをオーバーライドして、関連する関数をauth、data、storageなどの他のAmplifyリソースでグループ化したり、独自のカスタムグループに分離したりできます。
これは、相互に依存するリソースがあり、それらをグループ化したい場合に通常役立ちます。
export const myDemoFunction = defineFunction({ resourceGroupName: 'data'});