SAM init 時の template を調べてたら、AWS Lambda Powertools for TypeScript が見つかった

# 背景
SAM で TypeScript 環境を構築する為の備忘録の一環

TypeScript 環境の構築もしたことがないので、Template を参考にしようとした際に、
そもそも、Template ってどうやって調べるんだって悩んでたので

AWS Lambda Powertools for TypeScript 用の template もあったので、時間があれば試したいところ・・

https://awslabs.github.io/aws-lambda-powertools-typescript/latest/

# 前提
以下に Template が格納されている

https://github.com/aws/aws-sam-cli-app-templates

で、runtime 毎に以下のようにフォルダ分けされている
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/befed31b-bd69-a290-6439-9334cd96acac.png)

また、manifest.json として、以下のように、Template 名と、それらのフォルダの関係性を定義されている。
※今回は v2 無しで検索
- [manifest.json](https://github.com/aws/aws-sam-cli-app-templates/blob/master/manifest.json)
- [manifest-v2.json](https://github.com/aws/aws-sam-cli-app-templates/blob/master/manifest-v2.json)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/afa5887c-57a9-b5f8-f582-cfa64d3b96cd.png)

各フォルダに降りていくと、以下のように sam init の呼び方も書いてくれてるので、使うときはコピペでOK

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/ca0a406d-6f3c-9f1f-fb47-7817f14678e3.png)

# 結論
1. 最初に、[manifest.json](https://github.com/aws/aws-sam-cli-app-templates/blob/master/manifest.json) [or v2](https://github.com/aws/aws-sam-cli-app-templates/blob/master/manifest-v2.json) を開いて、"typescript" を検索して、directory をメモ<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/ac234f07-d224-628f-1947-404ba5c6278c.png)
　typescript 検索は、以下二点。
    - nodejs14.x/cookiecutter-aws-sam-hello-typescript-nodejs
    - nodejs12.x/cookiecutter-typescript-app-template
1. runtime 部分は無視した名前で、欲しい runtime フォルダを見に行くと、以下のように見つかる
    - nodejs18.x/cookiecutter-aws-sam-hello-typescript-nodejs<br>14/16/18 にも存在<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/979afb8e-b7d9-25fd-1011-7d19dedd44e4.png) 
    - nodejs12.x/cookiecutter-typescript-app-template　のみ<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/a112f312-710d-ef89-e225-155fa2453637.png)

最初からフォルダにいって、typescript で検索したほうが早かったんじゃないかというオチが・・

# あとがき
結局、typescript の template としては以下３つだったので、これを元に進めていこう
Powertools はちょっと後回しになりそうだけど・・

```powershell: sam init 例。appTemplate を置き換えて
sam init --app-template hello-world-powertools-typescript --package-type Zip
```

|displayName|appTemplate|補足|
|-|-|-|
|Hello World Example TypeScript|hello-world-typescript|単純に Hello World|
|Hello World Example TypeScript w/ Lambda Powertools|hello-world-powertools-typescript|Lambda Powertools for typescript
|Quick Start: App Backend using TypeScript|quick-start-typescript-app| 

powertools との差は以下ぐらいで、handler にて Metrics/Logger/tracer の使い方が入ってました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/39015fa8-6fa8-40bf-e64e-c8fadf0582f5.png)
app.ts の差分（抜粋）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/5911dfd6-00e1-4065-6f83-468cdf8de07b.png)


## AWS Lambda Powertools for TypeScript
Python/Java で好評な Powertools の TypeScript 版らしいですね

> AWS Lambda Powertools for TypeScript の一般提供が開始されます。これは、Well-Architected Serverless の**ベストプラクティスを Lambda 関数に可能な限り簡単かつ高速に組み込む**ための、オープンソースのデベロッパーライブラリです。

以下辺りで

https://awslabs.github.io/aws-lambda-powertools-typescript/latest/

https://aws.amazon.com/jp/about-aws/whats-new/2022/07/aws-lambda-powertools-typescript-available/