Je suis accro aux spécifications, je vais donc laisser un mot.
On suppose que S3 a été créé.
Créez Lambda avec un nom approprié. Ici, il s'agit de get_image
.
J'ai également choisi Python 3.8 comme runtime.
Enregistrez ensuite le code suivant dans le code de fonction.
import boto3
import base64
def get_img_from_s3():
s3 = boto3.client('s3')
bucket_name = 'BUCKET_NAME'
file_path = 'FILE_PATH'
responce = s3.get_object(Bucket=bucket_name, Key=file_path)
body = responce['Body'].read()
body = base64.b64encode(body)
return body
def lambda_handler(event, context):
img = get_img_from_s3()
return img
Passez le nom du bucket de S3 à bucket_name
et le chemin de l'objet (image) de S3 que vous voulez lire à file_name
, et lisez l'objet depuis S3.
Après cela, l'objet au format binaire lu est encodé en base64 et renvoyé.
Le Lambda créé n'a pas le droit d'accès à S3, et s'il est laissé tel quel, l'accès sera refusé, alors donnez le droit d'accès à S3.
Tout d'abord, ouvrez la page d'autorisation d'accès Lambda que vous avez créée.
Le rôle d'exécution créé automatiquement étant attribué ici, ouvrez la page de ce rôle d'exécution.
Appuyez sur le bouton bleu ʻAttach Policyau centre de la page. ![スクリーンショット 2020-06-27 22.50.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401124/755b90c7-4ded-b9e8-506f-d010266a26c4.png) De cette façon, diverses politiques sortent. ![スクリーンショット 2020-06-27 22.51.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401124/b2c42536-fdf2-7a41-7817-fcf4a4da84eb.png) La recherche de
S3 fera apparaître la stratégie de S3. Cette fois, l'image est lue à partir de S3, alors attachez la stratégie ʻAmazonS3ReadOnlyAccess
.
Vous pouvez maintenant lire les fichiers stockés dans S3 à partir de Lambda.
Ceci termine les paramètres Lambda.
Ensuite, créez API Gateway.
L'API REST a été sélectionnée comme type d'API et le nom de l'API a été correctement défini sur get_image
.
Ensuite, j'ai ajouté une méthode GET et spécifié Lambda comme type d'intégration et la fonction Lambda appelée get_image
créée précédemment en tant que fonction Lambda.
Maintenant que la passerelle API a été créée, définissez la réponse de la méthode.
Tout d'abord, Content-Type
a été ajouté à l'en-tête de la réponse, et ʻimage / png a été ajouté au type de contenu du corps de la réponse. (Depuis que j'ai lu png cette fois, je l'ai réglé sur ʻimage / png
.)
Ensuite, définissez la réponse intégrée.
Par défaut, la méthode de traitement de contenu est pass-through, mais sélectionnez «Convertir en binaire (si nécessaire)». Aussi, laissez la valeur de mappage du mappage d'en-tête être `` '*' '.
Ceci termine les paramètres de la passerelle API.
Enfin, lorsque vous testez l'API J'ai pu renvoyer le binaire png comme ça!
Lorsque vous déployez réellement l'API et accédez à l'URL, l'image s'affiche.
Implémentation par Node.js Introduction à Lambda + API Gateway. Image DL
Recommended Posts