コミートム合同会社

コミートム合同会社

AWS Lambda(python3.9)でCognitoにサインインする

AWS Lambda Cognito 'urllib3.util.ssl' 'DEFAULTCIPHERS' boto3 urllib3 Lambda This article is about how to sign in to Cognito with Lambda on AWS. The author encountered an error cannot import name 'DEFAULTCIPHERS' from 'urllib3.util.ssl' and found that it was caused by boto3 not being able to use the latest urllib3. The author then avoid the error by adding a layer to the Lambda function.
by JanitorAug 28, 2023

Jump Links

1.LambdaにLayerを設定する
2.動作確認
3.おわりに
AWSのLambdaでCognitoにサインインする方法です。いつも通りやろうとすると「cannot import name 'DEFAULT_CIPHERS' from 'urllib3.util.ssl_'」というエラーがでました。どうやらboto3が最新のurllib3というものを使えなくなったことで出ているエラーとのことでしたのでエラーの回避を簡単にしてみました。
1.LambdaにLayerを設定する
AWSのLambdaのコンソールで関数を作成し、Layersをおします。レイヤーの追加 -> ラジオボタンでARNを指定を選択 -> 入力欄に下記を入力します。 https://github.com/keithrozario/Klayers
arn:aws:lambda:us-east-1:770693421928:layer:Klayers-p39-boto3:18
2.動作確認
下記のスクリプトで動作確認しトークンを取得することができました。
import boto3 import os def lambda_handler(event, context): authValue = { 'USERNAME': os.environ[ 'USERMAIL_TEST' ], 'PASSWORD': os.environ[ 'USERPASSWORD_TEST' ], } client = boto3.client( 'cognito-idp', region_name=os.environ[ 'REGION' ] ) cognitoResponse = client.initiate_auth( ClientId = os.environ[ 'CLIENT_ID' ], AuthFlow = "USER_PASSWORD_AUTH", AuthParameters = authValue ) token = cognitoResponse.get( 'AuthenticationResult' ).get( 'AccessToken' ) print( token )
3.おわりに
Klayersありがとうございます。

Editors pick

Our other articles
© 2023 - Comytom LLC