Używam boto3 in aws lambda do obiektu fecth w S3 zlokalizowanego w regionie Frankfurtu.Jak skonfigurować mechanizm autoryzacji wbudowany w boto3
v4 jest konieczne. inaczej następujący błąd powróci
"errorMessage": "An error occurred (InvalidRequest) when calling
the GetObject operation: The authorization mechanism you have
provided is not supported. Please use AWS4-HMAC-SHA256."
Zrealizowane sposoby konfigurowania signature_version http://boto3.readthedocs.org/en/latest/guide/configuration.html
Ale ponieważ używam AWS lambda, nie mam dostępu do podstawowej konfiguracji profile
Kodeksu mojej funkcji 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
Czy to możliwe, aby skonfigurować signature_version w tym kodzie? użyj na przykład sesji. Czy istnieje jakieś obejście tego problemu?
Czy istnieje sposób, aby skonfigurować to z pliku? Pytam, ponieważ używam fragmentu kodu, w którym 'boto3' jest zależnością, więc nie mam bezpośredniego dostępu do zmiany wywołania' client() '. – bstempi
można ustawić boto3.session.Session (nazwa_profilu = "profil1") gdzie profil1 to nazwa profilu zdefiniowanego w pliku .aws/credentials z kluczami AWS, tokenami, żądanym regionem i innymi niezbędnymi parametrami. – omuthu
Co jeśli nie jestem używając kluczy AWS, a zamiast tego polegam na usłudze metadanych instancji EC2? – bstempi