S3 Object Lambda のベストプラクティスとガイドライン
S3 Object Lambda を使用する場合は、操作とパフォーマンスを最適化するには、以下のベストプラクティスとガイドラインに従ってください。
トピック
S3 Object Lambda の使用
S3 Object Lambda は、GET
、LIST
、および HEAD
リクエストの処理のみをサポートします。他のリクエストは AWS Lambda を呼び出さず、標準の変換されていない API レスポンスを返します。リージョンごとに AWS アカウント あたり最大 1,000 個の Object Lambda アクセスポイントを作成できます。使用する AWS Lambda 関数は、Object Lambda アクセスポイントと同じ AWS アカウントおよびリージョンに存在する必要があります。
S3 Object Lambda では、発信者に完全なレスポンスをストリームするのに最大 60 秒かかります。関数には、AWS Lambda のデフォルトクォータも適用されます。詳細については、AWS Lambda デベロッパーガイドの Lambda のクォータを参照してください。
S3 Object Lambda が指定された Lambda 関数を呼び出す場合、データが指定された Lambda 関数またはアプリケーションによって意図的に上書きまたは Amazon S3 から削除され、それが正しいことを確認する責任は、ユーザーにあります。
S3 Object Lambda は、オブジェクトに対する操作の実行にのみ使用できます。S3 Object Lambda を使用して、バケットの変更や削除など、他の Amazon S3 オペレーションを実行することはできません。アクセスポイントをサポートする S3 オペレーションの詳細なリストについては、「S3 オペレーションとアクセスポイントの互換性」を参照してください。
このリストに加えて、Object Lambda アクセスポイントは POST Object
、CopyObject
(ソースとして)、および SelectObjectContent
API オペレーションをサポートしていません。
S3 Object Lambda に関連して使用される AWS のサービス
S3 Object Lambda は、Amazon S3、AWS Lambda、およびオプションで、リクエストしているアプリケーションに関連するオブジェクトを配信するために選択した他の AWS のサービス を接続します。S3 Object Lambda で使用されるすべての AWS のサービス は、それぞれのサービスレベルアグリーメント (SLA) に準拠します。例えば、AWS のサービス がサービスコミットメントを満たさない場合は、そのサービスの SLA に記されたとおり、ユーザーにはサービスクレジットを受け取る資格が発生します。
Range
および partNumber
ヘッダー
大規模なオブジェクトを操作する場合は、Range
HTTP ヘッダーを使用して、オブジェクトから指定されたバイト範囲をダウンロードできます。Range
ヘッダーを使用すると、リクエストはオブジェクトの指定された部分のみをフェッチします。partNumber
ヘッダーは、オブジェクトから指定されたパートに対して範囲リクエストを実行するためにも使用できます。
詳細については、「Range および partNumber ヘッダーの操作」を参照してください。
expiry-date
の変換
AWS Management Console の Object Lambda アクセスポイントから、変換されたオブジェクトを開いたり、ダウンロードしたりできます。これらのオブジェクトは、期限が切れていないものである必要があります。Lambda 関数でオブジェクトの expiry-date
を変換すると、開いたりダウンロードしたりできない期限切れのオブジェクトが表示されることがあります。この動作は、S3 Glacier Flexible Retrieval、および S3 Glacier Deep Archive の復元されたオブジェクトにのみ適用されます。
AWS CLI と AWS SDK の使用
AWS Command Line Interface (AWS CLI) S3 サブコマンド (cp
、mv
、および sync
)、および AWS SDK for Java TransferManager
クラスについては、S3 Object Lambda での使用はサポートされていません。