Sto usando boto3 in aws lambda per il controllo dell'oggetto in S3 situato nella regione di Francoforte.Come configurare il meccanismo di autorizzazione in linea con boto3
v4 è necessario. altrimenti seguente errore tornerà
"errorMessage": "An error occurred (InvalidRequest) when calling
the GetObject operation: The authorization mechanism you have
provided is not supported. Please use AWS4-HMAC-SHA256."
modi realizzati per configurare signature_version http://boto3.readthedocs.org/en/latest/guide/configuration.html
Ma dal momento che sto usando AWS lambda, non hanno accesso alla configurazione sottostante profili
Il codice della mia funzione lambda AWS
from __future__ import print_function
import boto3
def lambda_handler (event, context):
input_file_bucket = event["Records"][0]["s3"]["bucket"]["name"]
input_file_key = event["Records"][0]["s3"]["object"]["key"]
input_file_name = input_file_bucket+"/"+input_file_key
s3=boto3.resource("s3")
obj = s3.Object(bucket_name=input_file_bucket, key=input_file_key)
response = obj.get()
return event #echo first key valuesdf
È possibile configurare signature_version in questo codice? usa Session per esempio. O c'è qualche soluzione su questo?
C'è un modo per configurare questo da un file? Sto chiedendo perché sto usando un pezzo di codice dove 'boto3' è la dipendenza, quindi non ho accesso diretto per cambiare la chiamata' client() '. – bstempi
puoi impostare boto3.session.Session (profile_name = 'profile1') dove profile1 è il nome del profilo definito nel file .aws/credentials con chiavi AWS, token, regione desiderata e altri parametri necessari – omuthu
Cosa succede se non lo sono utilizzando le chiavi AWS e sto invece facendo affidamento sul servizio di metadati dell'istanza EC2? – bstempi