AWS Lambda PythonでULIDを使う

# AWS Lambda でULIDを使う（ライブラリをコピーして使う）
- 以前は、dockerコンテナ使ってULIDを生成したけど、もう少し手軽さが欲しい
- Lambda Layerまで使いたくない
- ULIDは、https://github.com/mdomke/python-ulid を使ってみる
- とりあえず動かすだけ

# AWS Lambda Functionの作成
- マネジメントコンソールで関数を作成します
- 参考画像
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1482752/06df3862-fd95-ba22-5128-1d786192955f.png)

![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1482752/1b098bb0-73aa-41fb-5f45-b901513cfb1e.png)


# python-ulid の ulid ディレクトリと中のファイルをコピー

sugimoto-python-ulidディレクトリの下に ulid ディレクトリの作成、ファイルの作成し、GitHubのコードを貼り付ける
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1482752/79a4d684-69c1-afc8-7a12-ff3be95e67cf.png)

# Lambda_fucntion.pyを変える

```python
import time
import uuid
from datetime import datetime
from datetime import timedelta
from datetime import timezone

from ulid import base32
from ulid import constants
from ulid import ULID
import json

# see , https://github.com/mdomke/python-ulid

def lambda_handler(event, context):
    
    for i in range(10):
        print(str(ULID()))

    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }
```

- コンソール画面の「Deploy」ボタンをを押して、Testを実行してみる

エラーになる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1482752/3109def6-95e6-f37d-6320-c479c479e9cc.png)

```
Response
{
  "errorMessage": "Unable to import module 'lambda_function': python-ulid",
  "errorType": "Runtime.ImportModuleError",
  "requestId": "e1c22481-d695-4148-bd35-b129bedebc25",
  "stackTrace": []
}

Function Logs
START RequestId: e1c22481-d695-4148-bd35-b129bedebc25 Version: $LATEST
[ERROR] Runtime.ImportModuleError: Unable to import module 'lambda_function': python-ulid
```


`__init__.py`の

```
__version__ = version("python-ulid")
```
で、エラーになる

```
#__version__ = version("python-ulid")
```
コメントにする

「Deploy」ボタンを押して、Testを実行

ULIDがログ出力できた
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1482752/4f18df9e-f896-ddbe-a2b5-c1ee2c36aadf.png)



```
Response
{
  "statusCode": 200,
  "body": "\"Hello from Lambda!\""
}

Function Logs
START RequestId: 51874246-fcd2-41d5-911a-829a3bcf73c0 Version: $LATEST
01G3NTE0HZXA245Y04H1ZYW5S1
01G3NTE0HZ93YM8STPE6NH2ZKJ
01G3NTE0HZ7MH15CWJP7ZJ8VK2
01G3NTE0HZAAFMZF55KRQQDXAX
01G3NTE0HZZHP0PDK588F92D5M
01G3NTE0HZMK73EJW2C9FKC3BA
01G3NTE0HZCYGKFQQ0W33DDPMM
01G3NTE0HZGTKFFXVTM3Z7C8B7
01G3NTE0HZF1QYGFW6KWAC8Y10
01G3NTE0HZ4YG0QFDH3ATX33G8
END RequestId: 51874246-fcd2-41d5-911a-829a3bcf73c0
REPORT RequestId: 51874246-fcd2-41d5-911a-829a3bcf73c0	Duration: 1.56 ms	Billed Duration: 2 ms	Memory Size: 128 MB	Max Memory Used: 39 MB	Init Duration: 144.88 ms

Request ID
51874246-fcd2-41d5-911a-829a3bcf73c0
```

---

# 他のエラー

```
__version__ = version("ulid")
```

この修正では、エラーになる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1482752/57025da1-9872-6b3e-ec28-45094289bc0f.png)

```
Response
{
  "errorMessage": "Unable to import module 'lambda_function': ulid",
  "errorType": "Runtime.ImportModuleError",
  "requestId": "d241a569-bb2a-41c0-af1f-528469f4a55d",
  "stackTrace": []
}

Function Logs
START RequestId: d241a569-bb2a-41c0-af1f-528469f4a55d Version: $LATEST
[ERROR] Runtime.ImportModuleError: Unable to import module 'lambda_function': ulid
```