Object Lambda アクセスポイントの作成
注記
Amazon S3 Object Lambda は、2025 年 11 月 7 日以降、新規のお客様に公開されなくなります。サービスを使用する場合は、2025 年 11 月 7 日までにサインアップしてください。S3 Object Lambda と同様の機能の詳細については、「Amazon S3 Object Lambda availability change」を参照してください。
Object Lambda アクセスポイントは、作成時に指定した 1 つの標準アクセスポイントにのみ関連付けられます。Object Lambda アクセスポイントを作成するには、次のリソースが必要です。
-
標準 S3 アクセスポイント。Object Lambda アクセスポイントを使用する場合、この標準アクセスポイントはサポートアクセスポイントと呼ばれ、S3 バケットまたは Amazon FSx for OpenZFS ボリュームにアタッチされます。標準アクセスポイントの作成については、「アクセスポイントの作成」を参照してください。
-
AWS Lambda 関数。独自の Lambda 関数を作成することも、事前に構築された関数を使用することもできます。Lambda 関数の詳細については、「S3 Object Lambda アクセスポイントの Lambda 関数の記述」を参照してください。事前構築された関数の詳細については、「AWS で構築された Lambda 関数の使用」を参照してください。
-
(オプション) AWS Identity and Access Management (IAM) ポリシー。Amazon S3 アクセスポイントは IAM リソースポリシーをサポートしています。これにより、リソース、ユーザー、またはその他の条件別にアクセスポイントの使用を制御できます。これらのポリシーの作成の詳細については、「Object Lambda アクセスポイントの IAM ポリシーの設定」を参照してください。
以下のセクションでは、下記を使用して Object Lambda アクセスポイントを作成する方法について説明します。
-
AWS Management Console
-
AWS Command Line Interface (AWS CLI)
-
AWS CloudFormation テンプレート
-
AWS Cloud Development Kit (AWS CDK)
REST API を使用して Object Lambda アクセスポイントを作成する方法については、Amazon Simple Storage Service API リファレンスの「CreateAccessPointForObjectLambda」を参照してください。
Object Lambda アクセスポイントの作成
次のいずれかの手順に従って Object Lambda アクセスポイントを作成します。
コンソールを使用して Object Lambda のアクセスポイントを作成するには
AWS Management Console にサインインし、Amazon S3 コンソール https://console.aws.amazon.com/s3/
を開きます。 -
ナビゲーションバーで、現在表示されている AWS リージョン の名前をクリックします。次に、切り替え先のリージョンを選択します。
-
左のナビゲーションペインで、[Object Lambda アクセスポイント] を選択します。
-
[Object Lambda アクセスポイント] ページで、[Object Lambda アクセスポイントの作成] を選択します。
-
[Object Lambda Access Point name] (Object Lambda アクセスポイント名) に、アクセスポイントに使用する名前を入力します。
標準のアクセスポイントと同様に、Object Lambda には命名規則があります。詳細については、「アクセスポイントの命名規則」を参照してください。
-
[Supporting Access Point] (サポートアクセスポイント) で、使用する標準アクセスポイントを入力または参照します。アクセスポイントは、変換するオブジェクトと同じ AWS リージョン に存在する必要があります。標準アクセスポイントの作成については、「アクセスポイントの作成」を参照してください。
-
[変換の設定] で、Object Lambda アクセスポイントのデータを変換する関数を追加できます。次のいずれかを行います:
-
アカウントに既に AWS Lambda 関数がある場合は、[Invoke Lambda function] (Lambda 関数の呼び出し) で選択できます。ここで、AWS アカウント で Lambda 関数の Amazon リソースネーム (ARN) を入力するか、ドロップダウンメニューから Lambda 関数を選択できます。
-
AWS で構築された関数を使用する場合は、[AWS で構築された関数] で関数名を選択し、[Lambda 関数を作成] を選択します。これにより Lambda コンソールが表示され、そこで構築した関数を AWS アカウント にデプロイできます。構築した関数の詳細については、「AWS で構築された Lambda 関数の使用」を参照してください。
[S3 APIs] で、呼び出す API オペレーションを 1 つ以上選択します。選択した各 API に対して、呼び出す Lambda 関数を指定する必要があります。
-
-
(オプション) [Payload] (ペイロード) に、入力として Lambda 関数に提供する JSON テキストを追加します。同じ Lambda 関数を呼び出す異なる Object Lambda アクセスポイントに対して、異なるパラメータを使用してペイロードを設定できます。これにより、Lambda 関数の柔軟性が向上します。
重要
Object Lambda アクセスポイントを使用する場合、ペイロードには機密情報を一切含めないでください。
-
(オプション) [Range and part number] (範囲とパート番号) では、範囲とパート番号ヘッダーで
GETおよびHEADリクエストを処理するには、このオプションを有効にする必要があります。このオプションを有効にすると、Lambda 関数がこれらのリクエストを認識して処理できることが確認されます。範囲ヘッダーとパート番号の詳細については、Range および partNumber ヘッダーの操作 を参照してください。 -
(オプション) [リクエストのメトリクス] で、[有効化] または [無効化] を選択して、Amazon S3 モニタリングを Object Lambda アクセスポイントに追加します。リクエストメトリクスには、Amazon CloudWatch の標準料金が課金されます。
-
(オプション) [Object Lambda Access Point policy] (Object Lambda アクセスポイントポリシー) で、リソースポリシーを設定します。リソースポリシーは、指定された Object Lambda アクセスポイントにアクセス許可を付与し、リソース、ユーザー、その他の条件別にアクセスポイントの使用を制御します。Object Lambda アクセスポイントのリソースポリシーの詳細については、「Object Lambda アクセスポイントの IAM ポリシーの設定」を参照してください。
[Block Public Access settings for this Object Lambda Access Point] (この Object Lambda アクセスポイントのパブリックアクセス設定をブロック) で、適用するパブリックアクセスブロック設定を選択します。新しい Object Lambda アクセスポイントでは、すべてのパブリックアクセスブロック設定がデフォルトで有効になります。デフォルトの設定のままにしておくことをお勧めします。Amazon S3 は、現在、Object Lambda アクセスポイントの作成後における Object Lambda アクセスポイントのパブリックアクセスブロック設定の変更をサポートしていません。
Amazon S3 パブリックアクセスブロックの詳細については、「汎用バケットのアクセスポイントへのパブリックアクセスの管理」を参照してください。
-
[Create Object Lambda Access Point] (Object Lambda アクセスポイントの作成) を選択します。
AWS CloudFormation テンプレートを使用して Object Lambda アクセスポイントを作成するには
注記
次のコマンドを使用するには、 をユーザー自身の情報に置き換えます。user input
placeholders
-
S3 Object Lambda のデフォルト設定
で、AWS Lambda 関数デプロイパッケージ s3objectlambda_deployment_package.zipをダウンロードします。 -
次の
put-objectコマンドを実行して、Amazon S3 バケットにパッケージをアップロードします。aws s3api put-object --bucketAmazon S3 bucket name--key s3objectlambda_deployment_package.zip --body release/s3objectlambda_deployment_package.zip -
S3 Object Lambda のデフォルト設定
で AWS CloudFormation テンプレート s3objectlambda_defaultconfig.yamlをダウンロードします。 -
次の
deployコマンドを実行して、テンプレートを AWS アカウント にデプロイします。aws cloudformation deploy --template-file s3objectlambda_defaultconfig.yaml \ --stack-nameAWS CloudFormation stack name\ --parameter-overrides ObjectLambdaAccessPointName=Object Lambda Access Point name\ SupportingAccessPointName=Amazon S3 access pointS3BucketName=Amazon S3 bucket\ LambdaFunctionS3BucketName=Amazon S3 bucket containing your Lambda package\ LambdaFunctionS3Key=Lambda object keyLambdaFunctionS3ObjectVersion=Lambda object version\ LambdaFunctionRuntime=Lambda function runtime--capabilitiescapability_IAM
GET、HEAD、および LIST API オペレーションで Lambda を呼び出すようにこの AWS CloudFormation テンプレートを設定できます。テンプレートのデフォルト設定の変更の詳細については、「CloudFormation テンプレートを使用して S3 Object Lambda のセットアップを自動化する」を参照してください。
AWS CLI を使用して Object Lambda アクセスポイントを作成するには
注記
次のコマンドを使用するには、 をユーザー自身の情報に置き換えます。user input
placeholders
以下の例では、アカウント のバケット 111122223333 に「amzn-s3-demo-bucket1」という名前の Object Lambda アクセスポイントを作成します。この例では、「my-object-lambda-ap」という名前の標準アクセスポイントが既に作成されていることを前提としています。標準アクセスポイントの作成については、アクセスポイントの作成 を参照してください。example-ap
この例では、AWS の事前構築された関数 decompress を使用しています。事前構築された関数の詳細については、「AWS で構築された Lambda 関数の使用」を参照してください。
-
バケットを作成します。この例では、
を使用します。バケットの作成については、「汎用バケットの作成」を参照してください。amzn-s3-demo-bucket1 -
標準アクセスポイントを作成し、バケットにアタッチします。この例では、
を使用します。標準アクセスポイントの作成については、「アクセスポイントの作成」を参照してください。example-ap -
次のいずれかを行います:
-
Amazon S3 オブジェクトの変換に使用する Lambda 関数をアカウント内に作成します。Lambda 関数の詳細については、「S3 Object Lambda アクセスポイントの Lambda 関数の記述」を参照してください。AWS CLI でカスタム関数を使用するには、「AWS Lambda 開発者ガイド」の「AWS CLI での Lambda の使用」を参照してください。
-
AWS の事前構築された Lambda 関数を使用します。事前構築された関数の詳細については、「AWS で構築された Lambda 関数の使用」を参照してください。
-
-
my-olap-configuration.jsonという名前の JSON 設定ファイルを作成します。この設定では、前のステップで作成した Lambda 関数のサポートアクセスポイントと Amazon リソースネーム (ARN)、または使用している事前構築された関数の ARN を指定します。{ "SupportingAccessPoint" : "arn:aws:s3:us-east-1:111122223333:accesspoint/example-ap", "TransformationConfigurations": [{ "Actions" : ["GetObject", "HeadObject", "ListObjects", "ListObjectsV2"], "ContentTransformation" : { "AwsLambda": { "FunctionPayload" : "{\"compressionType\":\"gzip\"}", "FunctionArn" : "arn:aws:lambda:us-east-1:111122223333:function/compress" } } }] } -
create-access-point-for-object-lambdaコマンドを実行して Object Lambda アクセスポイントを作成します。aws s3control create-access-point-for-object-lambda --account-id111122223333--namemy-object-lambda-ap--configuration file://my-olap-configuration.json -
(オプション)
my-olap-policy.jsonという名前の JSON ポリシーファイルを作成します。Object Lambda アクセスポイントのリソースポリシーを追加することで、リソース、ユーザー、その他の条件別にアクセスポイントの使用を制御することができます。このリソースポリシーは、アカウント
に指定された Object Lambda アクセスポイントへの444455556666GetObject許可を付与します。{ "Version": "2008-10-17", "Statement": [ { "Sid": "Grant account444455556666GetObject access", "Effect": "Allow", "Action": "s3-object-lambda:GetObject", "Principal": { "AWS": "arn:aws:iam::444455556666:root" }, "Resource": "your-object-lambda-access-point-arn" } ] } -
(オプション)
put-access-point-policy-for-object-lambdaコマンドを実行して、リソースポリシーを設定します。aws s3control put-access-point-policy-for-object-lambda --account-id111122223333--namemy-object-lambda-ap--policy file://my-olap-policy.json -
(オプション) ペイロードを規定します。
ペイロードは、AWS Lambda 関数に入力として提供できるオプションの JSON です。同じ Lambda 関数を呼び出す異なる Object Lambda アクセスポイントに対して、異なるパラメータを使用してペイロードを設定できます。これにより、Lambda 関数の柔軟性が向上します。
次の Object Lambda アクセスポイントの設定は、2 つのパラメータを持つペイロードを示しています。
{ "SupportingAccessPoint": "AccessPointArn", "CloudWatchMetricsEnabled":false, "TransformationConfigurations": [{ "Actions": ["GetObject", "HeadObject", "ListObjects", "ListObjectsV2"], "ContentTransformation": { "AwsLambda": { "FunctionArn": "FunctionArn", "FunctionPayload": "{\"res-x\": \"100\",\"res-y\": \"100\"}" } } }] }次の Object Lambda アクセスポイント設定は、パラメータが 1 つあり、
GetObject-Range、GetObject-PartNumber、HeadObject-Range、およびHeadObject-PartNumberが有効になっているペイロードを示しています。{ "SupportingAccessPoint":"AccessPointArn", "CloudWatchMetricsEnabled":false, "AllowedFeatures": ["GetObject-Range", "GetObject-PartNumber", "HeadObject-Range", "HeadObject-PartNumber"], "TransformationConfigurations": [{ "Action": ["GetObject", "HeadObject", "ListObjects", "ListObjectsV2"], "ContentTransformation": { "AwsLambda": { "FunctionArn":"FunctionArn", "FunctionPayload": "{\"compression-amount\": \"5\"}" } } }] }重要
Object Lambda アクセスポイントを使用する場合、ペイロードには機密情報を一切含めないでください。
Amazon S3 が提供するデフォルト設定を使用して、Object Lambda アクセスポイントを作成できます。GitHub リポジトリ
AWS CloudFormation テンプレートのデフォルト設定の変更の詳細については、「CloudFormation テンプレートを使用して S3 Object Lambda のセットアップを自動化する」を参照してください。
テンプレートなしで AWS CloudFormation を使用する Object Lambda アクセスポイントの設定の詳細については、AWS CloudFormation ユーザーガイドの「AWS::S3ObjectLambda::AccessPoint」を参照してください。
Lambda 関数のデプロイパッケージをアップロードします
-
S3 Object Lambda のデフォルト設定
で、AWS Lambda 関数デプロイパッケージ s3objectlambda_deployment_package.zipをダウンロードします。 -
Amazon S3 バケットにパッケージをアップロードします。
AWS CloudFormation コンソールを使用して Object Lambda のアクセスポイントを作成するには
-
S3 Object Lambda のデフォルト設定
で AWS CloudFormation テンプレート s3objectlambda_defaultconfig.yamlをダウンロードします。 -
AWS マネジメントコンソール にサインインした後、https://console.aws.amazon.com/cloudformation/
で AWS CloudFormation コンソールを開きます。 -
次のいずれかを行います:
-
AWS CloudFormation を初めて使用する場合は、AWS CloudFormation ホームページで [Create stack] (スタックの作成) を選択します。
-
以前に AWS CloudFormation を使用したことがある場合は、左側のナビゲーションペインで [Stacks] (スタック) を選択します。[Create stack] (スタックの作成) を選択し、[With new resources (standard)] (新しいリソースを使用 (標準)) を選択します。
-
-
前提条件 − テンプレートの準備で、テンプレートの準備完了を選択します。
-
[Specify template] (テンプレートの指定) で、[Upload a template file] (テンプレートファイルのアップロード) を選択して
s3objectlambda_defaultconfig.yamlをアップロードします。 -
[次へ] を選択します。
-
スタックの詳細の指定ページで、スタックの名前を入力します。
-
[Parameters] (パラメータ) セクションで、スタックテンプレートで定義されている次のパラメータを指定します。
-
[CreateNewSupportingAccessPoint] では、次のいずれかを実行します。
-
テンプレートをアップロードした S3 バケット用のサポートアクセスポイントが既にある場合は、[false] を選択します。
-
このバケット用に新しいアクセスポイントを作成する場合は、[true] を選択します。
-
-
[EnableCloudWatchMonitoring] では、Amazon CloudWatch リクエストメトリクスとアラームを有効にするかどうかに応じて、[true] または [false] を選択します。
-
(オプション) [LambdaFunctionPayload] に、入力として Lambda 関数に提供する JSON テキストを追加します。同じ Lambda 関数を呼び出す異なる Object Lambda アクセスポイントに対して、異なるパラメータを使用してペイロードを設定できます。これにより、Lambda 関数の柔軟性が向上します。
重要
Object Lambda アクセスポイントを使用する場合、ペイロードには機密情報を一切含めないでください。
-
[LambdaFunctionRuntime] で、Lambda 関数に希望するランタイムを入力します。使用可能な選択は次のとおりです。
nodejs14.x、python3.9、java11。 -
[LambdaFunctionS3BucketName] で、デプロイパッケージをアップロードした Amazon S3 バケット名を入力します。
-
[LambdaFunctionS3Key] で、デプロイパッケージをアップロードした Amazon S3 オブジェクトキーを入力します。
-
[LambdaFunctionS3ObjectVersion] で、デプロイパッケージをアップロードした Amazon S3 オブジェクトバージョンを入力します。
-
[ObjectLambdaAccessPointName] で、Object Lambda アクセスポイント名を入力します。
-
[S3BucketName] で、Object Lambda アクセスポイントと関連付けられる Amazon S3 のバケット名を入力します。
-
[SupportingAccessPointName] で、サポートアクセスポイント名を入力します。
注記
これは前のステップで選択した Amazon S3 バケットに関連付けられたアクセスポイントです。Amazon S3 バケットに関連付けられているアクセスポイントがない場合は、[CreateNewSupportingAccessPoint] で [true] を選択すると、テンプレートを作成するようにテンプレートを構成できます。
-
-
[次へ] を選択します。
-
[スタックオプションの設定] ページで、[次へ] を選択します。
このページのオプション設定の詳細については、「AWS CloudFormation ユーザーガイド」の「AWS CloudFormation スタックオプションの設定」を参照してください。
-
[確認] ページで [スタックの作成] を選択します。
AWS CDK を使用した Object Lambda アクセスポイントの設定の詳細については、AWS Cloud Development Kit (AWS CDK) API リファレンスの「AWS::S3ObjectLambda Construct Library」を参照してください。