

# Object Lambda アクセスポイントの IAM ポリシーの設定
<a name="olap-policies"></a>

**注記**  
2025 年 11 月 7 日現在、S3 Object Lambda は、現在サービスを使用している既存のお客様、および一部の AWS パートナーネットワーク (APN) パートナーのみが利用できます。S3 Object Lambda と同様の機能の詳細については、「[Amazon S3 Object Lambda availability change](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html)」を参照してください。

Amazon S3 アクセスポイントは AWS Identity and Access Management (IAM) リソースポリシーをサポートしています。これにより、リソース、ユーザー、またはその他の条件別にアクセスポイントの使用を制御できます。Object Lambda アクセスポイントのオプションリソースポリシー、またはサポートアクセスポイントのリソースポリシーを使用してアクセスを制御できます。詳細な例については、[チュートリアル: S3 Object Lambda を使用したアプリケーションのデータの変換](tutorial-s3-object-lambda-uppercase.md) および [チュートリアル: S3 Object Lambda と Amazon Comprehend を使用した PII データの検出と編集](tutorial-s3-object-lambda-redact-pii.md) を参照してください。

次の 4 つのリソースに Object Lambda アクセスポイントを使用するための許可が付与されている必要があります。
+ ユーザーやロールなどの IAM ID。IAM ID およびベストプラクティスの詳細については、「*IAM ユーザーガイド*」の「[IAM ID (ユーザー、ユーザーグループ、ロール)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)」を参照してください。
+ S3 バケットや Amazon FSx for OpenZFS ボリュームなどの基盤となるデータソースに接続されている標準アクセスポイント。Object Lambda アクセスポイントを使用する場合、この標準アクセスポイントは*サポートアクセスポイント*と呼ばれます。
+ Object Lambda アクセスポイント。
+ AWS Lambda 関数。

**重要**  
ポリシーを保存する前に、AWS Identity and Access Management Access Analyzer からの セキュリティ警告、エラー、一般的な警告、および提案を解決してください。IAM Access Analyzer は、IAM [ポリシーの文法](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html)と[ベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)に照らしてポリシーチェックを行います。これらのチェックにより、機能的でセキュリティのベストプラクティスに準拠したポリシーを作成するのに、役立つ結果と実行可能なレコメンデーションが示されます。  
IAM Access Analyzer を使用したポリシーの検証の詳細については、「*IAM ユーザーガイド*」の「[IAM Access Analyzer のポリシーの検証](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)」を参照してください。IAM Access Analyzer によって返される警告、エラー、および提案のリストを表示するには、「[IAM Access Analyzer ポリシーチェックリファレンス](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-policy-checks.html)」を参照してください。

以下のポリシーは、次のリソースがあることを前提としています。
+ 次の Amazon リソースネーム (ARN) を持つ Amazon S3 バケット: 

  `arn:aws:s3:::{{amzn-s3-demo-bucket1}}`
+ このバケット上の Amazon S3 Standard アクセスポイントに次の ARN があること。

  `arn:aws:s3:{{us-east-1}}:{{111122223333}}:accesspoint/{{my-access-point}}`
+ Object Lambda アクセスポイントに次の ARN があること。

  `arn:aws:s3-object-lambda:{{us-east-1}}:{{111122223333}}:accesspoint/{{my-object-lambda-ap}}`
+ AWS Lambda 関数に次の ARN があること。

  `arn:aws:lambda:{{us-east-1}}:{{111122223333}}:function:{{MyObjectLambdaFunction}}`

**注記**  
アカウントから Lambda 関数を使用する場合は、ポリシーステートメントに特定の関数のバージョンを含める必要があります。次の ARN の例では、バージョンは {{1}} で示されています。  
`arn:aws:lambda:{{us-east-1}}:{{111122223333}}:function:{{MyObjectLambdaFunction}}:{{1}}`  
Lambda は、バージョン `$LATEST` への IAM ポリシーの追加をサポートしていません。Lambda 関数のバージョンの詳細については、「*AWS Lambda 開発者ガイド*」の「[Lambda 関数のバージョン](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html)」を参照してください。

**Example - アクセスコントロールを標準アクセスポイントに委任するバケットポリシー**  
次の S3 バケットポリシーの例は、バケットのアクセスコントロールをバケットの標準アクセスポイントに委任します。このポリシーでは、バケット所有者のアカウントが所有するすべてのアクセスポイントへのフルアクセスを許可しています。したがって、このバケットへのすべてのアクセスは、そのアクセスポイントにアタッチされているポリシーによってコントロールされます。ユーザーはアクセスポイントを介してのみバケットから読み取ることができます。つまり、オペレーションは、アクセスポイントを介してのみ呼び出すことができます。詳細については、「[アクセスポイントへのアクセスコントロールの委任](access-points-policies.md#access-points-delegating-control)」を参照してください。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement" : [
    {
        "Effect": "Allow",
        "Principal" : { "AWS":"{{account-ARN}}"},
        "Action" : "*",
        "Resource" : [
            "arn:aws:s3:::{{amzn-s3-demo-bucket}}", 
            "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*"
        ],
        "Condition": {
            "StringEquals" : { "s3:DataAccessPointAccount" : "{{Bucket owner's account ID}}" }
        }
    }]
}
```

**Example — Object Lambda アクセスポイントを使用するために必要なアクセス許可をユーザーに付与する IAM ポリシー**  
次の IAM ポリシーは、Lambda 関数、標準アクセスポイント、および Object Lambda アクセスポイントに対するアクセス許可をユーザーに付与します。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowLambdaInvocation",
      "Action": [
        "lambda:InvokeFunction"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:lambda:{{us-east-1}}:{{111122223333}}:function:{{MyObjectLambdaFunction}}:{{1}}",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:CalledVia": [
            "s3-object-lambda.amazonaws.com"
          ]
        }
      }
    },
    {
      "Sid": "AllowStandardAccessPointAccess",
      "Action": [
        "s3:Get*",
        "s3:List*"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:{{us-east-1}}:{{111122223333}}:accesspoint/{{my-access-point}}/*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:CalledVia": [
            "s3-object-lambda.amazonaws.com"
          ]
        }
      }
    },
    {
      "Sid": "AllowObjectLambdaAccess",
      "Action": [
        "s3-object-lambda:Get*",
        "s3-object-lambda:List*"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3-object-lambda:{{us-east-1}}:{{111122223333}}:accesspoint/{{my-object-lambda-ap}}"
    }
  ]
}
```

## Lambda 実行ロールの許可を有効化する
<a name="olap-execution-role"></a>

Object Lambda アクセスポイントに `GET` リクエストが行われた場合、Lambda 関数には、S3 Object Lambda アクセスポイントにデータを送信する許可が必要です。このアクセス許可は、Lambda 関数の実行ロールで `s3-object-lambda:WriteGetObjectResponse` 許可を有効にすることで提供されます。新しい実行ロールを使作成することも、既存のロールを更新することもできます。

**注記**  
関数に `s3-object-lambda:WriteGetObjectResponse` 許可が必要なのは、`GET` リクエストを行う場合のみです。

**IAM コンソールで実行ロールを作成するには**

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. 左のナビゲーションペインで、**[Roles (ロール)]** を選択してください。

1. [**ロールの作成**] を選択してください。

1. [**一般的なユースケース**] で、[**Lambda**] を選択します。

1. [**次へ**] を選択します。

1. **[Add permissions]** (許可の追加) ページで、AWS マネージドポリシー [https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AmazonS3ObjectLambdaExecutionRolePolicy$serviceLevelSummary](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AmazonS3ObjectLambdaExecutionRolePolicy$serviceLevelSummary) を検索し、ポリシー名の横にあるチェックボックスをオンにします。

   このポリシーには `s3-object-lambda:WriteGetObjectResponse` アクションを含める必要があります。

1. [**次へ**] を選択します。

1. **[Name, review, and create]** (名前、確認、作成) ページで、**[Role name]** (ロール名) に **s3-object-lambda-role** と入力します。

1. (オプション) このロールの説明とタグを追加します。

1. [**ロールの作成**] を選択してください。

1. 新しく作成した **s3-object-lambda-role** を Lambda 関数の実行ロールとして適用します。これは、Lambda コンソールで Lambda 関数の作成中または作成後に実行できます。

実行ロールの詳細については、「*AWS Lambda デベロッパーガイド*」の「[Lambda 実行ロール](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html)」を参照してください。

## Object Lambda アクセスポイントでのコンテキストキーの使用
<a name="olap-keys"></a>

S3 Object Lambda は、リクエストの接続や署名に関連する `s3-object-lambda:TlsVersion` や `s3-object-lambda:AuthType` などのコンテキストキーを評価します。`s3:prefix` など、他のすべてのコンテキストキーは、Amazon S3 によって評価されます。