LamdbaからRun Command を実施するためにWindowsのPathを指定したところ、うまく実行できず詰まったのでメモ。
普通にWindowsのPathを指定すると \(バックスラッシュ)
がPythonのエスケープシーケンスに変換されていたのが原因でした。
[参考サイト]
エスケープシーケンスを使用する | Python入門
runtime : python 3.8
エスケープシーケンスを考慮しない場合
以下の例だと \b
と \t
がエスケープシーケンスに該当します。
- \b ⇒ ASCII バックスペース (BS)
- \t ⇒ ASCII 水平タブ (TAB)
def lambda_handler(event, context): a = "C:\bbb\ttt" print(a)
実行結果
C:bb tt
エスケープシーケンスを考慮する場合
\(バックスラッシュ)
を、\\
に書き換えると期待通りの動作となります。
def lambda_handler(event, context): b = "C:\\ccc\\ttt" print(b)
実行結果
C:\ccc\ttt
最後に
AWSコンソール上からRun Commandを実行したときには特にエスケープシーケンスを考慮しないでもうまく実行できていたので、少しはまりました。
どなたかの参考になれば幸いです。