sam deploy時の[SSL: CERTIFICATE_VERIFY_FAILED]回避策(暫定)
samのバージョン 0.53.0
会社のイントラネットでsam deployコマンド実行すると以下のようなエラーが出て困ってました。
(Windows, Linux)
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)
StackOverflowを見ても困っている人が沢山いそうなので記事にしてみます。
おそらくはGit Hubのこのissueが該当するんじゃないかと。
まだOpen issueなんですよね。
GitHub awslabs/aws-sam-cliSSL => proxy causing issues with deploy
awc cli configファイルのca_certにルート証明書を設定する。他
色々試しましたが、全然ダメです。
諦めて禁忌に手を出します(笑)
回避策
自己責任でお願いいたします。
仕方がないので、sam cliに内包しているPythonのコードにパッチを当てます。
- パッチをあてるファイルの場所
例はWindows
sam cliのインストールフォルダ\Amazon\AWSSAMCLI\runtime\Lib\site-packages\botocore\httpsession.py
def __init__(self,
verify=True,
proxies=None,
timeout=None,
max_pool_connections=MAX_POOL_CONNECTIONS,
socket_options=None,
client_cert=None,
):
self._verify = False #ここをFalseに書き換え
self._proxy_config = ProxyConfiguration(proxies=proxies)
self._pool_classes_by_scheme = {
'http': botocore.awsrequest.AWSHTTPConnectionPool,
sam deploy時にSSLの検証エラーメッセージ(warning)は表示されるものの無事、sam deployできました。
冒頭のissueがcloseされるまで、これで対応しておこうと思います。
余談
開発PCはWindowsですが、AWS CLI関係は公式のDockerコンテナを使わせてもらってます。
コンテナをPullすればすぐに使えるメリットはもちろんのこと
上に書いたパッチコードもvolumeとしてマウントしているので、いつでも元に戻せて便利です。