AWS Lambda
開発者ガイド

Lambda 関数からの AWS リソースへのアクセス

Lambda では、お客様の関数ロジックにいずれの制限も適用しません。関数ロジックのコードを記述できれば、そのコードを Lambda 関数内で実行できます。関数の一部として、他の API を呼び出したり、データベースなどの他の AWS サービスにアクセスしたりすることが必要になる場合があります。

AWS サービスへのアクセス

AWS のその他のサービスにアクセスするには、AWS SDK を使用できます。また、AWS Lambda では、関数に関連付けられる IAM ロールに対して SDK が必要とする認証情報が自動的に設定されるため、追加のステップを実行する必要はありません。たとえば、以下に示しているのは、Python SDK を使用して S3 オブジェクトにアクセスするサンプルコードです。

import boto3 import botocore BUCKET_NAME = 'my-bucket' # replace with your bucket name KEY = 'my_image_in_s3.jpg' # replace with your object key s3 = boto3.resource('s3') try: s3.Bucket(BUCKET_NAME).download_file(KEY, 'my_local_image.jpg') except botocore.exceptions.ClientError as e: if e.response['Error']['Code'] == "404": print("The object does not exist.") else: raise

便利なように、AWS Lambda には実行環境の一部としての AWS SDK のバージョンが含まれているため、自分で含める必要はありません。含まれている SDK のバージョンについては、「AWS Lambda ランタイム」を参照してください。本番稼働用のアプリケーションに使用する AWS SDK の独自のコピーを含めて、依存関係を制御できるようにすることをお勧めします。

AWS 以外のサービスへのアクセス

Lambda 関数の一部として、任意のサービスにアクセスするための SDK を含めることができます。たとえば、Twilio アカウントの情報にアクセスするための SDK for Twilio を含めることができます。認証情報を暗号化した後、AWS Lambda 環境変数 を使用して SDK の認証情報を保存できます。

プライベートサービスまたはリソースへのアクセス

デフォルトでは、お客様のサービスや API に AWS Lambda がパブリックインターネット経由でアクセスできます。ただし、API やサービスがこのように公開されていない場合があります。通常、これらのリソースは、パブリックインターネット経由でアクセスできないように、Amazon Virtual Private Cloud (Amazon VPC) 内に作成します。これらのリソースは、Amazon Redshift データウェアハウス、Amazon ElastiCache クラスター、Amazon RDS インスタンスなどの AWS サービスリソースです。独自の EC2 インスタンスで実行する独自のサービスを作成することもできます。デフォルトでは、Lambda 関数から VPC 内のリソースにアクセスすることはできません。

AWS Lambda はデフォルトでは VPC 内で安全に関数コードを実行します。ただし、Lambda 関数がプライベート VPC 内のリソースにアクセスできるようにするには、VPC サブネット ID やセキュリティグループ ID など、追加の VPC 固有設定情報を指定する必要があります。AWS Lambda はこの情報を、関数がプライベート VPC 内の他のリソースに安全に接続できる Elastic Network Interface (ENI) のセットアップに使用します。

重要

AWS Lambda は専有テナント VPC 内のリソースへの接続はサポートしていません。詳細については、専用 VPCを参照してください

VPC 内のリソースにアクセスできるように Lambda 関数を設定する方法については、「VPC 内のリソースにアクセスするように Lambda 関数を設定する」を参照してください。