Hit API Gateway pour l'authentification IAM. Créer un en-tête de signature SigV4 (python)

Exécuter API Gateway pour l'authentification IAM (python)

Lorsque vous souhaitez renvoyer le résultat de l'API avec curl etc., il est nécessaire de calculer l'en-tête (signature SigV4) de la requête HTTP, mais notez que le matériel n'est pas trouvé Consultez d'autres sites pour savoir comment faire certifier API Gateway IAM. Il existe un moyen de calculer la valeur de hachage, mais je ne suis pas sûr, donc quand j'en ai besoin, je regarde à l'intérieur de la bibliothèque botocore et la crée.

check_iam.py


import os
from botocore.awsrequest import AWSRequest
from botocore.auth import SigV4Auth
from botocore.endpoint import URLLib3Session
from botocore.credentials import Credentials
import requests

url_ = "https://xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/v1"
### 1.Génération d'informations d'identification
credentials = Credentials(os.environ['AWS_ACCESS_KEY_ID'], os.environ['AWS_SECRET_ACCESS_KEY'])

### 2.Génération de requêtes AWS
request = AWSRequest(method="GET", url=url_)

### 3.Signature de demande AWS
SigV4Auth(credentials, 'execute-api', ap-northeast-1).add_auth(request)

### 4.Émission d'API
headers = {
    'Authorization': request.headers['Authorization'],
    'Host':'xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com',
    'X-Amz-Date':request.context['timestamp']
}

response = requests.get(url_,headers=headers)

print(response.text)

Recommended Posts

Hit API Gateway pour l'authentification IAM. Créer un en-tête de signature SigV4 (python)
Créez rapidement une API avec Python, lambda et API Gateway à l'aide d'AWS SAM
Hit API de Mastodon en Python
AWS CDK-Lambda + API Gateway (Python)
Essayez l'authentification de base de données IAM à partir de Python
Créer Awaitable avec l'API Python / C
[AWS] Créer une API avec API Gateway + Lambda
Frappez l'API Sesami en Python
[Python] Accédez à l'API Google Translation
Accédez à l'API Etherpad-lite avec Python
Créez Gmail en Python sans utiliser l'API
Accédez à l'API Web en Python
[Python] Créer une API pour envoyer Gmail